Showing preview only (9,313K chars total). Download the full file or copy to clipboard to get everything.
Repository: NosCoreIO/NosCore
Branch: master
Commit: 20e599074479
Files: 976
Total size: 8.7 MB
Directory structure:
gitextract_crxs70bx/
├── .coderabbit.yaml
├── .editorconfig
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── dependabot.yml
│ └── workflows/
│ └── dotnet.yml
├── .gitignore
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Packages.props
├── LICENSE
├── NosCore.sln
├── NosCore.sln.DotSettings
├── NosCore.sln.startup.json
├── NuGet.config
├── README.md
├── build/
│ └── .gitkeep
├── build-exe.cmd
├── build.cmd
├── codecov.yml
├── configuration/
│ ├── api.yml
│ ├── database.yml
│ ├── logger.yml
│ ├── login.yml
│ ├── master.yml
│ ├── parser.yml
│ └── world.yml
├── deploy/
│ ├── Dockerfile-login
│ ├── Dockerfile-master
│ └── Dockerfile-world
├── docker-compose.yml
├── documentation/
│ ├── PostmanCollection/
│ │ └── NosCore.postman_collection.json
│ └── dat/
│ ├── Card.dat.md
│ ├── Item.dat.md
│ ├── Skill.dat.md
│ ├── monster.dat.md
│ └── quest.dat.md
├── lgtm.yml
├── scripts/
│ ├── Docker - All.cmd
│ ├── Docker - LoginServer.cmd
│ ├── Docker - MasterServer.cmd
│ ├── Docker - Postgres.cmd
│ ├── Docker - ReverseProxy.cmd
│ ├── Docker - Shutdown.cmd
│ ├── Docker - WorldServer.cmd
│ ├── LoginServer.cmd
│ ├── MasterServer.cmd
│ ├── Parser.cmd
│ ├── WorldServer.cmd
│ └── docker-publish.sh
├── src/
│ ├── NosCore.Core/
│ │ ├── AuthorizeRoleAttribute.cs
│ │ ├── Channel.cs
│ │ ├── ChannelInfo.cs
│ │ ├── Concurrency/
│ │ │ └── AsyncLock.cs
│ │ ├── Configuration/
│ │ │ ├── LoginConfiguration.cs
│ │ │ └── WorldConfiguration.cs
│ │ ├── ConfigureJwtBearerOptions.cs
│ │ ├── ConnectionInfo.cs
│ │ ├── Encryption/
│ │ │ ├── BcryptEncryption.cs
│ │ │ ├── Pbkdf2Hasher.cs
│ │ │ └── Sha512Hasher.cs
│ │ ├── Extensions/
│ │ │ └── TypeExtension.cs
│ │ ├── I18N/
│ │ │ ├── GameLanguageLocalizer.cs
│ │ │ └── IGameLanguageLocalizer.cs
│ │ ├── NosCore.Core.csproj
│ │ ├── Observability/
│ │ │ └── NosCoreTelemetry.cs
│ │ ├── Services/
│ │ │ └── IdService/
│ │ │ ├── IIdService.cs
│ │ │ └── IdService.cs
│ │ └── SessionFactory.cs
│ ├── NosCore.Data/
│ │ ├── CommandPackets/
│ │ │ ├── ChangeChannelPacket.cs
│ │ │ ├── ChangeClassPacket.cs
│ │ │ ├── ChangeGenderPacket.cs
│ │ │ ├── ClearInventoryPacket.cs
│ │ │ ├── CommandPacketHeaderAttribute.cs
│ │ │ ├── CreateItemPacket.cs
│ │ │ ├── EffectCommandPacket.cs
│ │ │ ├── EntryPointPacket.cs
│ │ │ ├── FlCommandPacket.cs
│ │ │ ├── GiftPacket.cs
│ │ │ ├── HelpPacket.cs
│ │ │ ├── ICommandPacket.cs
│ │ │ ├── InvisibleCommandPacket.cs
│ │ │ ├── KickPacket.cs
│ │ │ ├── KillPacket.cs
│ │ │ ├── PositionPacket.cs
│ │ │ ├── SetBankGoldPacket.cs
│ │ │ ├── SetGoldCommandPacket.cs
│ │ │ ├── SetHairColorPacket.cs
│ │ │ ├── SetHairStylePacket.cs
│ │ │ ├── SetHeroLevelCommandPacket.cs
│ │ │ ├── SetHeroXpPacket.cs
│ │ │ ├── SetJobLevelCommandPacket.cs
│ │ │ ├── SetJobLevelXpPacket.cs
│ │ │ ├── SetLevelCommandPacket.cs
│ │ │ ├── SetMaintenancePacket.cs
│ │ │ ├── SetReputationPacket.cs
│ │ │ ├── SetSpAdditionPointPacket.cs
│ │ │ ├── SetSpPointPacket.cs
│ │ │ ├── ShoutHerePacket.cs
│ │ │ ├── ShoutPacket.cs
│ │ │ ├── SizePacket.cs
│ │ │ ├── SpeedPacket.cs
│ │ │ └── TeleportPacket.cs
│ │ ├── DataAttributes/
│ │ │ └── StaticMetaDataAttribute.cs
│ │ ├── Dto/
│ │ │ ├── I18NFromAttribute.cs
│ │ │ ├── I18NString.cs
│ │ │ ├── IDTO.cs
│ │ │ ├── II18NDto.cs
│ │ │ ├── IItemInstanceDto.cs
│ │ │ ├── IStaticDto.cs
│ │ │ └── StaticDtoExtension.cs
│ │ ├── Enumerations/
│ │ │ ├── Audit/
│ │ │ │ └── AuditLogType.cs
│ │ │ ├── Battle/
│ │ │ │ └── TargetHitType.cs
│ │ │ ├── Bazaar/
│ │ │ │ ├── BazaarEquipmentType.cs
│ │ │ │ ├── BazaarJeweleryType.cs
│ │ │ │ ├── BazaarMainType.cs
│ │ │ │ └── BazaarUsableType.cs
│ │ │ ├── Buff/
│ │ │ │ ├── AdditionalTypes.cs
│ │ │ │ ├── BCardType.cs
│ │ │ │ ├── BuffType.cs
│ │ │ │ ├── MedalType.cs
│ │ │ │ ├── ShellOptionType.cs
│ │ │ │ └── StaticBonusType.cs
│ │ │ ├── Character/
│ │ │ │ ├── CharacterOption.cs
│ │ │ │ ├── CharacterState.cs
│ │ │ │ ├── FactionType.cs
│ │ │ │ └── MateType.cs
│ │ │ ├── Event/
│ │ │ │ ├── EventActionType.cs
│ │ │ │ └── EventType.cs
│ │ │ ├── Family/
│ │ │ │ ├── FamilyAuthority.cs
│ │ │ │ ├── FamilyLogType.cs
│ │ │ │ └── FamilyMemberRank.cs
│ │ │ ├── Group/
│ │ │ │ ├── GroupSharingType.cs
│ │ │ │ └── GroupType.cs
│ │ │ ├── HashingType.cs
│ │ │ ├── I18N/
│ │ │ │ └── LanguageKey.cs
│ │ │ ├── Interaction/
│ │ │ │ ├── Act4RaidType.cs
│ │ │ │ ├── ArenaTeamType.cs
│ │ │ │ ├── ChatType.cs
│ │ │ │ ├── GeneralLogType.cs
│ │ │ │ ├── InRespawnType.cs
│ │ │ │ ├── PenaltyType.cs
│ │ │ │ ├── ReceiverType.cs
│ │ │ │ ├── RespawnType.cs
│ │ │ │ ├── ScriptedInstanceType.cs
│ │ │ │ ├── TalentArenaOptionType.cs
│ │ │ │ └── TeleporterType.cs
│ │ │ ├── Items/
│ │ │ │ ├── CellonType.cs
│ │ │ │ ├── ItemEffectType.cs
│ │ │ │ ├── ItemType.cs
│ │ │ │ ├── JewelOptionType.cs
│ │ │ │ ├── RarifyMode.cs
│ │ │ │ ├── RarifyProtection.cs
│ │ │ │ ├── UpgradeMode.cs
│ │ │ │ └── UpgradeProtection.cs
│ │ │ ├── Map/
│ │ │ │ ├── MapInstanceEventType.cs
│ │ │ │ ├── MapInstanceType.cs
│ │ │ │ ├── MapTypeType.cs
│ │ │ │ └── MonsterType.cs
│ │ │ ├── Miniland/
│ │ │ │ └── WarehouseType.cs
│ │ │ ├── NoscorePocketType.cs
│ │ │ ├── Quest/
│ │ │ │ └── QuestRewardType.cs
│ │ │ ├── SaveResult.cs
│ │ │ └── UpdateStatActionType.cs
│ │ ├── GameObjectMapper.cs
│ │ ├── NosCore.Data.csproj
│ │ ├── Resource/
│ │ │ ├── LocalizedResources.Designer.cs
│ │ │ ├── LocalizedResources.cs.resx
│ │ │ ├── LocalizedResources.de.resx
│ │ │ ├── LocalizedResources.es.resx
│ │ │ ├── LocalizedResources.fr.resx
│ │ │ ├── LocalizedResources.it.resx
│ │ │ ├── LocalizedResources.pl.resx
│ │ │ ├── LocalizedResources.resx
│ │ │ ├── LocalizedResources.ru.resx
│ │ │ └── LocalizedResources.tr.resx
│ │ └── WebApi/
│ │ ├── AuthIntent.cs
│ │ ├── BazaarLink.cs
│ │ ├── BazaarRequest.cs
│ │ ├── BlacklistRequest.cs
│ │ ├── Character.cs
│ │ ├── CharacterRelationStatus.cs
│ │ ├── FriendShipRequest.cs
│ │ ├── MailRequest.cs
│ │ ├── Subscriber.cs
│ │ ├── WareHouseDepositRequest.cs
│ │ └── WarehouseLink.cs
│ ├── NosCore.Database/
│ │ ├── DesignTimeDbContextFactory.cs
│ │ ├── Entities/
│ │ │ ├── Account.cs
│ │ │ ├── Act.cs
│ │ │ ├── ActPart.cs
│ │ │ ├── AuditLog.cs
│ │ │ ├── BCard.cs
│ │ │ ├── Base/
│ │ │ │ ├── I18NStringAttribute.cs
│ │ │ │ ├── IEntity.cs
│ │ │ │ ├── IStaticEntity.cs
│ │ │ │ └── SynchronizableBaseEntity.cs
│ │ │ ├── BazaarItem.cs
│ │ │ ├── BoxInstance.cs
│ │ │ ├── Card.cs
│ │ │ ├── Character.cs
│ │ │ ├── CharacterActPart.cs
│ │ │ ├── CharacterQuest.cs
│ │ │ ├── CharacterQuestObjective.cs
│ │ │ ├── CharacterRelation.cs
│ │ │ ├── Characterskill.cs
│ │ │ ├── Combo.cs
│ │ │ ├── Drop.cs
│ │ │ ├── EquipmentOption.cs
│ │ │ ├── Family.cs
│ │ │ ├── FamilyCharacter.cs
│ │ │ ├── FamilyLog.cs
│ │ │ ├── I18NActDesc.cs
│ │ │ ├── I18NBCard.cs
│ │ │ ├── I18NCard.cs
│ │ │ ├── I18NItem.cs
│ │ │ ├── I18NMapIdData.cs
│ │ │ ├── I18NMapPointData.cs
│ │ │ ├── I18NNpcMonster.cs
│ │ │ ├── I18NNpcMonsterTalk.cs
│ │ │ ├── I18NQuest.cs
│ │ │ ├── I18NSkill.cs
│ │ │ ├── InventoryItemInstance.cs
│ │ │ ├── Item.cs
│ │ │ ├── ItemInstance.cs
│ │ │ ├── Mail.cs
│ │ │ ├── Map.cs
│ │ │ ├── MapMonster.cs
│ │ │ ├── MapNpc.cs
│ │ │ ├── MapType.cs
│ │ │ ├── MapTypeMap.cs
│ │ │ ├── Mate.cs
│ │ │ ├── Miniland.cs
│ │ │ ├── MinilandObject.cs
│ │ │ ├── NpcMonster.cs
│ │ │ ├── NpcMonsterskill.cs
│ │ │ ├── NpcTalk.cs
│ │ │ ├── PenaltyLog.cs
│ │ │ ├── Portal.cs
│ │ │ ├── Quest.cs
│ │ │ ├── QuestObjective.cs
│ │ │ ├── QuestQuestReward.cs
│ │ │ ├── QuestReward.cs
│ │ │ ├── QuicklistEntry.cs
│ │ │ ├── Recipe.cs
│ │ │ ├── RecipeItem.cs
│ │ │ ├── Respawn.cs
│ │ │ ├── RespawnMapType.cs
│ │ │ ├── RollGeneratedItem.cs
│ │ │ ├── Script.cs
│ │ │ ├── ScriptedInstance.cs
│ │ │ ├── Shop.cs
│ │ │ ├── ShopItem.cs
│ │ │ ├── Shopskill.cs
│ │ │ ├── Skill.cs
│ │ │ ├── SpecialistInstance.cs
│ │ │ ├── StaticBonus.cs
│ │ │ ├── StaticBuff.cs
│ │ │ ├── Teleporter.cs
│ │ │ ├── Title.cs
│ │ │ ├── UsableInstance.cs
│ │ │ ├── Warehouse.cs
│ │ │ ├── WarehouseItem.cs
│ │ │ └── WearableInstance.cs
│ │ ├── Hosting/
│ │ │ └── PersistenceModule.cs
│ │ ├── Migrations/
│ │ │ ├── 20220103074410_FirstMigration.Designer.cs
│ │ │ ├── 20220103074410_FirstMigration.cs
│ │ │ ├── 20231125092440_BumpToEf8.Designer.cs
│ │ │ ├── 20231125092440_BumpToEf8.cs
│ │ │ ├── 20260420121955_AddCharacterQuestObjective.Designer.cs
│ │ │ ├── 20260420121955_AddCharacterQuestObjective.cs
│ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.Designer.cs
│ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.cs
│ │ │ ├── 20260421034800_ParseMonsterDatExtras.Designer.cs
│ │ │ ├── 20260421034800_ParseMonsterDatExtras.cs
│ │ │ ├── 20260421054001_AddBCardSlot.Designer.cs
│ │ │ ├── 20260421054001_AddBCardSlot.cs
│ │ │ ├── 20260421070126_AddMountAndRaidPockets.Designer.cs
│ │ │ ├── 20260421070126_AddMountAndRaidPockets.cs
│ │ │ ├── 20260421105756_DropMapMonsterIsMoving.Designer.cs
│ │ │ ├── 20260421105756_DropMapMonsterIsMoving.cs
│ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.Designer.cs
│ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.cs
│ │ │ ├── 20260424144528_AddMateCaptureItemEffect.Designer.cs
│ │ │ ├── 20260424144528_AddMateCaptureItemEffect.cs
│ │ │ └── NosCoreContextModelSnapshot.cs
│ │ ├── NosCore.Database.csproj
│ │ └── NosCoreContext.cs
│ ├── NosCore.GameObject/
│ │ ├── Ecs/
│ │ │ ├── Attributes/
│ │ │ │ └── ComponentBundleAttribute.cs
│ │ │ ├── Components/
│ │ │ │ ├── AggroComponent.cs
│ │ │ │ ├── AppearanceComponent.cs
│ │ │ │ ├── BuffStateComponent.cs
│ │ │ │ ├── CombatComponent.cs
│ │ │ │ ├── EffectComponent.cs
│ │ │ │ ├── EntityIdentityComponent.cs
│ │ │ │ ├── ExperienceComponent.cs
│ │ │ │ ├── GoldComponent.cs
│ │ │ │ ├── HealthComponent.cs
│ │ │ │ ├── ManaComponent.cs
│ │ │ │ ├── MapItemDataComponent.cs
│ │ │ │ ├── NameComponent.cs
│ │ │ │ ├── NpcDataComponent.cs
│ │ │ │ ├── NpcMovementComponent.cs
│ │ │ │ ├── NpcStateComponent.cs
│ │ │ │ ├── PlayerComponent.cs
│ │ │ │ ├── PlayerContextComponent.cs
│ │ │ │ ├── PlayerFlagsComponent.cs
│ │ │ │ ├── PlayerInventoryComponent.cs
│ │ │ │ ├── PlayerNetworkComponent.cs
│ │ │ │ ├── PlayerRequestsComponent.cs
│ │ │ │ ├── PlayerSocialComponent.cs
│ │ │ │ ├── PlayerStateComponent.cs
│ │ │ │ ├── PositionComponent.cs
│ │ │ │ ├── ReputationComponent.cs
│ │ │ │ ├── SkillCooldownComponent.cs
│ │ │ │ ├── SpComponent.cs
│ │ │ │ ├── SpawnComponent.cs
│ │ │ │ ├── SpeedComponent.cs
│ │ │ │ ├── TimingComponent.cs
│ │ │ │ └── VisualComponent.cs
│ │ │ ├── DignityLevels.cs
│ │ │ ├── Extensions/
│ │ │ │ ├── AliveEntityExtension.cs
│ │ │ │ ├── CharacterEntityExtension.cs
│ │ │ │ ├── GroupExtension.cs
│ │ │ │ ├── ItemInstanceExtension.cs
│ │ │ │ ├── MapItemBundleExtensions.cs
│ │ │ │ ├── MonsterBundleExtensions.cs
│ │ │ │ ├── NonPlayableEntityExtension.cs
│ │ │ │ ├── NpcBundleExtensions.cs
│ │ │ │ ├── NpcInfoExtensions.cs
│ │ │ │ ├── PlayerBundleExtensions.cs
│ │ │ │ └── VisualEntityExtension.cs
│ │ │ ├── Interfaces/
│ │ │ │ ├── IAliveEntity.cs
│ │ │ │ ├── ICharacterEntity.cs
│ │ │ │ ├── INamedEntity.cs
│ │ │ │ ├── INonPlayableEntity.cs
│ │ │ │ └── IVisualEntity.cs
│ │ │ ├── MapItemComponentBundle.cs
│ │ │ ├── MapWorld.cs
│ │ │ ├── MonsterComponentBundle.cs
│ │ │ ├── NpcComponentBundle.cs
│ │ │ ├── PlayerComponentBundle.cs
│ │ │ ├── ReputationLevels.cs
│ │ │ └── Systems/
│ │ │ ├── MovementSystem.cs
│ │ │ └── VisibilitySystem.cs
│ │ ├── Hosting/
│ │ │ └── Modules/
│ │ │ └── NetworkingModule.cs
│ │ ├── Infastructure/
│ │ │ ├── IPacketHandler.cs
│ │ │ └── ISingletonService.cs
│ │ ├── InterChannelCommunication/
│ │ │ ├── HubConnectionFactory.cs
│ │ │ ├── Hubs/
│ │ │ │ ├── AuthHub/
│ │ │ │ │ ├── AuthHub.cs
│ │ │ │ │ ├── AuthHubClient.cs
│ │ │ │ │ └── IAuthHub.cs
│ │ │ │ ├── BaseHubClient.cs
│ │ │ │ ├── BazaarHub/
│ │ │ │ │ ├── BazaarHub.cs
│ │ │ │ │ ├── BazaarHubClient.cs
│ │ │ │ │ └── IBazaarHub.cs
│ │ │ │ ├── BlacklistHub/
│ │ │ │ │ ├── BlacklistHub.cs
│ │ │ │ │ ├── BlacklistHubClient.cs
│ │ │ │ │ └── IBlacklistHub.cs
│ │ │ │ ├── ChannelHub/
│ │ │ │ │ ├── ChannelHub.cs
│ │ │ │ │ ├── ChannelHubClient.cs
│ │ │ │ │ └── IChannelHub.cs
│ │ │ │ ├── FriendHub/
│ │ │ │ │ ├── FriendHub.cs
│ │ │ │ │ ├── FriendHubClient.cs
│ │ │ │ │ └── IFriendHub.cs
│ │ │ │ ├── MailHub/
│ │ │ │ │ ├── IMailHub.cs
│ │ │ │ │ ├── MailHub.cs
│ │ │ │ │ └── MailHubClient.cs
│ │ │ │ ├── PubSub/
│ │ │ │ │ ├── IPubSubHub.cs
│ │ │ │ │ ├── PubSubHub.cs
│ │ │ │ │ └── PubSubHubClient.cs
│ │ │ │ └── WarehouseHub/
│ │ │ │ ├── IWarehouseHub.cs
│ │ │ │ ├── WarehouseHub.cs
│ │ │ │ └── WarehouseHubClient.cs
│ │ │ ├── MasterClientList.cs
│ │ │ ├── Messages/
│ │ │ │ ├── DeleteMailData.cs
│ │ │ │ ├── DisconnectData.cs
│ │ │ │ ├── IMessage.cs
│ │ │ │ ├── MailData.cs
│ │ │ │ ├── PostedPacket.cs
│ │ │ │ └── StatData.cs
│ │ │ └── PolymorphicConverter.cs
│ │ ├── Map/
│ │ │ ├── Map.cs
│ │ │ └── Portal.cs
│ │ ├── Messaging/
│ │ │ ├── Events/
│ │ │ │ ├── CharacterMovedEvent.cs
│ │ │ │ ├── EntityCapturedEvent.cs
│ │ │ │ ├── EntityDamagedEvent.cs
│ │ │ │ ├── EntityDiedEvent.cs
│ │ │ │ ├── GuriPacketReceivedEvent.cs
│ │ │ │ ├── ItemUsedEvent.cs
│ │ │ │ ├── MapInstanceEnteredEvent.cs
│ │ │ │ ├── MapItemPickedUpEvent.cs
│ │ │ │ └── QuestCompletedEvent.cs
│ │ │ ├── Handlers/
│ │ │ │ ├── Battle/
│ │ │ │ │ ├── DeathBCardHandler.cs
│ │ │ │ │ ├── MonsterAggroHandler.cs
│ │ │ │ │ ├── MonsterRespawnHandler.cs
│ │ │ │ │ ├── PlayerRevivalHandler.cs
│ │ │ │ │ └── RewardDistributionHandler.cs
│ │ │ │ ├── Guri/
│ │ │ │ │ ├── EmoticonHandler.cs
│ │ │ │ │ ├── MfaHandler.cs
│ │ │ │ │ ├── SpeakerHandler.cs
│ │ │ │ │ └── TitleHandler.cs
│ │ │ │ ├── Map/
│ │ │ │ │ └── MinilandEntranceHandler.cs
│ │ │ │ ├── MapItem/
│ │ │ │ │ ├── DropHandler.cs
│ │ │ │ │ ├── GoldDropHandler.cs
│ │ │ │ │ └── SpChargerHandler.cs
│ │ │ │ ├── Nrun/
│ │ │ │ │ ├── BazaarHandler.cs
│ │ │ │ │ ├── CellonItemHandler.cs
│ │ │ │ │ ├── ChangeClassHandler.cs
│ │ │ │ │ ├── FinishedTsDialogHandler.cs
│ │ │ │ │ ├── INrunEventHandler.cs
│ │ │ │ │ ├── OpenProductionHandler.cs
│ │ │ │ │ ├── OpenShopHandler.cs
│ │ │ │ │ ├── SetPlaceOfRevivalHandler.cs
│ │ │ │ │ ├── TeleporterHandler.cs
│ │ │ │ │ └── UpgradeItemHandler.cs
│ │ │ │ ├── Quest/
│ │ │ │ │ ├── OnCharacterMovedHandler.cs
│ │ │ │ │ ├── OnEntityCapturedHandler.cs
│ │ │ │ │ ├── OnEntityDiedHandler.cs
│ │ │ │ │ └── OnQuestCompletedHandler.cs
│ │ │ │ └── UseItem/
│ │ │ │ ├── BackPackHandler.cs
│ │ │ │ ├── BazaarMedalsHandler.cs
│ │ │ │ ├── BoxEffectHandler.cs
│ │ │ │ ├── ChangeGenderHandler.cs
│ │ │ │ ├── HairDieHandler.cs
│ │ │ │ ├── MinilandBellHandler.cs
│ │ │ │ ├── PetBasketHandler.cs
│ │ │ │ ├── SealedTarotCardHandler.cs
│ │ │ │ ├── SpRechargerHandler.cs
│ │ │ │ ├── SpeakerHandler.cs
│ │ │ │ ├── TitleHandler.cs
│ │ │ │ ├── VehicleHandler.cs
│ │ │ │ └── WearHandler.cs
│ │ │ ├── RecurringMessagePublisher.cs
│ │ │ ├── ScheduledJobs/
│ │ │ │ ├── RemoveTimeoutStaticBonusesHandler.cs
│ │ │ │ ├── RemoveTimeoutStaticBonusesMessage.cs
│ │ │ │ ├── SaveAllSessionsHandler.cs
│ │ │ │ └── SaveAllSessionsMessage.cs
│ │ │ ├── WolverineDependencyRegistrar.cs
│ │ │ └── WolverineHostExtensions.cs
│ │ ├── Networking/
│ │ │ ├── Broadcaster.cs
│ │ │ └── ClientSession/
│ │ │ ├── ClientSession.cs
│ │ │ ├── DisconnectHandlers/
│ │ │ │ ├── ExchangeDisconnectHandler.cs
│ │ │ │ ├── FriendNotificationDisconnectHandler.cs
│ │ │ │ ├── MapDisconnectHandler.cs
│ │ │ │ ├── MinilandDisconnectHandler.cs
│ │ │ │ └── SaveDisconnectHandler.cs
│ │ │ ├── IPacketHandlingStrategy.cs
│ │ │ ├── ISessionDisconnectHandler.cs
│ │ │ ├── LoginPacketHandlingStrategy.cs
│ │ │ ├── NpcDialogRequestSubject.cs
│ │ │ ├── RequestData.cs
│ │ │ └── WorldPacketHandlingStrategy.cs
│ │ ├── NosCore.GameObject.csproj
│ │ └── Services/
│ │ ├── AuthService/
│ │ │ ├── AuthCodeService.cs
│ │ │ └── IAuthCodeService.cs
│ │ ├── BattleService/
│ │ │ ├── AggroService.cs
│ │ │ ├── BattleService.cs
│ │ │ ├── BattleStatsProvider.cs
│ │ │ ├── BuffService.cs
│ │ │ ├── CaptureService.cs
│ │ │ ├── CharacterSkill.cs
│ │ │ ├── DamageCalculator.cs
│ │ │ ├── DamageResult.cs
│ │ │ ├── HitArguments.cs
│ │ │ ├── HitQueue.cs
│ │ │ ├── IAggroService.cs
│ │ │ ├── IBattleService.cs
│ │ │ ├── IBattleStatsProvider.cs
│ │ │ ├── IBuffService.cs
│ │ │ ├── ICaptureService.cs
│ │ │ ├── IDamageCalculator.cs
│ │ │ ├── IHitQueue.cs
│ │ │ ├── IMonsterAi.cs
│ │ │ ├── INpcCombatCatalog.cs
│ │ │ ├── IRandomProvider.cs
│ │ │ ├── IRegenerationService.cs
│ │ │ ├── IRespawnService.cs
│ │ │ ├── IRewardService.cs
│ │ │ ├── ISkillResolver.cs
│ │ │ ├── ITargetResolver.cs
│ │ │ ├── Model/
│ │ │ │ ├── BuffInstance.cs
│ │ │ │ ├── CombatStats.cs
│ │ │ │ ├── HitOutcome.cs
│ │ │ │ ├── HitRequest.cs
│ │ │ │ └── SkillInfo.cs
│ │ │ ├── MonsterAi.cs
│ │ │ ├── NpcCombatCatalog.cs
│ │ │ ├── RegenerationService.cs
│ │ │ ├── RespawnService.cs
│ │ │ ├── RewardService.cs
│ │ │ ├── SkillResolver.cs
│ │ │ ├── SkillResult.cs
│ │ │ └── TargetResolver.cs
│ │ ├── BazaarService/
│ │ │ ├── BazaarRegistry.cs
│ │ │ ├── BazaarService.cs
│ │ │ ├── IBazaarRegistry.cs
│ │ │ └── IBazaarService.cs
│ │ ├── BlackListService/
│ │ │ ├── BlacklistService.cs
│ │ │ └── IBlacklistService.cs
│ │ ├── BroadcastService/
│ │ │ ├── IPacketBroadcaster.cs
│ │ │ ├── IPacketSender.cs
│ │ │ ├── IPacketTarget.cs
│ │ │ ├── ISessionRegistry.cs
│ │ │ ├── PacketBroadcaster.cs
│ │ │ └── SessionRegistry.cs
│ │ ├── ChannelCommunicationService/
│ │ │ ├── ChannelCommunicationRunner.cs
│ │ │ └── Handlers/
│ │ │ ├── DeleteMailDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── DisconnectDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── IChannelCommunicationMessageHandler.cs
│ │ │ ├── MailDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── PostedPacketMessageChannelCommunicationMessageHandler.cs
│ │ │ └── StatDataMessageChannelCommunicationMessageHandler.cs
│ │ ├── ChannelService/
│ │ │ ├── ChannelService.cs
│ │ │ └── IChannelService.cs
│ │ ├── CharacterService/
│ │ │ ├── CharacterInitializationService.cs
│ │ │ └── ICharacterInitializationService.cs
│ │ ├── ExchangeService/
│ │ │ ├── ExchangeData.cs
│ │ │ ├── ExchangeRequestRegistry.cs
│ │ │ ├── ExchangeService.cs
│ │ │ ├── IExchangeRequestRegistry.cs
│ │ │ └── IExchangeService.cs
│ │ ├── ExperienceService/
│ │ │ ├── ExperienceProgressionService.cs
│ │ │ └── IExperienceProgressionService.cs
│ │ ├── FriendService/
│ │ │ ├── CharacterRelation.cs
│ │ │ ├── FriendRequestRegistry.cs
│ │ │ ├── FriendService.cs
│ │ │ ├── IFriendRequestRegistry.cs
│ │ │ └── IFriendService.cs
│ │ ├── GroupService/
│ │ │ ├── Group.cs
│ │ │ ├── GroupRegistry.cs
│ │ │ └── IGroupRegistry.cs
│ │ ├── InventoryService/
│ │ │ ├── IInventoryService.cs
│ │ │ ├── InventoryItemInstance.cs
│ │ │ └── InventoryService.cs
│ │ ├── ItemGenerationService/
│ │ │ ├── IItemGenerationService.cs
│ │ │ ├── Item/
│ │ │ │ ├── BoxInstance.cs
│ │ │ │ ├── IItemInstance.cs
│ │ │ │ ├── Item.cs
│ │ │ │ ├── ItemInstance.cs
│ │ │ │ ├── SpecialistInstance.cs
│ │ │ │ ├── UsableInstance.cs
│ │ │ │ └── WearableInstance.cs
│ │ │ └── ItemGenerationService.cs
│ │ ├── ItemStorage/
│ │ │ ├── ISlotBasedStorage.cs
│ │ │ ├── ISlotItem.cs
│ │ │ └── SlotStorageHelper.cs
│ │ ├── LoginService/
│ │ │ ├── ILoginService.cs
│ │ │ └── LoginService.cs
│ │ ├── MailService/
│ │ │ ├── Gift.cs
│ │ │ ├── GiftHelper.cs
│ │ │ ├── IMailService.cs
│ │ │ ├── IParcelRegistry.cs
│ │ │ ├── MailService.cs
│ │ │ └── ParcelRegistry.cs
│ │ ├── MapChangeService/
│ │ │ ├── IMapChangeService.cs
│ │ │ └── MapChangeService.cs
│ │ ├── MapInstanceAccessService/
│ │ │ ├── IMapInstanceAccessService.cs
│ │ │ └── MapInstanceAccessService.cs
│ │ ├── MapInstanceGenerationService/
│ │ │ ├── IMapInstanceGenerationService.cs
│ │ │ ├── IMapInstanceRegistry.cs
│ │ │ ├── MapInstance.cs
│ │ │ ├── MapInstanceGenerationService.cs
│ │ │ └── MapInstanceRegistry.cs
│ │ ├── MapItemGenerationService/
│ │ │ ├── IMapItemGenerationService.cs
│ │ │ └── MapItemGenerationService.cs
│ │ ├── MinilandService/
│ │ │ ├── IMinilandRegistry.cs
│ │ │ ├── IMinilandService.cs
│ │ │ ├── MapDesignObject.cs
│ │ │ ├── Miniland.cs
│ │ │ ├── MinilandHelper.cs
│ │ │ ├── MinilandRegistry.cs
│ │ │ └── MinilandService.cs
│ │ ├── PacketHandlerService/
│ │ │ ├── IPacketHandlerRegistry.cs
│ │ │ └── PacketHandlerRegistry.cs
│ │ ├── PathfindingService/
│ │ │ ├── IPathfindingService.cs
│ │ │ └── PathfindingService.cs
│ │ ├── QuestService/
│ │ │ ├── Handlers/
│ │ │ │ ├── GoToQuestHandler.cs
│ │ │ │ ├── HuntQuestHandler.cs
│ │ │ │ ├── KillQuestHandlerBase.cs
│ │ │ │ └── NumberOfKillQuestHandler.cs
│ │ │ ├── IQuestService.cs
│ │ │ ├── IQuestTypeHandler.cs
│ │ │ ├── Quest.cs
│ │ │ └── QuestService.cs
│ │ ├── SaveService/
│ │ │ ├── ISaveService.cs
│ │ │ └── SaveService.cs
│ │ ├── ShopService/
│ │ │ ├── IShopRegistry.cs
│ │ │ ├── Shop.cs
│ │ │ ├── ShopItem.cs
│ │ │ └── ShopRegistry.cs
│ │ ├── SkillService/
│ │ │ ├── ISkillService.cs
│ │ │ └── SkillService.cs
│ │ ├── SpeedCalculationService/
│ │ │ ├── ISpeedCalculationService.cs
│ │ │ └── SpeedCalculationService.cs
│ │ ├── TransformationService/
│ │ │ ├── ITransformationService.cs
│ │ │ └── TransformationService.cs
│ │ ├── UpgradeService/
│ │ │ ├── EquipmentUpgradeOperationBase.cs
│ │ │ ├── IRandomNumberSource.cs
│ │ │ ├── IUpgradeOperation.cs
│ │ │ ├── RarifyOperation.cs
│ │ │ ├── RarifyOperationBase.cs
│ │ │ ├── SumUpgradeOperation.cs
│ │ │ ├── UpgradeContext.cs
│ │ │ ├── UpgradeItemOperation.cs
│ │ │ ├── UpgradeOperation.cs
│ │ │ └── UpgradeOutcome.cs
│ │ └── WarehouseService/
│ │ ├── IWarehouseService.cs
│ │ ├── WarehouseItem.cs
│ │ └── WarehouseService.cs
│ ├── NosCore.LoginServer/
│ │ ├── LoginServer.cs
│ │ ├── LoginServerBootstrap.cs
│ │ └── NosCore.LoginServer.csproj
│ ├── NosCore.MasterServer/
│ │ ├── MasterConfiguration.cs
│ │ ├── MasterServer.cs
│ │ ├── MasterServerBootstrap.cs
│ │ └── NosCore.MasterServer.csproj
│ ├── NosCore.PacketHandlers/
│ │ ├── Battle/
│ │ │ ├── RevivalPacketHandler.cs
│ │ │ └── UseSkillPacketHandler.cs
│ │ ├── Bazaar/
│ │ │ ├── CBListPacketHandler.cs
│ │ │ ├── CBuyPacketHandler.cs
│ │ │ ├── CModPacketHandler.cs
│ │ │ ├── CRegPacketHandler.cs
│ │ │ ├── CSListPacketHandler.cs
│ │ │ ├── CScalcPacketHandler.cs
│ │ │ └── CSkillPacketHandler.cs
│ │ ├── CharacterScreen/
│ │ │ ├── CharNewJobPacketHandler.cs
│ │ │ ├── CharNewPacketHandler.cs
│ │ │ ├── CharRenPacketHandler.cs
│ │ │ ├── CharacterDeletePacketHandler.cs
│ │ │ ├── DacPacketHandler.cs
│ │ │ ├── EntryPointPacketHandler.cs
│ │ │ └── SelectPacketHandler.cs
│ │ ├── Chat/
│ │ │ ├── BtkPacketHandler.cs
│ │ │ ├── ClientSayPacketHandler.cs
│ │ │ └── WhisperPacketHandler.cs
│ │ ├── Command/
│ │ │ ├── ChangeChannelPacketHandler.cs
│ │ │ ├── ChangeClassPacketHandler.cs
│ │ │ ├── ChangeGenderPacketHandler.cs
│ │ │ ├── CreateItemPacketHandler.cs
│ │ │ ├── EffectCommandPacketHandler.cs
│ │ │ ├── GiftPacketHandler.cs
│ │ │ ├── HelpPacketHandler.cs
│ │ │ ├── InvisibleCommandPacketHandler.cs
│ │ │ ├── KickPacketHandler.cs
│ │ │ ├── KillCommandPacketHandler.cs
│ │ │ ├── PositionPacketHandler.cs
│ │ │ ├── SetBankGoldPacketHandler.cs
│ │ │ ├── SetGoldCommandPacketHandler.cs
│ │ │ ├── SetHairColorPacketHandler.cs
│ │ │ ├── SetHairStylePacketHandler.cs
│ │ │ ├── SetHeroLevelCommandPacketHandler.cs
│ │ │ ├── SetHeroXpPacketHandler.cs
│ │ │ ├── SetJobLevelCommandPacketHandler.cs
│ │ │ ├── SetJobLevelXpPacketHandler.cs
│ │ │ ├── SetLevelCommandPacketHandler.cs
│ │ │ ├── SetMaintenancePacketHandler.cs
│ │ │ ├── SetReputationPacketHandler.cs
│ │ │ ├── SetSpAdditionPointPacketHandler.cs
│ │ │ ├── SetSpPointPacketHandler.cs
│ │ │ ├── ShoutHerePacketHandler.cs
│ │ │ ├── ShoutPacketHandler.cs
│ │ │ ├── SizePacketHandler.cs
│ │ │ ├── SpeedPacketHandler.cs
│ │ │ └── TeleportPacketHandler.cs
│ │ ├── Exchange/
│ │ │ ├── ExcListPacketHandler.cs
│ │ │ └── ExchangeRequestPacketHandler.cs
│ │ ├── Friend/
│ │ │ ├── BlDelPacketHandler.cs
│ │ │ ├── BlInsPacketHandler.cs
│ │ │ ├── BlPacketHandler.cs
│ │ │ ├── FdelPacketHandler.cs
│ │ │ ├── FinsPacketHandler.cs
│ │ │ └── FlPacketHandler.cs
│ │ ├── Game/
│ │ │ ├── GameStartPacketHandler.cs
│ │ │ ├── GuriPacketHandler.cs
│ │ │ ├── NcifPacketHandler.cs
│ │ │ ├── NpinfoPacketHandler.cs
│ │ │ ├── PulsePacketHandler.cs
│ │ │ ├── QSetPacketHandler.cs
│ │ │ ├── ReqInfoPacketHandler.cs
│ │ │ ├── ScpCtsPacketHandler.cs
│ │ │ └── TitEqPacketHandler.cs
│ │ ├── Group/
│ │ │ ├── GroupTalkPacketHandler.cs
│ │ │ ├── PjoinPacketHandler.cs
│ │ │ └── PleavePacketHandler.cs
│ │ ├── Inventory/
│ │ │ ├── BiPacketHandler.cs
│ │ │ ├── GetPacketHandler.cs
│ │ │ ├── MvePacketHandler.cs
│ │ │ ├── MviPacketHandler.cs
│ │ │ ├── PutPacketHandler.cs
│ │ │ ├── RemovePacketHandler.cs
│ │ │ ├── SpTransformPacketHandler.cs
│ │ │ ├── UseItemPacketHandler.cs
│ │ │ └── WearPacketHandler.cs
│ │ ├── Login/
│ │ │ ├── NoS0575PacketHandler.cs
│ │ │ └── NoS0577PacketHandler.cs
│ │ ├── Miniland/
│ │ │ ├── AddobjPacketHandler.cs
│ │ │ ├── MJoinPacketHandler.cs
│ │ │ ├── MinilandObjects/
│ │ │ │ ├── MgPacketHandler.cs
│ │ │ │ └── UseobjPacketHandler.cs
│ │ │ ├── MlobjPacketHandler.cs
│ │ │ └── RmvobjPacketHandler.cs
│ │ ├── Movement/
│ │ │ ├── ClientDirPacketHandler.cs
│ │ │ ├── PreqPacketHandler.cs
│ │ │ ├── SitPacketHandler.cs
│ │ │ └── WalkPacketHandler.cs
│ │ ├── NoAction/
│ │ │ ├── BpClosePacketHandler.cs
│ │ │ ├── CClosePacketHandler.cs
│ │ │ ├── LbsPacketHandler.cs
│ │ │ ├── SnapPacketHandler.cs
│ │ │ ├── SortOpenPacketHandler.cs
│ │ │ └── ZeroPacketHandler.cs
│ │ ├── NosCore.PacketHandlers.csproj
│ │ ├── Parcel/
│ │ │ ├── PclPacketHandler.cs
│ │ │ └── PstClientPacketHandler.cs
│ │ ├── Quest/
│ │ │ ├── QTPacketHandler.cs
│ │ │ └── ScriptPacketHandler.cs
│ │ ├── Shops/
│ │ │ ├── BuyPacketHandler.cs
│ │ │ ├── MShopPacketHandler.cs
│ │ │ ├── NrunPacketHandler.cs
│ │ │ ├── RequestNpcPacketHandler.cs
│ │ │ ├── SellPacketHandler.cs
│ │ │ └── ShoppingPacketHandler.cs
│ │ ├── Upgrades/
│ │ │ └── UpgradePacketHandler.cs
│ │ └── Warehouse/
│ │ ├── DepositPacketHandler.cs
│ │ ├── FDepositPacketHandler.cs
│ │ ├── FReposPacketHandler.cs
│ │ ├── FStashEndPacketHandler.cs
│ │ ├── FWithdrawPacketHandler.cs
│ │ ├── ReposPacketHandler.cs
│ │ ├── StashEndPacketHandler.cs
│ │ └── WithdrawPacketHandler.cs
│ ├── NosCore.Parser/
│ │ ├── ImportFactory.cs
│ │ ├── NosCore.Parser.csproj
│ │ ├── Parser.cs
│ │ ├── ParserBootstrap.cs
│ │ ├── ParserCliOptions.cs
│ │ ├── ParserConfiguration.cs
│ │ └── Parsers/
│ │ ├── ActParser.cs
│ │ ├── CardParser.cs
│ │ ├── DropParser.cs
│ │ ├── Generic/
│ │ │ ├── DatDocumentationGenerator.cs
│ │ │ ├── DatFieldMetadata.cs
│ │ │ ├── FluentParserBuilder.cs
│ │ │ └── GenericParser.cs
│ │ ├── I18NParser.cs
│ │ ├── ItemParser.cs
│ │ ├── MapMonsterParser.cs
│ │ ├── MapNpcParser.cs
│ │ ├── MapParser.cs
│ │ ├── MapTypeMapParser.cs
│ │ ├── MapTypeParser.cs
│ │ ├── NpcMonsterParser.cs
│ │ ├── NpcTalkParser.cs
│ │ ├── PortalParser.cs
│ │ ├── QuestParser.cs
│ │ ├── QuestPrizeParser.cs
│ │ ├── RespawnMapTypeParser.cs
│ │ ├── ScriptParser.cs
│ │ ├── ShopItemParser.cs
│ │ ├── ShopParser.cs
│ │ └── SkillParser.cs
│ ├── NosCore.WebApi/
│ │ ├── ApiConfiguration.cs
│ │ ├── Controllers/
│ │ │ ├── AuthController.cs
│ │ │ └── NosmallController.cs
│ │ ├── NosCore.WebApi.csproj
│ │ └── WebApiBootstrap.cs
│ └── NosCore.WorldServer/
│ ├── NosCore.WorldServer.csproj
│ ├── WorldServer.cs
│ └── WorldServerBootstrap.cs
├── test/
│ ├── NosCore.Core.Tests/
│ │ ├── LogLanguageTests.cs
│ │ └── NosCore.Core.Tests.csproj
│ ├── NosCore.Database.Tests/
│ │ ├── DatabaseTests.cs
│ │ └── NosCore.Database.Tests.csproj
│ ├── NosCore.GameObject.Tests/
│ │ ├── BazaarTests.cs
│ │ ├── GroupTests.cs
│ │ ├── Messaging/
│ │ │ ├── Handlers/
│ │ │ │ ├── Battle/
│ │ │ │ │ ├── MonsterAggroHandlerTests.cs
│ │ │ │ │ ├── MonsterRespawnHandlerTests.cs
│ │ │ │ │ ├── PlayerRevivalHandlerTests.cs
│ │ │ │ │ └── RewardDistributionHandlerTests.cs
│ │ │ │ ├── Guri/
│ │ │ │ │ ├── EmoticonHandlerTests.cs
│ │ │ │ │ └── MfaHandlerTests.cs
│ │ │ │ ├── Map/
│ │ │ │ │ └── MinilandEntranceHandlerTests.cs
│ │ │ │ ├── Nrun/
│ │ │ │ │ ├── SetPlaceOfRevivalHandlerTests.cs
│ │ │ │ │ ├── TeleporterHandlerTests.cs
│ │ │ │ │ └── UpgradeItemHandlerTests.cs
│ │ │ │ └── UseItem/
│ │ │ │ ├── BackPackHandlerTests.cs
│ │ │ │ ├── BazaarMedalsHandlerTests.cs
│ │ │ │ ├── BoxEffectHandlerTests.cs
│ │ │ │ ├── ChangeGenderHandlerTests.cs
│ │ │ │ ├── HairDieHandlerTests.cs
│ │ │ │ ├── MinilandBellHandlerTests.cs
│ │ │ │ ├── PetBasketHandlerTests.cs
│ │ │ │ ├── SealedTarotCardHandlerTests.cs
│ │ │ │ ├── SpRechargerHandlerTests.cs
│ │ │ │ ├── SpeakerHandlerTests.cs
│ │ │ │ ├── TitleHandlerTests.cs
│ │ │ │ └── WearHandlerTests.cs
│ │ │ └── WolverineHandlerResolutionTests.cs
│ │ ├── NosCore.GameObject.Tests.csproj
│ │ ├── Services/
│ │ │ ├── AuthService/
│ │ │ │ └── AuthCodeServiceTests.cs
│ │ │ ├── BattleService/
│ │ │ │ ├── AggroServiceTests.cs
│ │ │ │ ├── BattleServiceTests.cs
│ │ │ │ ├── BuffServiceTests.cs
│ │ │ │ ├── DamageCalculatorTests.cs
│ │ │ │ ├── HitQueueTests.cs
│ │ │ │ ├── MonsterAiTests.cs
│ │ │ │ ├── NpcCombatCatalogTests.cs
│ │ │ │ └── SkillResolverTests.cs
│ │ │ ├── BazaarService/
│ │ │ │ └── BazaarRegistryTests.cs
│ │ │ ├── BlacklistService/
│ │ │ │ └── BlacklistServiceTests.cs
│ │ │ ├── BroadcastService/
│ │ │ │ └── SessionRegistryTests.cs
│ │ │ ├── ChannelCommunicationService/
│ │ │ │ └── Handlers/
│ │ │ │ ├── DeleteMailDataMessageHandlerTests.cs
│ │ │ │ ├── DisconnectDataMessageHandlerTests.cs
│ │ │ │ ├── MailDataMessageHandlerTests.cs
│ │ │ │ ├── PostedPacketMessageHandlerTests.cs
│ │ │ │ └── StatDataMessageHandlerTests.cs
│ │ │ ├── ChannelService/
│ │ │ │ └── ChannelServiceTests.cs
│ │ │ ├── CharacterService/
│ │ │ │ └── CharacterInitializationServiceTests.cs
│ │ │ ├── ExchangeService/
│ │ │ │ ├── ExchangeRequestRegistryTests.cs
│ │ │ │ └── ExchangeServiceTests.cs
│ │ │ ├── FriendService/
│ │ │ │ ├── FriendRequestRegistryTests.cs
│ │ │ │ └── FriendServiceTests.cs
│ │ │ ├── GroupService/
│ │ │ │ └── GroupRegistryTests.cs
│ │ │ ├── InventoryService/
│ │ │ │ └── InventoryServiceTests.cs
│ │ │ ├── LoginService/
│ │ │ │ └── LoginServiceTests.cs
│ │ │ ├── MailService/
│ │ │ │ └── MailServiceTests.cs
│ │ │ ├── MapChangeService/
│ │ │ │ └── MapChangeServiceTests.cs
│ │ │ ├── MapInstanceAccessService/
│ │ │ │ └── MapInstanceAccessServiceTests.cs
│ │ │ ├── MapInstanceGenerationService/
│ │ │ │ └── MapInstanceRegistryTests.cs
│ │ │ ├── MinilandService/
│ │ │ │ ├── MinilandRegistryTests.cs
│ │ │ │ └── MinilandServiceTests.cs
│ │ │ ├── PacketHandlerService/
│ │ │ │ └── PacketHandlerRegistryTests.cs
│ │ │ ├── PathfindingService/
│ │ │ │ └── PathfindingServiceTests.cs
│ │ │ ├── QuestService/
│ │ │ │ └── QuestServiceTests.cs
│ │ │ ├── SaveService/
│ │ │ │ └── SaveServiceTests.cs
│ │ │ ├── ShopService/
│ │ │ │ └── ShopRegistryTests.cs
│ │ │ ├── SkillService/
│ │ │ │ └── SkillServiceTests.cs
│ │ │ ├── SpeedCalculationService/
│ │ │ │ └── SpeedCalculationServiceTests.cs
│ │ │ ├── TransformationService/
│ │ │ │ └── TransformationServiceTests.cs
│ │ │ ├── UpgradeService/
│ │ │ │ ├── EquipmentUpgradeOperationTests.cs
│ │ │ │ ├── RarifyOperationTests.cs
│ │ │ │ └── SumUpgradeOperationTests.cs
│ │ │ └── WarehouseService/
│ │ │ └── WarehouseServiceTests.cs
│ │ ├── SetupAssemblyInitializer.cs
│ │ └── ShopTests.cs
│ ├── NosCore.PacketHandlers.Tests/
│ │ ├── Battle/
│ │ │ ├── RevivalPacketHandlerTests.cs
│ │ │ └── UseSkillPacketHandlerTests.cs
│ │ ├── Bazaar/
│ │ │ ├── CBListPacketHandlerTests.cs
│ │ │ ├── CBuyPacketHandlerTests.cs
│ │ │ ├── CModPacketHandlerTests.cs
│ │ │ ├── CRegPacketHandlerTests.cs
│ │ │ ├── CSListPacketHandlerTests.cs
│ │ │ ├── CScalcPacketHandlerTests.cs
│ │ │ └── CSkillPacketHandlerTests.cs
│ │ ├── CharacterScreen/
│ │ │ ├── CharNewJobPacketHandlerTests.cs
│ │ │ ├── CharNewPacketHandlerTests.cs
│ │ │ ├── CharRenPacketHandlerTests.cs
│ │ │ ├── CharacterDeletePacketHandlerTests.cs
│ │ │ ├── DacPacketHandlerTests.cs
│ │ │ ├── EntryPointPacketHandlerTests.cs
│ │ │ └── SelectPacketHandlerTests.cs
│ │ ├── Chat/
│ │ │ ├── BtkPacketHandlerTests.cs
│ │ │ ├── ClientSayPacketHandlerTests.cs
│ │ │ └── WhisperPacketHandlerTests.cs
│ │ ├── Command/
│ │ │ ├── ChangeChannelPacketHandlerTests.cs
│ │ │ ├── ChangeClassPacketHandlerTests.cs
│ │ │ ├── CreateItemPacketHandlerTests.cs
│ │ │ ├── EffectCommandPacketHandlerTests.cs
│ │ │ ├── GiftPacketHandlerTests.cs
│ │ │ ├── HelpPacketHandlerTests.cs
│ │ │ ├── InvisibleCommandPacketHandlerTests.cs
│ │ │ ├── KickPacketHandlerTests.cs
│ │ │ ├── PositionPacketHandlerTests.cs
│ │ │ ├── SetGoldCommandPacketHandlerTests.cs
│ │ │ ├── SetHeroLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetJobLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetMaintenancePacketHandlerTests.cs
│ │ │ ├── SetReputationPacketHandlerTests.cs
│ │ │ ├── ShoutPacketHandlerTests.cs
│ │ │ ├── SizePacketHandlerTests.cs
│ │ │ ├── SpeedPacketHandlerTests.cs
│ │ │ └── TeleportPacketHandlerTests.cs
│ │ ├── Exchange/
│ │ │ ├── ExcListPacketHandlerTests.cs
│ │ │ └── ExchangeRequestPacketHandlerTests.cs
│ │ ├── Friend/
│ │ │ ├── BlDelPacketHandlerTests.cs
│ │ │ ├── BlInsPacketHandlerTests.cs
│ │ │ ├── BlPacketHandlerTests.cs
│ │ │ ├── FinsPacketHandlerTests.cs
│ │ │ ├── FlPacketHandlerTests.cs
│ │ │ └── fDelPacketHandlerTests.cs
│ │ ├── Game/
│ │ │ ├── GameStartPacketHandlerTests.cs
│ │ │ ├── GuriPacketHandlerTests.cs
│ │ │ ├── NcifPacketHandlerTests.cs
│ │ │ ├── PulsePacketHandlerTests.cs
│ │ │ ├── QsetPacketHandlerTests.cs
│ │ │ ├── ReqInfoPacketHandlerTests.cs
│ │ │ └── TitEqPacketHandlerTests.cs
│ │ ├── Group/
│ │ │ ├── GroupTalkPacketHandlerTests.cs
│ │ │ ├── PJoinPacketHandlerTests.cs
│ │ │ └── PleavePacketHandlerTests.cs
│ │ ├── Inventory/
│ │ │ ├── BiPacketHandlerTests.cs
│ │ │ ├── MvePacketHandlerTests.cs
│ │ │ ├── MviPacketHandlerTests.cs
│ │ │ ├── PutPacketHandlerTests.cs
│ │ │ ├── RemovePacketHandlerTests.cs
│ │ │ └── SpTransformPacketHandlerTests.cs
│ │ ├── Login/
│ │ │ ├── NoS0575PacketHandlerTests.cs
│ │ │ └── NoS0577PacketHandlerTests.cs
│ │ ├── Miniland/
│ │ │ ├── AddobjPacketHandlerTests.cs
│ │ │ ├── MJoinPacketHandlerTests.cs
│ │ │ ├── MinilandObjects/
│ │ │ │ ├── MgPacketHandlerTests.cs
│ │ │ │ └── UseobjPacketHandlerTests.cs
│ │ │ ├── MlEditPacketHandlerTests.cs
│ │ │ └── RmvobjPacketHandlerTests.cs
│ │ ├── Movement/
│ │ │ ├── ClientDirPacketHandlerTests.cs
│ │ │ ├── PreqPacketHandlerTests.cs
│ │ │ ├── SitPacketHandlerTests.cs
│ │ │ └── WalkPacketHandlerTests.cs
│ │ ├── NosCore.PacketHandlers.Tests.csproj
│ │ ├── Parcel/
│ │ │ ├── PclPacketHandlerTests.cs
│ │ │ └── PstClientPacketHandlerTests.cs
│ │ ├── Quest/
│ │ │ ├── QtPacketHandlerTests.cs
│ │ │ └── ScriptPacketHandlerTests.cs
│ │ ├── SetupAssemblyInitializer.cs
│ │ ├── Shops/
│ │ │ ├── BuyPacketHandlerTests.cs
│ │ │ ├── MShopPacketHandlerTests.cs
│ │ │ ├── NrunPacketHandlerTests.cs
│ │ │ ├── RequestNpcPacketHandlerTests.cs
│ │ │ ├── SellPacketHandlerTests.cs
│ │ │ └── ShoppingPacketHandlerTests.cs
│ │ ├── Upgrades/
│ │ │ └── UpgradePacketHandlerTests.cs
│ │ └── Warehouse/
│ │ ├── DepositPacketHandlerTests.cs
│ │ ├── FDepositPacketHandlerTests.cs
│ │ ├── FReposPacketHandlerTests.cs
│ │ ├── FStashEndPacketHandlerTests.cs
│ │ ├── FWithdrawPacketHandlerTests.cs
│ │ ├── ReposPacketHandlerTests.cs
│ │ ├── StashEndPacketHandlerTests.cs
│ │ ├── WarehousePacketHandlerTests.cs
│ │ └── WithdrawPacketHandlerTests.cs
│ ├── NosCore.Parser.Tests/
│ │ ├── ActParserTests.cs
│ │ ├── CardParserTests.cs
│ │ ├── DatDocumentationGeneratorTests.cs
│ │ ├── DatDocumentationSnapshotTests.cs
│ │ ├── DropParserTests.cs
│ │ ├── FluentParserBuilderTests.cs
│ │ ├── GenericParserTests.cs
│ │ ├── ItemParserTests.cs
│ │ ├── MapMonsterParserTests.cs
│ │ ├── MapNpcParserTests.cs
│ │ ├── MapParserTests.cs
│ │ ├── NosCore.Parser.Tests.csproj
│ │ ├── NpcMonsterParserTests.cs
│ │ ├── PortalParserTests.cs
│ │ ├── QuestParserTests.cs
│ │ ├── QuestPrizeParserTests.cs
│ │ ├── ShopParserTests.cs
│ │ └── SkillParserTests.cs
│ ├── NosCore.Tests.Shared/
│ │ ├── AutoFixture/
│ │ │ └── NosCoreFixture.cs
│ │ ├── BDD/
│ │ │ ├── SpecBase.cs
│ │ │ └── Steps/
│ │ │ ├── InventorySteps.cs
│ │ │ ├── PacketSteps.cs
│ │ │ └── SessionSteps.cs
│ │ ├── NosCore.Tests.Shared.csproj
│ │ ├── TestHelpers.cs
│ │ └── tools/
│ │ └── coverage.opencover.xml
│ └── NosCore.WebApi.Tests/
│ ├── ApiTests/
│ │ └── AuthControllerTests.cs
│ ├── NosCore.WebApi.Tests.csproj
│ └── SetupAssemblyInitializer.cs
└── tools/
├── NosCore.DtoGenerator/
│ ├── DtoGenerator.cs
│ └── NosCore.DtoGenerator.csproj
└── NosCore.EcsGenerator/
├── ComponentBundleGenerator.cs
└── NosCore.EcsGenerator.csproj
================================================
FILE CONTENTS
================================================
================================================
FILE: .coderabbit.yaml
================================================
language: "en"
early_access: false
reviews:
profile: "chill"
request_changes_workflow: false
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: false
auto_review:
enabled: true
drafts: false
path_filters:
- "!**/*.min.js"
- "!**/bin/**"
- "!**/obj/**"
- "!**/TestResults/**"
- "!**/*.Designer.cs"
chat:
auto_reply: true
================================================
FILE: .editorconfig
================================================
[*.proto]
indent_style=tab
indent_size=tab
tab_width=4
[*.{asax,ascx,aspx,cs,cshtml,css,htm,html,js,jsx,master,razor,skin,ts,tsx,vb,xaml,xamlx,xoml}]
indent_style=space
indent_size=4
tab_width=4
[*.{appxmanifest,build,config,csproj,dbml,discomap,dtd,json,jsproj,lsproj,njsproj,nuspec,proj,props,resjson,resw,resx,StyleCop,targets,tasks,vbproj,xml,xsd}]
indent_style=space
indent_size=2
tab_width=2
[*]
# Microsoft .NET properties
csharp_new_line_before_members_in_object_initializers=false
csharp_new_line_between_query_expression_clauses=false
csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
csharp_style_var_elsewhere=true:hint
csharp_style_var_for_built_in_types=true:hint
csharp_style_var_when_type_is_apparent=true:hint
dotnet_style_predefined_type_for_locals_parameters_members=true:hint
dotnet_style_predefined_type_for_member_access=true:hint
dotnet_style_qualification_for_event=false:hint
dotnet_style_qualification_for_field=false:hint
dotnet_style_qualification_for_method=false:hint
dotnet_style_qualification_for_property=false:hint
dotnet_style_require_accessibility_modifiers=for_non_interface_members:hint
# ReSharper properties
resharper_align_multiline_binary_expressions_chain=false
resharper_braces_for_for=required
resharper_braces_for_foreach=required
resharper_braces_for_ifelse=required
resharper_braces_for_while=required
resharper_csharp_stick_comment=false
resharper_csharp_use_indent_from_vs=false
resharper_csharp_wrap_ternary_expr_style=wrap_if_long
resharper_indent_type_constraints=false
resharper_nested_ternary_style=simple_wrap
resharper_parentheses_non_obvious_operations=shift, bitwise_and, bitwise_exclusive_or, bitwise_inclusive_or, bitwise, conditional_and, conditional_or, conditional
resharper_place_accessorholder_attribute_on_same_line=False
resharper_place_expr_accessor_on_single_line=True
resharper_place_expr_method_on_single_line=True
resharper_place_expr_property_on_single_line=True
# ReSharper inspection severities
resharper_arrange_missing_parentheses_highlighting=hint
resharper_redundant_base_qualifier_highlighting=warning
resharper_virtual_member_call_in_constructor_highlighting=none
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: 0Lucifer0
patreon: NosCore
ko_fi: noscoreio
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: nuget
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 50
================================================
FILE: .github/workflows/dotnet.yml
================================================
name: .NET
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Run Unit Tests
run: |
dotnet --version
dotnet restore
dotnet build
dotnet test --no-build --filter TestCategory!=OPTIONAL-TEST
- name: Run Code Coverage
run: |
dotnet test test/NosCore.Core.Tests/NosCore.Core.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
dotnet test test/NosCore.Database.Tests/NosCore.Database.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
dotnet test test/NosCore.GameObject.Tests/NosCore.GameObject.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
dotnet test test/NosCore.PacketHandlers.Tests/NosCore.PacketHandlers.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
dotnet test test/NosCore.Tests.Shared/NosCore.Tests.Shared.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
dotnet test test/NosCore.WebApi.Tests/NosCore.WebApi.Tests.csproj --no-build --filter TestCategory!=OPTIONAL-TEST /p:CollectCoverage=true /p:CoverletOutput="../TestResults/" /p:MergeWith="../TestResults/coverlet.json" /p:CoverletOutputFormat=opencover /p:ExcludeByAttribute='GeneratedCodeAttribute' /p:ExcludeByAttribute='Obsolete' /p:ExcludeByAttribute='CompilerGeneratedAttribute' /p:CoverletOutput='./tools/coverage.opencover.xml'
curl -s https://codecov.io/bash | bash -s -- -t $(CODECOV_TOKEN)
- name: Login to DockerHub
if: github.ref == 'refs/heads/master'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- run: dotnet test --runtime linux-musl-x64 --filter TestCategory=SomethingAsDotnetBuildDoesntWorkAnymore
- name: Build, tag, and push image LoginServer
if: github.ref == 'refs/heads/master'
uses: docker/build-push-action@v6
with:
context: .
file: ./deploy/Dockerfile-login
push: true
tags: |
noscoreio/noscore.loginserver:latest
noscoreio/noscore.loginserver:${{ github.sha }}
- name: Build, tag, and push image MasterServer
if: github.ref == 'refs/heads/master'
uses: docker/build-push-action@v6
with:
context: .
file: ./deploy/Dockerfile-master
push: true
tags: |
noscoreio/noscore.masterserver:latest
noscoreio/noscore.masterserver:${{ github.sha }}
- name: Build, tag, and push image WorldServer
if: github.ref == 'refs/heads/master'
uses: docker/build-push-action@v6
with:
context: .
file: ./deploy/Dockerfile-world
push: true
tags: |
noscoreio/noscore.worldserver:latest
noscoreio/noscore.worldserver:${{ github.sha }}
================================================
FILE: .gitignore
================================================
### Csharp ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Uncomment the next line to ignore your web deploy settings.
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
#*.pubxml
*.pubxml.user
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Typescript v1 declaration files
typings/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
### JetBrains+all ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff:
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
# Sensitive or high-churn files:
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.xml
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
# Gradle:
.idea/**/gradle.xml
.idea/**/libraries
# CMake
cmake-build-debug/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
## File-based project format:
*.iws
## Plugin-specific files:
# IntelliJ
/out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Ruby plugin and RubyMine
/.rakeTasks
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
### JetBrains+all Patch ###
# Ignores the whole idea folder
# See https://github.com/joeblau/gitignore.io/issues/186 and https://github.com/joeblau/gitignore.io/issues/360
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
.history
### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
# User-specific files (MonoDevelop/Xamarin Studio)
# Build results
# Visual Studio 2015 cache/options directory
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# MSTest test Results
# NUNIT
# Build Results of an ATL Project
# .NET Core
# Chutzpah Test files
# Visual C++ cache files
# Visual Studio profiler
# TFS 2012 Local Workspace
# Guidance Automation Toolkit
# ReSharper is a .NET coding add-in
# JustCode is a .NET coding add-in
# TeamCity is a build add-in
# DotCover is a Code Coverage Tool
# Visual Studio code coverage results
# NCrunch
# MightyMoose
# Web workbench (sass)
# Installshield output folder
# DocProject is a documentation generator add-in
# Click-Once directory
# Publish Web Output
# TODO: Uncomment the next line to ignore your web deploy settings.
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
#*.pubxml
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
# NuGet Packages
# The packages folder can be ignored because of Package Restore
# except build/, which is used as an MSBuild target.
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# NuGet v3's project.json files produces more ignorable files
# Microsoft Azure Build Output
# Microsoft Azure Emulator
# Windows Store app package directories and files
# Visual Studio cache files
# files ending in .cache can be ignored
# but keep track of directories ending in .cache
# Others
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
# SQL Server files
# Business Intelligence projects
# Microsoft Fakes
# GhostDoc plugin setting file
# Node.js Tools for Visual Studio
# Typescript v1 declaration files
# Visual Studio 6 build log
# Visual Studio 6 workspace options file
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
# Visual Studio LightSwitch build output
# Paket dependency manager
# FAKE - F# Make
# JetBrains Rider
# CodeRush
# Python Tools for Visual Studio (PTVS)
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Telerik's JustMock configuration file
# BizTalk build output
### VisualStudio Patch ###
# By default, sensitive information, such as encrypted password
# should be stored in the .pubxml.user file.
Log.txt
/build/Configuration
/build/netcoreapp2.*
/build/netcoreapp3.*
/build/netcoreapp5.*
/build/net*.*
*.orig
/postgres
# Claude Code
.claude/
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to NosCore
## Concurrency & locking
NosCore intentionally uses **per-resource locks** rather than a global lock manager. Each lock has one job and lives on the resource it protects. When you add a new lock, follow the existing pattern below — do not introduce a centralised `LockManager`.
| Resource | Lock | Where it lives |
|---|---|---|
| Inbound packets for a session | `SemaphoreSlim _handlingPacketLock` | `ClientSession` |
| Damage application to a single entity | `SemaphoreSlim HitSemaphore` | `IAliveEntity` (player / monster / NPC) |
| SignalR hub connect/disconnect | `SemaphoreSlim _connectionLock` | `BaseHubClient` / `PubSubHubClient` |
### Rules
1. **One purpose per lock.** A lock guards exactly one mutable resource. Don't reuse an existing semaphore for unrelated state.
2. **Lock lives on the resource.** Put it as a field on the entity / session / client it protects, not in a static dictionary.
3. **Use `SemaphoreSlim(1, 1)` for serialization, `ConcurrentDictionary` for shared maps.** Don't reach for `lock(obj)` — async code can't `await` inside a `lock`.
4. **Always `try { ... } finally { _lock.Release(); }`** when acquiring a semaphore. Without `finally` an exception leaves the lock held.
5. **Never hold a lock across an external I/O call (DB, HTTP, SignalR).** If the call is slow, drop the lock first or use a more granular one.
6. **Don't acquire two locks at once** unless the order is documented at both call sites. Lock-ordering bugs surface at scale.
If a new feature needs cross-cutting coordination (e.g. "all map instances must agree on X"), prefer publishing a Wolverine message to a handler that owns the state — not adding a lock that spans subsystems.
## Background work & scheduled jobs
For "do X every N minutes" jobs, use the Wolverine pattern in `NosCore.GameObject.Messaging.ScheduledJobs/`:
1. Define a message record: `public sealed record FooJobMessage;`
2. Define a handler with a `Handle(FooJobMessage _)` method.
3. Register a `RecurringMessagePublisher<FooJobMessage>` as an `IHostedService` in the relevant `*Bootstrap.cs`.
For one-shot delayed work, publish via `IMessageBus.PublishAsync` with a `DeliveryOptions { ScheduledTime = ... }` — see Wolverine docs for details.
## Domain events
Cross-cutting reactions ("on monster killed → award XP, update quest progress, write family log") should be Wolverine messages, not direct calls between services. See `NosCore.GameObject.Messaging.Events/MonsterKilledEvent.cs` for the template.
### Conventions
- **Events** live in `NosCore.GameObject.Messaging.Events/` as `sealed record EventNameEvent(...)`. Use past tense — `XHappenedEvent` — to make it clear the event represents something that already occurred.
- **Handlers** live in `NosCore.GameObject.Messaging.Handlers/<Domain>/`, one folder per packet/feature area (e.g. `Guri/`, `Nrun/`, `UseItem/`, `MapItem/`, `Map/`). Class names always end with `Handler`, never `EventHandler`. Handlers are plain classes — Wolverine discovers them by convention via the `Handle`/`HandleAsync` method.
- **One handler per file.** Multiple handlers can subscribe to the same event; each filters internally with an early `return` if the event isn't relevant.
- **Publishing**: inject `Wolverine.IMessageBus` and call `messageBus.PublishAsync(new XEvent(...))`. Don't introduce per-domain "runner" services — the bus is the runner.
### Recurring & scheduled work
Recurring jobs (e.g. periodic save) are registered as `RecurringMessagePublisher<TMessage>` hosted services in the relevant `*Bootstrap.cs`. The publisher fires a fresh message every interval; the Wolverine handler does the work. See `Messaging/ScheduledJobs/` for examples.
For one-shot delayed work (e.g. "expire this buff in 30s"), publish via `IMessageBus.PublishAsync` with `DeliveryOptions { ScheduledTime = ... }`.
================================================
FILE: Directory.Build.props
================================================
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(NOSCORE_LOCAL_PACKAGES)' != ''">
<RestoreAdditionalProjectSources>$(RestoreAdditionalProjectSources);$(NOSCORE_LOCAL_PACKAGES)</RestoreAdditionalProjectSources>
</PropertyGroup>
</Project>
================================================
FILE: Directory.Packages.props
================================================
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Arch" Version="2.1.0" />
<PackageVersion Include="Autofac" Version="9.1.0" />
<PackageVersion Include="Autofac.Extensions.DependencyInjection" Version="11.0.0" />
<PackageVersion Include="AutoFixture" Version="4.18.1" />
<PackageVersion Include="AutoFixture.AutoMoq" Version="4.18.1" />
<PackageVersion Include="BCrypt.Net-Core" Version="1.6.0" />
<PackageVersion Include="coverlet.msbuild" Version="10.0.0" />
<PackageVersion Include="FastExpressionCompiler" Version="5.4.1" />
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.4" />
<PackageVersion Include="JsonPatch.Net" Version="5.0.2" />
<PackageVersion Include="Mapster" Version="10.0.7" />
<PackageVersion Include="Mapster.JsonNet" Version="10.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="10.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="10.0.7" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="10.0.7" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="5.3.0-2.25625.1" />
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="5.3.0" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.7" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.7" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.7" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.5.1" />
<PackageVersion Include="Moq" Version="4.20.72" />
<PackageVersion Include="MSTest.TestAdapter" Version="4.2.2" />
<PackageVersion Include="MSTest.TestFramework" Version="4.2.2" />
<PackageVersion Include="NodaTime" Version="3.3.2" />
<PackageVersion Include="NodaTime.Serialization.SystemTextJson" Version="1.3.1" />
<PackageVersion Include="NodaTime.Testing" Version="3.3.2" />
<PackageVersion Include="NosCore.Algorithm" Version="2.0.0" />
<PackageVersion Include="NosCore.Analyzers" Version="2.0.0" />
<PackageVersion Include="NosCore.Dao" Version="5.0.0" />
<PackageVersion Include="NosCore.FastMember" Version="1.5.0" />
<PackageVersion Include="NosCore.Networking" Version="8.0.0" />
<PackageVersion Include="NosCore.Packets" Version="20.0.3" />
<PackageVersion Include="NosCore.PathFinder" Version="2.1.0" />
<PackageVersion Include="NosCore.Shared" Version="6.0.0" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL.NodaTime" Version="10.0.1" />
<PackageVersion Include="Npgsql.NodaTime" Version="10.0.2" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.1-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.1" />
<PackageVersion Include="Polly" Version="8.6.6" />
<PackageVersion Include="Serilog" Version="4.3.1" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="10.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="10.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="10.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="6.1.1" />
<PackageVersion Include="SpecLight" Version="1.0.71" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.18.0" />
<PackageVersion Include="System.Reactive" Version="6.1.0" />
<PackageVersion Include="TwoFactorAuth.Net" Version="1.4.0" />
<PackageVersion Include="WolverineFx" Version="5.37.0" />
</ItemGroup>
</Project>
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2026 NosCoreIO
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: NosCore.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.2.11408.102
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.LoginServer", "src\NosCore.LoginServer\NosCore.LoginServer.csproj", "{40663D90-0B3E-48A7-800E-CB5E1BED27B6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.WorldServer", "src\NosCore.WorldServer\NosCore.WorldServer.csproj", "{4EFCF709-5899-4C49-A368-E556AFA3931F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Parser", "src\NosCore.Parser\NosCore.Parser.csproj", "{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.MasterServer", "src\NosCore.MasterServer\NosCore.MasterServer.csproj", "{756A8A86-A7EE-475D-B2E4-E98D79049F6B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Core", "src\NosCore.Core\NosCore.Core.csproj", "{83F1DAD2-9E07-4D0B-B548-DEB03105F874}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Database", "src\NosCore.Database\NosCore.Database.csproj", "{93487BBB-589C-4315-9E52-1279C9434B3C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.GameObject", "src\NosCore.GameObject\NosCore.GameObject.csproj", "{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Data", "src\NosCore.Data\NosCore.Data.csproj", "{AEDAAE2C-D615-4241-8006-240BB7FF1446}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PacketHandlers", "src\NosCore.PacketHandlers\NosCore.PacketHandlers.csproj", "{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Tests.Shared", "test\NosCore.Tests.Shared\NosCore.Tests.Shared.csproj", "{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Infrastructure", "Infrastructure", "{975CF226-2297-4B1B-88C6-5783C5359D18}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Executables", "Executables", "{D4E0F6CD-9F21-4140-AC42-CD021D98B980}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{EFA0F8A7-CBF2-4542-82A9-931BB0111FED}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Core.Tests", "test\NosCore.Core.Tests\NosCore.Core.Tests.csproj", "{A4B32710-06C8-4222-BC2B-2341EF514D9C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.GameObject.Tests", "test\NosCore.GameObject.Tests\NosCore.GameObject.Tests.csproj", "{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.PacketHandlers.Tests", "test\NosCore.PacketHandlers.Tests\NosCore.PacketHandlers.Tests.csproj", "{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.Database.Tests", "test\NosCore.Database.Tests\NosCore.Database.Tests.csproj", "{DCE80DB0-6530-4599-9433-5601F55E4270}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.WebApi.Tests", "test\NosCore.WebApi.Tests\NosCore.WebApi.Tests.csproj", "{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NosCore.DtoGenerator", "tools\NosCore.DtoGenerator\NosCore.DtoGenerator.csproj", "{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.WebApi", "src\NosCore.WebApi\NosCore.WebApi.csproj", "{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.Parser.Tests", "test\NosCore.Parser.Tests\NosCore.Parser.Tests.csproj", "{4E68313F-69F8-4125-B87E-665D6F7DFD5D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{07C2787E-EAC7-C090-1BA3-A61EC2A24D84}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NosCore.EcsGenerator", "tools\NosCore.EcsGenerator\NosCore.EcsGenerator.csproj", "{78731E48-C6CA-4614-B617-65B55A85CAE0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x64.ActiveCfg = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x64.Build.0 = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x86.ActiveCfg = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Debug|x86.Build.0 = Debug|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|Any CPU.Build.0 = Release|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x64.ActiveCfg = Release|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x64.Build.0 = Release|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x86.ActiveCfg = Release|Any CPU
{40663D90-0B3E-48A7-800E-CB5E1BED27B6}.Release|x86.Build.0 = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x64.ActiveCfg = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x64.Build.0 = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x86.ActiveCfg = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Debug|x86.Build.0 = Debug|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|Any CPU.Build.0 = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x64.ActiveCfg = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x64.Build.0 = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x86.ActiveCfg = Release|Any CPU
{4EFCF709-5899-4C49-A368-E556AFA3931F}.Release|x86.Build.0 = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x64.ActiveCfg = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x64.Build.0 = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x86.ActiveCfg = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Debug|x86.Build.0 = Debug|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|Any CPU.Build.0 = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x64.ActiveCfg = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x64.Build.0 = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x86.ActiveCfg = Release|Any CPU
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7}.Release|x86.Build.0 = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x64.ActiveCfg = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x64.Build.0 = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x86.ActiveCfg = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Debug|x86.Build.0 = Debug|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|Any CPU.Build.0 = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x64.ActiveCfg = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x64.Build.0 = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x86.ActiveCfg = Release|Any CPU
{756A8A86-A7EE-475D-B2E4-E98D79049F6B}.Release|x86.Build.0 = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x64.ActiveCfg = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x64.Build.0 = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x86.ActiveCfg = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Debug|x86.Build.0 = Debug|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|Any CPU.Build.0 = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x64.ActiveCfg = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x64.Build.0 = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x86.ActiveCfg = Release|Any CPU
{83F1DAD2-9E07-4D0B-B548-DEB03105F874}.Release|x86.Build.0 = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x64.ActiveCfg = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x64.Build.0 = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x86.ActiveCfg = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Debug|x86.Build.0 = Debug|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|Any CPU.Build.0 = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x64.ActiveCfg = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x64.Build.0 = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x86.ActiveCfg = Release|Any CPU
{93487BBB-589C-4315-9E52-1279C9434B3C}.Release|x86.Build.0 = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x64.ActiveCfg = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x64.Build.0 = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x86.ActiveCfg = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Debug|x86.Build.0 = Debug|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|Any CPU.Build.0 = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x64.ActiveCfg = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x64.Build.0 = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x86.ActiveCfg = Release|Any CPU
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE}.Release|x86.Build.0 = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x64.ActiveCfg = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x64.Build.0 = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x86.ActiveCfg = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Debug|x86.Build.0 = Debug|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|Any CPU.Build.0 = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x64.ActiveCfg = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x64.Build.0 = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x86.ActiveCfg = Release|Any CPU
{AEDAAE2C-D615-4241-8006-240BB7FF1446}.Release|x86.Build.0 = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x64.ActiveCfg = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x64.Build.0 = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x86.ActiveCfg = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Debug|x86.Build.0 = Debug|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|Any CPU.Build.0 = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x64.ActiveCfg = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x64.Build.0 = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x86.ActiveCfg = Release|Any CPU
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA}.Release|x86.Build.0 = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x64.ActiveCfg = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x64.Build.0 = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x86.ActiveCfg = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Debug|x86.Build.0 = Debug|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|Any CPU.Build.0 = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x64.ActiveCfg = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x64.Build.0 = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x86.ActiveCfg = Release|Any CPU
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543}.Release|x86.Build.0 = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x64.ActiveCfg = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x64.Build.0 = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x86.ActiveCfg = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Debug|x86.Build.0 = Debug|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|Any CPU.Build.0 = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x64.ActiveCfg = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x64.Build.0 = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x86.ActiveCfg = Release|Any CPU
{A4B32710-06C8-4222-BC2B-2341EF514D9C}.Release|x86.Build.0 = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x64.ActiveCfg = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x64.Build.0 = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x86.ActiveCfg = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Debug|x86.Build.0 = Debug|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|Any CPU.Build.0 = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x64.ActiveCfg = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x64.Build.0 = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x86.ActiveCfg = Release|Any CPU
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824}.Release|x86.Build.0 = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|Any CPU.Build.0 = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x64.ActiveCfg = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x64.Build.0 = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x86.ActiveCfg = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Debug|x86.Build.0 = Debug|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|Any CPU.ActiveCfg = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|Any CPU.Build.0 = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x64.ActiveCfg = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x64.Build.0 = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x86.ActiveCfg = Release|Any CPU
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676}.Release|x86.Build.0 = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x64.ActiveCfg = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x64.Build.0 = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x86.ActiveCfg = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Debug|x86.Build.0 = Debug|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|Any CPU.Build.0 = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x64.ActiveCfg = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x64.Build.0 = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x86.ActiveCfg = Release|Any CPU
{DCE80DB0-6530-4599-9433-5601F55E4270}.Release|x86.Build.0 = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x64.ActiveCfg = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x64.Build.0 = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Debug|x86.Build.0 = Debug|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|Any CPU.Build.0 = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x64.ActiveCfg = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x64.Build.0 = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x86.ActiveCfg = Release|Any CPU
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3}.Release|x86.Build.0 = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x64.ActiveCfg = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x64.Build.0 = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x86.ActiveCfg = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Debug|x86.Build.0 = Debug|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|Any CPU.Build.0 = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x64.ActiveCfg = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x64.Build.0 = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x86.ActiveCfg = Release|Any CPU
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C}.Release|x86.Build.0 = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x64.ActiveCfg = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x64.Build.0 = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x86.ActiveCfg = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Debug|x86.Build.0 = Debug|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|Any CPU.Build.0 = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x64.ActiveCfg = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x64.Build.0 = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x86.ActiveCfg = Release|Any CPU
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5}.Release|x86.Build.0 = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x64.ActiveCfg = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x64.Build.0 = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x86.ActiveCfg = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Debug|x86.Build.0 = Debug|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|Any CPU.Build.0 = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x64.ActiveCfg = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x64.Build.0 = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x86.ActiveCfg = Release|Any CPU
{4E68313F-69F8-4125-B87E-665D6F7DFD5D}.Release|x86.Build.0 = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x64.ActiveCfg = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x64.Build.0 = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x86.ActiveCfg = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Debug|x86.Build.0 = Debug|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|Any CPU.Build.0 = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x64.ActiveCfg = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x64.Build.0 = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x86.ActiveCfg = Release|Any CPU
{78731E48-C6CA-4614-B617-65B55A85CAE0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{40663D90-0B3E-48A7-800E-CB5E1BED27B6} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980}
{4EFCF709-5899-4C49-A368-E556AFA3931F} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980}
{BBAF31CA-9D4F-4786-81B8-7FD56633C7B7} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980}
{756A8A86-A7EE-475D-B2E4-E98D79049F6B} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980}
{83F1DAD2-9E07-4D0B-B548-DEB03105F874} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{93487BBB-589C-4315-9E52-1279C9434B3C} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{77D6E5F6-9A08-436D-8A9D-7F5832322FAE} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{AEDAAE2C-D615-4241-8006-240BB7FF1446} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{8DD33CE5-B9B4-4CCA-B3D7-55DA387AB4AA} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{B22C7ABE-2B56-42AF-8CF2-46058A5B6543} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{A4B32710-06C8-4222-BC2B-2341EF514D9C} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{DCD71941-444F-4A8B-B2CF-AF1C95BAB824} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{07506CBB-A1CE-4FFA-B2C7-AC34FD9E5676} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{DCE80DB0-6530-4599-9433-5601F55E4270} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{5C60F99A-1BA8-4A82-9973-7150D4BE57A3} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{3F7C2822-BF7B-4BC9-8AA3-3ED2E2F0351C} = {975CF226-2297-4B1B-88C6-5783C5359D18}
{4A4D1876-74CC-46B7-BB93-B3E0E4D25AE5} = {D4E0F6CD-9F21-4140-AC42-CD021D98B980}
{4E68313F-69F8-4125-B87E-665D6F7DFD5D} = {EFA0F8A7-CBF2-4542-82A9-931BB0111FED}
{78731E48-C6CA-4614-B617-65B55A85CAE0} = {07C2787E-EAC7-C090-1BA3-A61EC2A24D84}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4B673C11-52EF-455B-BFC6-8CFEBC340972}
EndGlobalSection
EndGlobal
================================================
FILE: NosCore.sln.DotSettings
================================================
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/CodeCleanup/Profiles/=Update_0020file_0020header/@EntryIndexedValue"><?xml version="1.0" encoding="utf-16"?><Profile name="Update file header"><CSCodeStyleAttributes ArrangeTypeAccessModifier="False" ArrangeTypeMemberAccessModifier="False" SortModifiers="False" RemoveRedundantParentheses="False" AddMissingParentheses="False" ArrangeBraces="False" ArrangeAttributes="False" ArrangeArgumentsStyle="False" ArrangeCodeBodyStyle="False" ArrangeVarStyle="False" /><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSUpdateFileHeader>True</CSUpdateFileHeader><XAMLCollapseEmptyTags>False</XAMLCollapseEmptyTags></Profile></s:String>
<s:String x:Key="/Default/CodeStyle/FileHeader/FileHeaderText/@EntryValue"> __ _ __ __ ___ __ ___ ___
| \| |/__\ /' _/ / _//__\| _ \ __|
| | ' | \/ |`._`.| \_| \/ | v / _|
|_|\__|\__/ |___/ \__/\__/|_|_\___|

Copyright (C) 2019 - NosCore

NosCore is a free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
</s:String>
<s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=Antivirus/@EntryIndexedValue">LIVE_MONITOR</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EFeature_002EServices_002ECodeCleanup_002EFileHeader_002EFileHeaderSettingsMigrate/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
================================================
FILE: NosCore.sln.startup.json
================================================
/*
This is a configuration file for the SwitchStartupProject Visual Studio Extension
See https://bitbucket.org/thirteen/switchstartupproject/src/tip/Configuration.md
*/
{
/* Configuration File Version */
"Version": 3,
/* Create an item in the dropdown list for each project in the solution? */
"ListAllProjects": false,
"MultiProjectConfigurations": {
"Login + Master": {
"Projects": {
"NosCore.LoginServer": {},
"NosCore.MasterServer": {}
}
},
"World + Login + Master": {
"Projects": {
"NosCore.WorldServer": {},
"NosCore.LoginServer": {},
"NosCore.MasterServer": {}
}
},
"World + Login + Master + WebApi": {
"Projects": {
"NosCore.WorldServer": {},
"NosCore.LoginServer": {},
"NosCore.MasterServer": {},
"NosCore.WebApi": {}
}
},
"All": {
"Projects": {
"NosCore.WorldServer": {},
"NosCore.LoginServer": {},
"NosCore.MasterServer": {},
"NosCore.Parser": {},
"NosCore.WebApi": {}
}
},
"LoginServer": {
"Projects": {
"NosCore.LoginServer": {}
}
},
"MasterServer": {
"Projects": {
"NosCore.MasterServer": {}
}
},
"WorldServer": {
"Projects": {
"NosCore.WorldServer": {}
}
},
"Parser": {
"Projects": {
"NosCore.Parser": {}
}
},
"WebApi": {
"Projects": {
"NosCore.WebApi": {}
}
}
}
}
================================================
FILE: NuGet.config
================================================
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<packageSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
================================================
FILE: README.md
================================================
<p align="center">
<img src="https://github.com/NosCoreIO/NosCore.Packets/blob/15.0.1/icon.png"/>
</p>
# NosCore #
[](https://www.codacy.com/gh/NosCoreIO/NosCore/dashboard?utm_source=github.com&utm_medium=referral&utm_content=NosCoreIO/NosCore&utm_campaign=Badge_Grade)
[](https://github.com/NosCoreIO/NosCore/actions/workflows/dotnet.yml)
# Special Thanks for Contributions #
<p align="left">
<a href="https://www.navicat.com"><img height="100px" src="https://user-images.githubusercontent.com/35202750/207230064-dcf23adc-9e96-4481-9a53-cd212f5bd60e.png"/></a>
</p>
## You want to contribute ? ##
[](https://discord.gg/Eu3ETSw)
## You like our work ? ##
<a href='https://github.com/sponsors/0Lucifer0' target='_blank'><img height='48' style='border:0px;height:46px;' src='https://i.gyazo.com/47b2ca2eb6e1ce38d02b04c410e1c82a.png' border='0' alt='Sponsor me!' /></a>
[](https://ko-fi.com/A3562BQV)
<a href='https://www.patreon.com/bePatron?u=6503887' target='_blank'><img height='46' style='border:0px;height:46px;' src='https://c5.patreon.com/external/logo/become_a_patron_button@2x.png' border='0' alt='Become a Patron!' /></a>
## Warning! ##
We are not responsible of any damages caused by bad usage of our source. Please before asking questions or installing this source read this readme and also do a research, google is your friend. If you mess up when installing our source because you didnt follow it, we will laugh at you. A lot.
## Instructions to contribute ##
### Disclaimer ###
This project is a community project not for commercial use. The emulator itself is proof of concept of our idea to try out anything what's not possible on original servers. The result is to learn and program together for prove the study.
### Legal ###
This Website and Project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Gameforge or any of its affiliates or subsidiaries. This is an independent and unofficial server for educational use ONLY. Using the Project might be against the TOS.
### Contribution is only possible with Visual Studio 2026 ###
We recommend usage of :
* [Roslynator extension](https://github.com/JosefPihrt/Roslynator).
* [Resharper](https://www.jetbrains.com/resharper/)
* [SwitchStartupProject extension](https://marketplace.visualstudio.com/items?itemName=vs-publisher-141975.SwitchStartupProjectForVS2022)
# Building the code #
## 1. Install .Net 10 ##
- https://dotnet.microsoft.com/download/dotnet/10.0
- Visual Studio > Tools > Options > Preview Features > Use previews of the .NET CORE SDK
- Restart
## 2. Install or Configure PostgreSQL ##
- PostgreSQL: https://www.postgresql.org/
- Use update-database
- Parse all
## 3. Use the NuGet Package Manager to Update the Database ##
- Go to Tools -> NuGet Package Manager -> Package Manager Console
- Choose Project NosCore.Database
- Type 'update-database' and update the Database
## 4. Start services ##
- script to start services are in .\scripts
## 5. (Optional) Local NuGet packages ##
Every NosCore repo ships a `Directory.Build.props` that adds a NuGet source when the `NOSCORE_LOCAL_PACKAGES` environment variable is set — useful for testing an un-released `NosCore.Packets` / `NosCore.Dao` / `NosCore.Shared` build without publishing it.
One-time setup (run once per machine):
```
setx NOSCORE_LOCAL_PACKAGES C:\LocalPackages
mkdir C:\LocalPackages
```
Restart Visual Studio / your shell so the new variable is picked up.
Drop any `.nupkg` file into that folder, then restore as usual. If the variable is unset the property group is skipped and only nuget.org is used — no action needed for contributors who don't want local packages.
================================================
FILE: build/.gitkeep
================================================
================================================
FILE: build-exe.cmd
================================================
dotnet build -r win-x64 || exit /b 1
dotnet build -r linux-x64 || exit /b 1
dotnet build -r linux-musl-x64 || exit /b 1
mkdir .\build\Configuration || exit /b 1
cd Configuration || exit /b 1
copy *.* ..\build\Configuration\ || exit /b 1
================================================
FILE: build.cmd
================================================
dotnet build
================================================
FILE: codecov.yml
================================================
coverage:
range: 35..100 #upgrade when code coverage is up
round: down
precision: 2
ignore:
- "src/NosCore.WorldServer/*"
- "src/NosCore.MasterServer/*"
- "src/NosCore.LoginServer/*"
- "src/NosCore.WebApi/*"
- "src/NosCore.Database/**/*"
- "src/NosCore.Data/**/*"
- "test/**/*"
================================================
FILE: configuration/api.yml
================================================
MasterCommunication:
Password: NosCorePassword
Host: ${MASTER_HOST,http://localhost}
Port: 5000
Host: ${HOST,127.0.0.1}
Port: ${API_PORT,8080}
Language: en
Database:
Host: ${DB_HOST,localhost}
Port: 5432
Database: noscore
Username: postgres
Password: password
================================================
FILE: configuration/database.yml
================================================
Host: localhost
Port: 5432
Database: noscore
Username: postgres
Password: password
================================================
FILE: configuration/logger.yml
================================================
Serilog:
MinimumLevel:
Default: Debug
Override:
Microsoft: Warning
WriteTo:
- Name: Console
Args:
outputTemplate: "{Level:u4} {Timestamp:HH:mm:ss} -- {Message:lj}{NewLine}{Exception}"
theme: Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Literate, Serilog.Sinks.Console
================================================
FILE: configuration/login.yml
================================================
MasterCommunication:
Password: NosCorePassword
Host: ${MASTER_HOST,http://localhost}
Port: 5000
Host: ${HOST,127.0.0.1}
Port: ${LOGIN_PORT,4000}
Language: en
Database:
Host: ${DB_HOST,localhost}
Port: 5432
Database: noscore
Username: postgres
Password: password
================================================
FILE: configuration/master.yml
================================================
WebApi:
Host: ${WEBAPI_HOST,http://localhost}
Port: 5000
Password: NosCorePassword
Language: en
Database:
Host: ${DB_HOST,localhost}
Port: 5432
Database: noscore
Username: postgres
Password: password
================================================
FILE: configuration/parser.yml
================================================
Language: en
Database:
Host: 127.0.0.1
Port: 5432
Database: noscore
Username: postgres
Password: password
================================================
FILE: configuration/world.yml
================================================
MasterCommunication:
Password: NosCorePassword
Host: ${MASTER_HOST,http://localhost}
Port: 5000
ServerName: S1-NosCore
Host: ${HOST,127.0.0.1}
Port: ${WORLD_PORT,1337}
DisplayHost: 127.0.0.1
DisplayPort: 1337
ConnectedAccountLimit: 100
SceneOnCreate: false
StartInMaintenance: false
#0-3 English / International
#4-7 German
#8-11 French
#12-15 Italian
#16-19 Polish
#20-23 Spanish
ServerId: 0
WorldInformation: true
WebApi:
Host: ${WEBAPI_HOST,http://localhost}
Port: 5001
Password: NosCorePassword
Language: en
Database:
Host: ${DB_HOST,localhost}
Port: 5432
Database: noscore
Username: postgres
Password: password
BackpackSize: 48
MaxItemAmount: 999
MaxGoldAmount: 1000000000
MaxBankGoldAmount: 100000000000
MaxSpPoints: 10000
MaxAdditionalSpPoints: 1000000
AllClassAvailableOnCreate: false
# BasicEquipments / BasicSkills are keyed first by class name, then by starter origin:
# CreateAndUpgrade : Adventurer creation (lvl 1) and Adventurer -> specialist upgrade
# Create56 : specialist direct-create on normal server
# Create80 : any class direct-create when AllClassAvailableOnCreate=true
BasicEquipments:
Adventurer:
CreateAndUpgrade:
- VNum: 1
Amount: 1
NoscorePocketType: 8
- VNum: 8
Amount: 1
NoscorePocketType: 8
- VNum: 12
Amount: 1
NoscorePocketType: 8
- VNum: 2024
Amount: 10
NoscorePocketType: 2
- VNum: 2081
Amount: 1
NoscorePocketType: 2
Swordsman:
CreateAndUpgrade: []
Create56:
- VNum: 901
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 902
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 884
Amount: 1
NoscorePocketType: 0
- VNum: 885
Amount: 1
NoscorePocketType: 0
- VNum: 886
Amount: 1
NoscorePocketType: 0
- VNum: 887
Amount: 1
NoscorePocketType: 0
- VNum: 4833
Amount: 1
NoscorePocketType: 0
- VNum: 4834
Amount: 1
NoscorePocketType: 0
- VNum: 4870
Amount: 1
NoscorePocketType: 0
- VNum: 4989
Amount: 1
NoscorePocketType: 0
- VNum: 4995
Amount: 1
NoscorePocketType: 0
- VNum: 4996
Amount: 1
NoscorePocketType: 0
- VNum: 4997
Amount: 1
NoscorePocketType: 0
- VNum: 4998
Amount: 1
NoscorePocketType: 0
- VNum: 2082
Amount: 100
NoscorePocketType: 2
Create80: []
Archer:
CreateAndUpgrade: []
Create56:
- VNum: 903
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 904
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 884
Amount: 1
NoscorePocketType: 0
- VNum: 885
Amount: 1
NoscorePocketType: 0
- VNum: 886
Amount: 1
NoscorePocketType: 0
- VNum: 887
Amount: 1
NoscorePocketType: 0
- VNum: 4833
Amount: 1
NoscorePocketType: 0
- VNum: 4834
Amount: 1
NoscorePocketType: 0
- VNum: 4870
Amount: 1
NoscorePocketType: 0
- VNum: 4989
Amount: 1
NoscorePocketType: 0
- VNum: 4995
Amount: 1
NoscorePocketType: 0
- VNum: 4996
Amount: 1
NoscorePocketType: 0
- VNum: 4997
Amount: 1
NoscorePocketType: 0
- VNum: 4998
Amount: 1
NoscorePocketType: 0
- VNum: 2083
Amount: 100
NoscorePocketType: 2
Create80: []
Mage:
CreateAndUpgrade: []
Create56:
- VNum: 905
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 906
Amount: 1
NoscorePocketType: 0
Upgrade: 5
- VNum: 884
Amount: 1
NoscorePocketType: 0
- VNum: 885
Amount: 1
NoscorePocketType: 0
- VNum: 886
Amount: 1
NoscorePocketType: 0
- VNum: 887
Amount: 1
NoscorePocketType: 0
- VNum: 4833
Amount: 1
NoscorePocketType: 0
- VNum: 4834
Amount: 1
NoscorePocketType: 0
- VNum: 4870
Amount: 1
NoscorePocketType: 0
- VNum: 4989
Amount: 1
NoscorePocketType: 0
- VNum: 4995
Amount: 1
NoscorePocketType: 0
- VNum: 4996
Amount: 1
NoscorePocketType: 0
- VNum: 4997
Amount: 1
NoscorePocketType: 0
- VNum: 4998
Amount: 1
NoscorePocketType: 0
Create80: []
MartialArtist:
Create80: []
BasicSkills:
# 200 / 201 / 209 (Adventurer primary / secondary / Pet Catcher) are seeded
# unconditionally for every new character in CharNewPacketHandler — matches
# vanosilla's hard-coded BaseSkill list — and must not live here, otherwise
# a JSON misedit could create characters without the capture slot working.
Adventurer:
CreateAndUpgrade: []
Swordsman:
CreateAndUpgrade: []
Create56:
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 22
- 25
- 29
- 38
- 41
- 46
- 50
- 53
- 57
Create80: []
Archer:
CreateAndUpgrade: []
Create56:
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 236
- 21
- 26
- 29
- 37
- 41
- 46
- 50
- 53
- 57
- 60
Create80: []
Mage:
CreateAndUpgrade: []
Create56:
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 237
- 30
- 37
- 42
- 46
- 50
- 53
- 58
Create80: []
MartialArtist:
Create80: []
================================================
FILE: deploy/Dockerfile-login
================================================
# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:10.0.1-alpine3.21-amd64
# .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set
# by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information.
# ASP.NET Core version
ENV ASPNET_VERSION=10.0.1
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# Install ASP.NET Core
RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \
&& aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \
&& echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \
&& tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
&& rm aspnetcore.tar.gz
# Update package list and install libicu (ICU libraries) for Alpine
RUN apk update \
&& apk add --no-cache icu-libs
COPY ./build/net10.0 /app/build/net10.0
COPY ./configuration /app/configuration
WORKDIR /app/build/net10.0
EXPOSE 4002
ENTRYPOINT ["dotnet", "NosCore.LoginServer.dll"]
================================================
FILE: deploy/Dockerfile-master
================================================
# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:10.0.1-alpine3.21-amd64
# .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set
# by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information.
# ASP.NET Core version
ENV ASPNET_VERSION=10.0.1
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# Install ASP.NET Core
RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \
&& aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \
&& echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \
&& tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
&& rm aspnetcore.tar.gz
# Update package list and install libicu (ICU libraries) for Alpine
RUN apk update \
&& apk add --no-cache icu-libs
COPY ./build/net10.0 /app/build/net10.0
COPY ./configuration /app/configuration
WORKDIR /app/build/net10.0
EXPOSE 5000 6969
ENTRYPOINT ["dotnet", "NosCore.MasterServer.dll"]
================================================
FILE: deploy/Dockerfile-world
================================================
# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile
ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:10.0.1-alpine3.21-amd64
# .NET globalization APIs will use invariant mode by default because DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true is set
# by the base runtime-deps image. See https://aka.ms/dotnet-globalization-alpine-containers for more information.
# ASP.NET Core version
ENV ASPNET_VERSION=10.0.1
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# Install ASP.NET Core
RUN wget -O aspnetcore.tar.gz https://builds.dotnet.microsoft.com/dotnet/aspnetcore/Runtime/$ASPNET_VERSION/aspnetcore-runtime-$ASPNET_VERSION-linux-musl-x64.tar.gz \
&& aspnetcore_sha512='ef84b8bcfb323a11acc57e54068e1ff7daa400bd5c8aeb89c65fb13fb2ad9e302986647495561a0c4fda5eb4c0836a67e5e7e591d58661f20cd6ddff97d6d4c9' \
&& echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \
&& tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
&& rm aspnetcore.tar.gz
# Update package list and install libicu (ICU libraries) for Alpine
RUN apk update \
&& apk add --no-cache icu-libs
COPY ./build/net10.0 /app/build/net10.0
COPY ./configuration /app/configuration
WORKDIR /app/build/net10.0
EXPOSE 1337 5001
# RUN dotnet help
ENTRYPOINT ["dotnet", "NosCore.WorldServer.dll"]
================================================
FILE: docker-compose.yml
================================================
services:
db:
container_name: noscore-db
image: postgres:17.2-alpine3.21
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=noscore
ports:
- 5432:5432
# PG17 cannot read a PG12 data directory. A dedicated path forces a clean
# init on upgrade — existing developers just rename ./postgres out of the
# way (or dump+restore) and let PG17 initialise ./postgres17 from scratch.
volumes:
- ./postgres17:/var/lib/postgresql/data
networks:
- noscore-network
reverse-proxy:
container_name: noscore-reverse-proxy
image: noscoreio/noscore.reverseproxy:latest
restart: unless-stopped
ports:
- 4000:4000
- 1337:1337
expose:
- 4000
- 1337
networks:
- noscore-network
master:
container_name: noscore-master
environment:
- PORT=5000
- DB_HOST=db
- WEBAPI_HOST=http://master
build:
context: ./
dockerfile: deploy/Dockerfile-master
restart: unless-stopped
ports:
- 5000:5000
expose:
- 5432
networks:
- noscore-network
volumes:
- ./build/net10.0/linux-musl-x64:/app/build/net10.0
- ./configuration/:/app/build/configuration
world:
container_name: noscore-world
environment:
- WEBAPI_PORT=5001
- WEBAPI_HOST=http://world
- WORLD_PORT=1337
- MASTER_HOST=http://master
- DB_HOST=db
- HOST=127.0.0.1
build:
context: ./
dockerfile: deploy/Dockerfile-world
restart: unless-stopped
ports:
- 5001:5001
- 1337:1337
expose:
- 5432
networks:
- noscore-network
volumes:
- ./build/net10.0/linux-musl-x64:/app/build/net10.0
- ./configuration/:/app/build/configuration
login:
container_name: noscore-login
environment:
- LOGIN_PORT=4000
- MASTER_HOST=http://master
- DB_HOST=db
- HOST=127.0.0.1
build:
context: ./
dockerfile: deploy/Dockerfile-login
restart: unless-stopped
ports:
- 4000:4000
expose:
- 5432
networks:
- noscore-network
volumes:
- ./build/net10.0/linux-musl-x64:/app/build/net10.0
- ./configuration/:/app/build/configuration
networks:
noscore-network:
driver: bridge
================================================
FILE: documentation/PostmanCollection/NosCore.postman_collection.json
================================================
{
"info": {
"_postman_id": "2a1742ee-c773-4210-90b1-2f6f07ceec39",
"name": "NosCore",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Get Bearer Token",
"event": [
{
"listen": "test",
"script": {
"id": "55bf7691-9fc9-4eba-8271-f2b32d83ae2a",
"type": "text/javascript",
"exec": [
"postman.setEnvironmentVariable(\"Token\", responseBody);"
]
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"ServerToken\": \"NosCorePassword\"\r\n}"
},
"url": {
"raw": "http://localhost:5000/api/token/connectServer",
"protocol": "http",
"host": [
"localhost"
],
"port": "5000",
"path": [
"api",
"token",
"connectServer"
]
},
"description": "Post on NosCore API"
},
"response": []
},
{
"name": "Get Channel List",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{Token}}",
"type": "string"
}
]
},
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://localhost:5000/api/channels",
"protocol": "http",
"host": [
"localhost"
],
"port": "5000",
"path": [
"api",
"channels"
]
},
"description": "Post on NosCore API"
},
"response": []
},
{
"name": "Post Packet",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{Token}}",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{ \r\n \"Packet\":\"finfo 6 1\",\r\n \"ReceiverType\": 4,\r\n \"SenderCharacter\":{\"Name\":\"test\",\"Id\":6},\r\n \"ReceiverCharacter\":{\"Name\":\"Elendan\",\"Id\":5},\r\n \"OriginWorldId\":0\r\n}"
},
"url": {
"raw": "http://localhost:5001/api/packet",
"protocol": "http",
"host": [
"localhost"
],
"port": "5001",
"path": [
"api",
"packet"
]
},
"description": "Post on NosCore API"
},
"response": []
}
]
}
================================================
FILE: documentation/dat/Card.dat.md
================================================
# Card.dat
```text
EFFECT {EffectId}
GROUP 0 {Level}
LAST {TimeoutBuff} {TimeoutBuffChance}
NAME {NameI18NKey}
STYLE 0 {BuffType}
TIME {Duration} {Delay}
VNUM {CardId}
```
## EFFECT
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | EffectId | Int32 | Visual effect id |
## GROUP
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Unknown | | | |
| 3 | Parsed | Level | Byte | Card level tier |
## LAST
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | TimeoutBuff | Int16 | Follow-up buff id when card expires |
| 3 | Parsed | TimeoutBuffChance | Byte | % chance the follow-up buff fires |
## NAME
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | NameI18NKey | String | Localization key (zts##e) |
## STYLE
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Unknown | | | |
| 3 | Parsed | BuffType | CardType | Buff type from STYLE column 3 |
## TIME
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | Duration | Int32 | Duration in deciseconds |
| 3 | Parsed | Delay | Int32 | Activation delay |
## VNUM
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | CardId | Int16 | Card vnum |
## Computed / multi-section fields
| DTO property | Type | Source | Description |
|---|---|---|---|
| BCards | ICollection`1 | 1ST + 2ST (5 groups of 6) | Up to 5 BCards, first 3 from 1ST then 2 from 2ST |
================================================
FILE: documentation/dat/Item.dat.md
================================================
# Item.dat
```text
FLAG 0 0 0 {IsSoldable} {IsDroppable} {IsTradable} {IsMinilandActionable} {IsWarehouse} {Flag9} {Flag1} {Flag2} {Flag3} {Flag4} {RequireBinding} {IsColored} {FemaleOnly} {MaleOnly} 0 {Flag6} 0 {IsHeroic} {Flag7} {Flag8} {RaidItem} {UnknownLastBit}
INDEX 0 0 {ItemSubType}
NAME {NameI18NKey}
VNUM {VNum} {Price}
```
## FLAG
25 boolean bits. FLAG[25] identifies raid-inventory items (seals, boxes, chests, drops).
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Unknown | | | |
| 3 | Unknown | | | |
| 4 | Unknown | | | |
| 5 | Parsed | IsSoldable | Boolean | Inverted: dat=0 -> soldable |
| 6 | Parsed | IsDroppable | Boolean | Inverted: dat=0 -> droppable |
| 7 | Parsed | IsTradable | Boolean | Inverted: dat=0 -> tradable |
| 8 | Parsed | IsMinilandActionable | Boolean | Miniland-actionable object |
| 9 | Parsed | IsWarehouse | Boolean | Can be stored in the account warehouse |
| 10 | Parsed | Flag9 | Boolean | FLAG bit 9 (appears on beads, medals, raid seals) |
| 11 | Parsed | Flag1 | Boolean | FLAG bit 10 (unknown) |
| 12 | Parsed | Flag2 | Boolean | FLAG bit 11 (set on mounts + raid items + partner equipment) |
| 13 | Parsed | Flag3 | Boolean | FLAG bit 12 (unknown) |
| 14 | Parsed | Flag4 | Boolean | FLAG bit 13 (unknown) |
| 15 | Parsed | RequireBinding | Boolean | Binds to character on use/equip |
| 16 | Parsed | IsColored | Boolean | Uses design slot for color |
| 17 | NonParsed | FemaleOnly | | Set together with FLAG[18]=0 to mark a female-only item; rolled up into Sex. |
| 18 | NonParsed | MaleOnly | | Set together with FLAG[17]=0 to mark a male-only item; rolled up into Sex. |
| 19 | Unknown | | | |
| 20 | Parsed | Flag6 | Boolean | FLAG bit 19 (unknown) |
| 21 | Unknown | | | |
| 22 | Parsed | IsHeroic | Boolean | Heroic item |
| 23 | Parsed | Flag7 | Boolean | FLAG bit 22 (unknown) |
| 24 | Parsed | Flag8 | Boolean | FLAG bit 23 (unknown) |
| 25 | NonParsed | RaidItem | | Set on raid seals, raid boxes, chests and drops — routed to the Raid pocket. |
| 26 | NonParsed | UnknownLastBit | | |
## INDEX
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Unknown | | | |
| 3 | Unknown | | | |
| 4 | Parsed | ItemSubType | Byte | Subtype within item category |
## NAME
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | NameI18NKey | String | Localization key (zts##e) |
## VNUM
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | VNum | Int16 | Item vnum |
| 3 | Parsed | Price | Int64 | NPC shop sell price |
## Computed / multi-section fields
| DTO property | Type | Source | Description |
|---|---|---|---|
| BasicUpgrade | Byte | DATA[varies] | Base upgrade level |
| BCards | ICollection`1 | BUFF[0..24] | Up to 5 BCard groups (5 fields each) |
| Class | Byte | TYPE[1] (fairy override: 15) | Class restriction bitmask |
| CloseDefence | Int16 | DATA[varies] | Melee defence |
| CriticalLuckRate | Byte | DATA[varies] | Critical luck multiplier |
| CriticalRate | Int16 | DATA[varies] | Critical hit chance |
| DamageMaximum | Int16 | DATA[varies] | Max weapon damage |
| DamageMinimum | Int16 | DATA[varies] | Min weapon damage |
| DarkResistance | Int16 | DATA[11] or DATA[18] | Dark resistance; SP uses DATA[18] |
| DefenceDodge | Int16 | DATA[varies] | Dodge chance |
| DistanceDefence | Int16 | DATA[varies] | Ranged defence |
| DistanceDefenceDodge | Int16 | DATA[varies] | Ranged dodge chance |
| Effect | ItemEffectType | DATA[varies] per ItemType | ItemEffectType enum |
| EffectValue | Int32 | DATA[varies] per ItemType | Effect numeric argument |
| Element | ElementType | DATA[varies] | Primary elemental alignment |
| ElementRate | Int16 | DATA[varies] | Element rate % |
| EquipmentSlot | EquipmentType | INDEX[3] | Equipment slot |
| FireResistance | Int16 | DATA[7] or DATA[15] | Fire resistance; SP uses DATA[15], others DATA[7] |
| Height | Byte | DATA[4] (miniland only) | Miniland object footprint height |
| HitRate | Int16 | DATA[varies] | Hit rate |
| Hp | Int16 | DATA[varies] | Hp bonus on equip |
| ItemType | ItemType | INDEX[0,1] | ItemType composite enum |
| ItemValidTime | Int64 | DATA[varies] | Expiration duration in seconds |
| LevelJobMinimum | Byte | DATA[varies] | Minimum job level to use/equip |
| LevelMinimum | Byte | DATA[varies] | Minimum level to equip/use, per-ItemType |
| LightResistance | Int16 | DATA[9] or DATA[17] | Light resistance; SP uses DATA[17] |
| MagicDefence | Int16 | DATA[varies] | Magic defence |
| MaxCellon | Byte | DATA[varies] | Max cellons slotted |
| MaxCellonLvl | Byte | DATA[varies] | Max cellon level |
| MaximumAmmo | Byte | DATA[varies] | Max ammo |
| MinilandObjectPoint | Int32 | DATA[2] (miniland only) | Miniland point value |
| Morph | Int16 | INDEX[3] + INDEX[5] | Morph id (partner skin) or effect value |
| Mp | Int16 | DATA[varies] | Mp bonus on equip |
| ReputationMinimum | Byte | DATA[varies] | Minimum reputation tier |
| ReputPrice | Int64 | FLAG[20] + VNUM[1] | Reputation price when FLAG[20] is set |
| Sex | Byte | FLAG[16] + FLAG[17] | Gender restriction: 1=female, 2=male, 0=any |
| Speed | Byte | DATA[varies] | Movement speed bonus / vehicle speed |
| SpType | Byte | DATA[varies] (SP only) | SP transformation type |
| Type | NoscorePocketType | FLAG[25] + DATA[0] + INDEX[0,1] | Pocket type: FLAG[25]==1 -> Raid, DATA[0]==1000 && INDEX[1]==4 -> Mount, else legacy INDEX[0] map |
| WaitDelay | Int16 | DATA[varies] | Cooldown / use delay |
| WaterResistance | Int16 | DATA[8] or DATA[16] | Water resistance; SP uses DATA[16] |
| Width | Byte | DATA[3] (miniland only) | Miniland object footprint width |
================================================
FILE: documentation/dat/Skill.dat.md
================================================
# Skill.dat
```text
```
## Computed / multi-section fields
| DTO property | Type | Source | Description |
|---|---|---|---|
| AttackAnimation | Int16 | | |
| BCards | ICollection`1 | | |
| CastAnimation | Int16 | | |
| CastEffect | Int16 | | |
| CastId | Int16 | | |
| CastTime | Int16 | | |
| Class | Byte | | |
| Combo | ICollection`1 | | |
| Cooldown | Int16 | | |
| CpCost | Byte | | |
| Effect | Int16 | | |
| Element | Byte | | |
| HitType | Byte | | |
| ItemVNum | Int16 | | |
| LevelMinimum | Byte | | |
| MinimumAdventurerLevel | Byte | | |
| MinimumArcherLevel | Byte | | |
| MinimumMagicianLevel | Byte | | |
| MinimumSwordmanLevel | Byte | | |
| MpCost | Int16 | | |
| NameI18NKey | String | | |
| Price | Int32 | | |
| Range | Byte | | |
| SkillType | Byte | | |
| SkillVNum | Int16 | | |
| TargetRange | Byte | | |
| TargetType | Byte | | |
| Type | Byte | | |
| UpgradeSkill | Int16 | | |
| UpgradeType | Int16 | | |
================================================
FILE: documentation/dat/monster.dat.md
================================================
# monster.dat
```text
AINFO {ainfoDefType} {DefenceUpgrade}
ARMOR {CloseDefence} {meleeDef} {rangedDef} {magicDef} {dodge}
ATTRIB {Element} {ElementRate} {FireResistance} {WaterResistance} {LightResistance} {DarkResistance}
BASIC {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards}
CARD {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards} {BCards}
EFF {BasicSkill} {EffectIdConstantly} {EffectIdOnDeath}
ETC {CanWalk} {unknown1} {IsPercentileDmg} {CanOnlyBeDmgedByJajamaruLastSkill} {unknown2} {VisibleOnMinimapAsGreenDot} {unknown3} {IsValhallaPartner}
EXP {HeroXp} {JobXp}
HP/MP {MaxHp} {MaxMp}
ITEM {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop} {Drop}
LEVEL {Level}
MODE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 {AlwaysActive} {Limiter} {HpThreshold} {RangeThreshold} {CModeVNum} {CellMinRange} {Midgard}
NAME {NameI18NKey}
PARTNER {partnerUnused}
PETINFO {PetInfoVal1} {PetInfoVal2} {PetInfoVal3} {PetInfoVal4}
PREATT {IsHostile} {GroupAttack} {NoticeRange} {Speed} {RespawnTime}
RACE {Race} {RaceType}
SETTING {IconId} {SpawnMobOrColor} {VNumRequired} {SpriteSize} {CellSize} {unknown0}
SKILL {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill} {NpcMonsterSkill}
VNUM {NpcMonsterVNum}
WEAPON {DamageMinimum} {DamageMinimum} {DamageMinimum} {DamageMaximum} {Concentrate} {CriticalChance} {CriticalRate}
WINFO {AttackUpgrade} {unknown5} {AttackUpgrade}
ZSKILL {AttackClass} {BasicRange} {BasicHitChance} {BasicArea} {BasicCooldown} {DashSpeed} {unknown4}
```
## AINFO
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | NonParsed | ainfoDefType | | Defence-type override for ARMOR derivation. |
| 3 | Parsed | DefenceUpgrade | Byte | Armor upgrade level |
## ARMOR
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | CloseDefence | Int16 | (armorLvl-1)*2 + 18 |
| 2 | Parsed | DefenceDodge | Int16 | (armorLvl-1)*5 + 31 |
| 2 | Parsed | DistanceDefence | Int16 | (armorLvl-1)*3 + 17 |
| 2 | Parsed | DistanceDefenceDodge | Int16 | (armorLvl-1)*5 + 31 |
| 2 | Parsed | MagicDefence | Int16 | (armorLvl-1)*2 + 13 |
| 3 | NonParsed | meleeDef | | Stored in .dat but we recompute from armorLvl. |
| 4 | NonParsed | rangedDef | | Stored in .dat but we recompute from armorLvl. |
| 5 | NonParsed | magicDef | | Stored in .dat but we recompute from armorLvl. |
| 6 | NonParsed | dodge | | Stored in .dat but we recompute from armorLvl. |
## ATTRIB
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | Element | Byte | Primary elemental alignment |
| 3 | Parsed | ElementRate | Int16 | Element rate % |
| 4 | Parsed | FireResistance | Int16 | Fire resistance |
| 5 | Parsed | WaterResistance | Int16 | Water resistance |
| 6 | Parsed | LightResistance | Int16 | Light resistance |
| 7 | Parsed | DarkResistance | Int16 | Dark resistance |
## BASIC
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 3 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 4 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 5 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 6 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 7 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 8 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 9 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 10 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 11 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 12 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 13 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 14 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 15 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 16 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 17 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 18 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 19 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 20 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 21 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 22 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 23 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 24 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 25 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 26 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 27 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 28 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 29 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 30 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 31 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 32 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 33 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 34 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 35 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 36 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 37 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 38 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 39 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 40 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 41 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 42 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 43 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 44 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 45 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 46 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 47 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 48 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 49 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 50 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 51 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
## CARD
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 3 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 4 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 5 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 6 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 7 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 8 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 9 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 10 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 11 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 12 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 13 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 14 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 15 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 16 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 17 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 18 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 19 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 20 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 21 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
## EFF
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | BasicSkill | Int16 | Basic on-attack effect id |
| 3 | Parsed | EffectIdConstantly | Int16 | Constantly-running aura effect id |
| 4 | Parsed | EffectIdOnDeath | Int16 | Effect id played on death |
## ETC
32-bit flag word stored as a decimal integer. Each bit flips a named gameplay behaviour; only a subset is documented in NSgtd.
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | AmountRequired | Byte | Amount of the required item |
| 2 | Parsed | AttackUpgrade | Byte | Weapon upgrade level |
| 2 | Parsed | CanCatch | Boolean | ETC bit 3 -> catchable (mate) |
| 2 | Parsed | CanCollect | Boolean | ETC bit 1 -> harvestable |
| 2 | Parsed | CantDebuff | Boolean | ETC bit 2 -> immune to debuffs |
| 2 | Parsed | CantTargetInfo | Boolean | ETC bit 31 -> hidden from target-info UI |
| 2 | Parsed | CantVoke | Boolean | ETC bit 11 -> immune to voke |
| 2 | Parsed | CanWalk | Boolean | ETC bit 0 clear -> can walk |
| 2 | Parsed | DefenceUpgrade | Byte | Armor upgrade level |
| 2 | Parsed | DisappearAfterHitting | Boolean | ETC bit 5 -> despawns after a hit |
| 2 | Parsed | DisappearAfterSeconds | Boolean | ETC bit 4 -> despawns on a timer |
| 2 | Parsed | DisappearAfterSecondsMana | Boolean | ETC bit 7 -> despawns when mana empties |
| 2 | Parsed | DontDrainHpAfterSeconds | Boolean | ETC bit 28 -> skips HP drain over time |
| 2 | Parsed | HasDash | Boolean | ETC bit 9 -> has a dash skill |
| 2 | Parsed | HasMode | Boolean | ETC bit 6 -> uses a MODE |
| 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) |
| 2 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon |
| 2 | Parsed | OnDefenseOnlyOnce | Boolean | ETC bit 8 -> defensive AI fires once |
| 2 | Parsed | RegenerateHpOverTime | Boolean | ETC bit 10 -> passive HP regen |
| 2 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact |
| 3 | NonParsed | unknown1 | | |
| 4 | Parsed | IsPercentileDmg | Boolean | Damage output is expressed as % of target max HP (boss mechanic) |
| 5 | Parsed | CanOnlyBeDmgedByJajamaruLastSkill | Boolean | Only damageable by Jajamaru's final skill (Namaju) |
| 6 | NonParsed | unknown2 | | Always 0. |
| 7 | Parsed | VisibleOnMinimapAsGreenDot | Boolean | Renders as a green dot on the minimap |
| 8 | NonParsed | unknown3 | | |
| 9 | Parsed | IsValhallaPartner | Boolean | Marks Valhalla raid partner mobs |
## EXP
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | HeroXp | Int32 | Hero-level XP award, scaled down from XP |
| 2 | Parsed | Xp | Int32 | Base XP award |
| 3 | Parsed | JobXp | Int32 | Base job XP award |
## HP/MP
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | MaxHp | Int32 | Override HP plus level-based baseline |
| 3 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race |
## ITEM
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 3 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 4 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 5 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 6 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 7 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 8 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 9 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 10 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 11 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 12 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 13 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 14 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 15 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 16 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 17 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 18 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 19 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 20 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 21 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 22 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 23 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 24 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 25 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 26 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 27 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 28 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 29 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 30 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 31 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 32 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 33 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 34 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 35 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 36 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 37 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 38 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 39 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 40 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 41 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 42 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 43 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 44 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 45 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 46 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 47 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 48 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 49 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 50 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 51 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 52 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 53 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 54 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 55 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 56 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 57 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 58 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 59 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 60 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 61 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
## LEVEL
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | DamageMaximum | Int16 | Max attack damage |
| 2 | Parsed | DamageMinimum | Int16 | Min attack damage |
| 2 | Parsed | HeroXp | Int32 | Hero-level XP award, scaled down from XP |
| 2 | Parsed | JobXp | Int32 | Base job XP award |
| 2 | Parsed | Level | Byte | Parsed by Level(chunk) helper |
| 2 | Parsed | MaxHp | Int32 | Override HP plus level-based baseline |
| 2 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race |
| 2 | Parsed | Xp | Int32 | Base XP award |
## MODE
4 BCard groups of 5 + 7 mode-meta columns; AlwaysActive onwards is meta.
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Unknown | | | |
| 3 | Unknown | | | |
| 4 | Unknown | | | |
| 5 | Unknown | | | |
| 6 | Unknown | | | |
| 7 | Unknown | | | |
| 8 | Unknown | | | |
| 9 | Unknown | | | |
| 10 | Unknown | | | |
| 11 | Unknown | | | |
| 12 | Unknown | | | |
| 13 | Unknown | | | |
| 14 | Unknown | | | |
| 15 | Unknown | | | |
| 16 | Unknown | | | |
| 17 | Unknown | | | |
| 18 | Unknown | | | |
| 19 | Unknown | | | |
| 20 | Unknown | | | |
| 21 | Unknown | | | |
| 22 | Unknown | | | |
| 23 | Unknown | | | |
| 24 | Unknown | | | |
| 25 | Unknown | | | |
| 26 | Parsed | AlwaysActive | Boolean | Mode always active when non-zero |
| 27 | Parsed | Limiter | Byte | Mode limiter |
| 28 | Parsed | HpThreshold | Int16 | HP% threshold that swaps the mode / item vnum |
| 29 | Parsed | RangeThreshold | Int16 | Range threshold for mode swap |
| 30 | Parsed | CModeVNum | Int16 | c_mode vnum (transform target) |
| 31 | Parsed | CellMinRange | Byte | Minimum cells before the mode engages |
| 32 | Parsed | Midgard | Int32 | Midgard-specific data |
## NAME
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | NameI18NKey | String | Localization key (zts##e) |
## PARTNER
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | NonParsed | partnerUnused | | PARTNER block is always 20 zeros in vanilla; unused. |
## PETINFO
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | PetInfoVal1 | Int32 | Pet stat factor 1 (collectable: tries; teleporter: itemVnum; mate: HP/melee factor) |
| 2 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact |
| 3 | Parsed | AmountRequired | Byte | Amount of the required item |
| 3 | Parsed | PetInfoVal2 | Int32 | Pet stat factor 2 (collectable: cooldown; teleporter: amount; mate: ranged/dodge factor) |
| 4 | Parsed | PetInfoVal3 | Int32 | Pet stat factor 3 (collectable: needItem flag; teleporter: removeItem; mate: magic/MP factor) |
| 5 | Parsed | PetInfoVal4 | Int32 | Pet stat factor 4 (collectable: dance duration; mate: level threshold) |
## PREATT
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | IsHostile | Boolean | Non-zero means the mob aggroes on sight |
| 3 | Parsed | GroupAttack | Byte | Group-aggro mode (1 = with allies, 5 = with group) |
| 4 | Parsed | NoticeRange | Byte | Aggro radius in cells |
| 5 | Parsed | Speed | Byte | Movement speed |
| 6 | Parsed | RespawnTime | Int32 | Respawn delay, deciseconds |
## RACE
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | MaxMp | Int32 | Override MP plus level-based baseline, branch on Race |
| 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) |
| 2 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon |
| 2 | Parsed | Race | Byte | Race group (plant, animal, monster, dragon, …) |
| 3 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) |
| 3 | Parsed | NoAggresiveIcon | Boolean | Talkable / trap entities: suppress the aggressive icon |
| 3 | Parsed | RaceType | Byte | Subtype within the race group |
## SETTING
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | IconId | Int16 | Target-info avatar index (NSip) |
| 3 | Parsed | SpawnMobOrColor | Int32 | When hostility>20000: spawn-mob vnum, else packed RGBA color |
| 4 | Parsed | AmountRequired | Byte | Amount of the required item |
| 4 | Parsed | VNumRequired | Int16 | VNum of the item required to tame/interact |
| 5 | Parsed | SpriteSize | SByte | Sprite scale bonus % (negative shrinks, positive grows) |
| 6 | Parsed | CellSize | Byte | Collision cell footprint (used for big-boss AOE math) |
| 7 | NonParsed | unknown0 | | Always 0. |
## SKILL
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 3 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 4 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 5 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 6 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 7 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 8 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 9 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 10 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 11 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 12 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 13 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 14 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 15 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 16 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
## VNUM
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | BCards | ICollection`1 | BCards from BASIC (10 groups of 5) and CARD (4 groups of 5) |
| 2 | Parsed | Drop | ICollection`1 | 20 group drops, vnum/chance/amount triples, merged with the per-monster drop DAO |
| 2 | Parsed | MonsterType | MonsterType | Categorisation (Mate/Normal/Trap/Unknown) |
| 2 | Parsed | NpcMonsterSkill | ICollection`1 | Up to 5 NpcMonsterSkill entries (vnum/chance/force triples) |
| 2 | Parsed | NpcMonsterVNum | Int16 | Monster vnum |
## WEAPON
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | Concentrate | Int16 | Hit rate |
| 2 | Parsed | DamageMaximum | Int16 | Max attack damage |
| 2 | Parsed | DamageMinimum | Int16 | Min attack damage |
| 3 | Parsed | Concentrate | Int16 | Hit rate |
| 3 | Parsed | CriticalChance | Byte | Critical hit chance |
| 3 | Parsed | CriticalRate | Int16 | Critical hit damage multiplier |
| 3 | Parsed | DamageMaximum | Int16 | Max attack damage |
| 3 | Parsed | DamageMinimum | Int16 | Min attack damage |
| 4 | Parsed | DamageMaximum | Int16 | Max attack damage |
| 4 | Parsed | DamageMinimum | Int16 | Min attack damage |
| 5 | Parsed | DamageMaximum | Int16 | Max attack damage |
| 6 | Parsed | Concentrate | Int16 | Hit rate |
| 7 | Parsed | CriticalChance | Byte | Critical hit chance |
| 8 | Parsed | CriticalRate | Int16 | Critical hit damage multiplier |
## WINFO
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | AttackUpgrade | Byte | Weapon upgrade level |
| 2 | Parsed | DefenceUpgrade | Byte | Armor upgrade level |
| 3 | NonParsed | unknown5 | | |
| 4 | Parsed | AttackUpgrade | Byte | Weapon upgrade level |
## ZSKILL
| Column | Status | Name | Type | Description |
|---:|---|---|---|---|
| 2 | Parsed | AttackClass | Byte | Attack class (melee/ranged/magic) |
| 3 | Parsed | BasicRange | Byte | Basic attack range in cells |
| 4 | Parsed | BasicHitChance | Byte | Basic-attack hit chance (each tick rolls hitChance*20%) |
| 5 | Parsed | BasicArea | Byte | Basic attack area-of-effect radius |
| 6 | Parsed | BasicCooldown | Int16 | Basic attack cooldown, deciseconds |
| 7 | Parsed | DashSpeed | Byte | Dash visual speed |
| 8 | NonParsed | unknown4 | | |
================================================
FILE: documentation/dat/quest.dat.md
================================================
# quest.dat
```text
```
## Computed / multi-section fields
| DTO property | Type | Source | Description |
|---|---|---|---|
| AutoFinish | Boolean | | |
| DescI18NKey | String | | |
| EndDialogId | Nullable`1 | | |
| IsDaily | Boolean | | |
| IsSecondary | Boolean | | |
| LevelMax | Byte | | |
| LevelMin | Byte | | |
| NextQuestId | Nullable`1 | | |
| QuestId | Int16 | | |
| QuestObjective | ICollection`1 | | |
| QuestQuestReward | ICollection`1 | | |
| QuestType | QuestType | | |
| RequiredQuestId | Nullable`1 | | |
| StartDialogId | Nullable`1 | | |
| TargetMap | Nullable`1 | | |
| TargetX | Nullable`1 | | |
| TargetY | Nullable`1 | | |
| TitleI18NKey | String | | |
================================================
FILE: lgtm.yml
================================================
extraction:
csharp:
index:
dotnet:
version: "8.0.100"
================================================
FILE: scripts/Docker - All.cmd
================================================
cd ..
dotnet build --nologo -p:TargetArch=linux-musl-x64
docker-compose up --force-recreate --build login master world
PAUSE
================================================
FILE: scripts/Docker - LoginServer.cmd
================================================
cd ..
dotnet build --nologo -p:TargetArch=linux-musl-x64
docker-compose up --force-recreate --build login
PAUSE
================================================
FILE: scripts/Docker - MasterServer.cmd
================================================
cd ..
dotnet build --nologo -p:TargetArch=linux-musl-x64
docker-compose up --force-recreate --build master
PAUSE
================================================
FILE: scripts/Docker - Postgres.cmd
================================================
cd ..
docker-compose up db
PAUSE
================================================
FILE: scripts/Docker - ReverseProxy.cmd
================================================
cd ..
docker-compose pull
dotnet build --nologo -p:TargetArch=linux-musl-x64
docker-compose up --force-recreate --build reverse-proxy
PAUSE
================================================
FILE: scripts/Docker - Shutdown.cmd
================================================
cd ..
docker-compose down
PAUSE
================================================
FILE: scripts/Docker - WorldServer.cmd
================================================
cd ..
dotnet build --nologo -p:TargetArch=linux-musl-x64
docker-compose up --force-recreate --build world
PAUSE
================================================
FILE: scripts/LoginServer.cmd
================================================
cd ..\build\net8.0\
start /d "." dotnet NosCore.LoginServer.dll
================================================
FILE: scripts/MasterServer.cmd
================================================
cd ..\build\net8.0\
start /d "." dotnet NosCore.MasterServer.dll
================================================
FILE: scripts/Parser.cmd
================================================
cd ..\build\net8.0\
start /d "." dotnet NosCore.Parser.dll
================================================
FILE: scripts/WorldServer.cmd
================================================
cd ..\build\net8.0\
start /d "." dotnet NosCore.WorldServer.dll
================================================
FILE: scripts/docker-publish.sh
================================================
#!/usr/bin/env bash
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
dotnet test --runtime linux-musl-x64 --filter TestCategory=SomethingAsDotnetBuildDoesntWorkAnymore
DOCKER_ENV=''
DOCKER_TAG=''
export PATH=$PATH:$HOME/.local/bin
case "$TRAVIS_BRANCH" in
"master")
DOCKER_ENV=production
DOCKER_TAG=latest
;;
esac
docker build -f ./deploy/Dockerfile-world -t noscore.worldserver:$DOCKER_TAG --no-cache .
docker tag noscore.worldserver:$DOCKER_TAG noscoreio/noscore.worldserver:$DOCKER_TAG
docker push noscoreio/noscore.worldserver:$DOCKER_TAG
docker build -f ./deploy/Dockerfile-login -t noscore.loginserver:$DOCKER_TAG --no-cache .
docker tag noscore.loginserver:$DOCKER_TAG noscoreio/noscore.loginserver:$DOCKER_TAG
docker push noscoreio/noscore.loginserver:$DOCKER_TAG
docker build -f ./deploy/Dockerfile-master -t noscore.masterserver:$DOCKER_TAG --no-cache .
docker tag noscore.masterserver:$DOCKER_TAG noscoreio/noscore.masterserver:$DOCKER_TAG
docker push noscoreio/noscore.masterserver:$DOCKER_TAG
================================================
FILE: src/NosCore.Core/AuthorizeRoleAttribute.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using Microsoft.AspNetCore.Authorization;
using NosCore.Shared.Enumerations;
using System;
using System.Linq;
namespace NosCore.Core
{
public class AuthorizeRoleAttribute : AuthorizeAttribute
{
public AuthorizeRoleAttribute(AuthorityType allowedRole)
{
var enums = Enum.GetValues(typeof(AuthorityType)).Cast<AuthorityType>().ToList()
.Where(s => s >= allowedRole);
Roles = string.Join(",", enums.ToArray());
}
}
}
================================================
FILE: src/NosCore.Core/Channel.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Configuration;
using NosCore.Shared.Enumerations;
namespace NosCore.Core
{
public class Channel
{
public WebApiConfiguration? MasterCommunication { get; set; }
public required string ClientName { get; set; }
public ServerType ClientType { get; set; }
public ushort Port { get; set; }
public byte ServerId { get; set; }
public long ChannelId { get; set; }
public string? DisplayHost { get; set; }
public int? DisplayPort { get; set; }
public bool StartInMaintenance { get; set; }
public required string Host { get; set; }
public int ConnectedAccountLimit { get; set; }
}
}
================================================
FILE: src/NosCore.Core/ChannelInfo.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NodaTime;
using NosCore.Shared.Enumerations;
namespace NosCore.Core
{
public class ChannelInfo
{
public long Id { get; set; }
public string? Name { get; set; }
public string Host { get; set; } = null!;
public ushort Port { get; set; }
public string? DisplayHost { get; set; }
public ushort? DisplayPort { get; set; }
public int ConnectedAccountLimit { get; set; }
public Instant LastPing { get; set; }
public ServerType Type { get; set; }
public bool IsMaintenance { get; set; }
public byte ServerId { get; set; }
}
}
================================================
FILE: src/NosCore.Core/Concurrency/AsyncLock.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System;
using System.Threading;
using System.Threading.Tasks;
namespace NosCore.Core.Concurrency
{
// Thin async-disposable wrapper around SemaphoreSlim(1, 1). Use with `await using`
// so the lock is always released, even on exception. Replaces the manual
// WaitAsync()/Release() pattern that requires a try/finally at every call site.
public sealed class AsyncLock : IDisposable
{
private readonly SemaphoreSlim _semaphore = new(1, 1);
public async ValueTask<Releaser> AcquireAsync(CancellationToken cancellationToken = default)
{
await _semaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
return new Releaser(_semaphore);
}
public void Dispose() => _semaphore.Dispose();
public readonly struct Releaser(SemaphoreSlim semaphore) : IDisposable
{
public void Dispose() => semaphore.Release();
}
}
}
================================================
FILE: src/NosCore.Core/Configuration/LoginConfiguration.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.ClientPackets.Login;
using NosCore.Shared.Configuration;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Core.Configuration
{
public class LoginConfiguration : ServerConfiguration
{
[Required]
public WebApiConfiguration MasterCommunication { get; set; } = null!;
[Required]
public SqlConnectionConfiguration Database { get; set; } = null!;
public ClientVersionSubPacket? ClientVersion { get; set; }
public string? Md5String { get; set; }
public bool EnforceNewAuth { get; set; }
}
}
================================================
FILE: src/NosCore.Core/Configuration/WorldConfiguration.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Data.Enumerations;
using NosCore.Shared.Configuration;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Core.Configuration
{
public class WorldConfiguration : ServerConfiguration
{
[Required]
public WebApiConfiguration MasterCommunication { get; set; } = null!;
[Required]
public SqlConnectionConfiguration Database { get; set; } = null!;
[Range(1, short.MaxValue)]
public short ConnectedAccountLimit { get; set; }
public byte ServerId { get; set; }
public bool WorldInformation { get; set; }
public bool SceneOnCreate { get; set; }
public string? DisplayHost { get; set; }
public int? DisplayPort { get; set; }
public bool StartInMaintenance { get; set; }
[Required]
public string? ServerName { get; set; }
#pragma warning disable CA2227 // Collection properties should be read only
public FeatureFlags FeatureFlags { get; set; } = new();
#pragma warning restore CA2227 // Collection properties should be read only
public short MaxItemAmount { get; set; }
public byte BackpackSize { get; set; }
public long MaxGoldAmount { get; set; }
public long MaxBankGoldAmount { get; set; }
public int MaxSpPoints { get; set; }
public int MaxAdditionalSpPoints { get; set; }
public bool AllClassAvailableOnCreate { get; set; }
#pragma warning disable CA2227 // Collection properties should be read only
public Dictionary<string, Dictionary<StarterOrigin, List<BasicEquipment>>> BasicEquipments { get; set; } = new();
public Dictionary<string, Dictionary<StarterOrigin, List<short>>> BasicSkills { get; set; } = new();
#pragma warning restore CA2227 // Collection properties should be read only
}
public enum StarterOrigin : byte
{
CreateAndUpgrade,
Create56,
Create80
}
public class BasicEquipment
{
public short VNum { get; set; }
public short Amount { get; set; }
public NoscorePocketType NoscorePocketType { get; set; }
public sbyte Rare { get; set; }
public byte Upgrade { get; set; }
}
}
================================================
FILE: src/NosCore.Core/ConfigureJwtBearerOptions.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using NosCore.Shared.Authentication;
using NosCore.Shared.Configuration;
using System;
using System.Text;
namespace NosCore.Core
{
public class ConfigureJwtBearerOptions(IOptions<WebApiConfiguration> webApiConfiguration, IHasher hasher)
: IConfigureNamedOptions<JwtBearerOptions>
{
public void Configure(string? name, JwtBearerOptions options)
{
if (options == null)
{
throw new ArgumentNullException(nameof(options));
}
var password = hasher.Hash(webApiConfiguration.Value.Password!, webApiConfiguration.Value.Salt);
if (name == JwtBearerDefaults.AuthenticationScheme)
{
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.TokenValidationParameters = new TokenValidationParameters
{
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.Default.GetBytes(password)),
ValidAudience = "Audience",
ValidIssuer = "Issuer",
ValidateIssuerSigningKey = true,
ValidateLifetime = true
};
}
}
public void Configure(JwtBearerOptions options)
{
Configure(JwtBearerDefaults.AuthenticationScheme, options);
}
}
}
================================================
FILE: src/NosCore.Core/ConnectionInfo.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Core
{
public class ConnectionInfo
{
public string? Token { get; set; }
public Channel? ChannelInfo { get; set; }
}
}
================================================
FILE: src/NosCore.Core/Encryption/BcryptEncryption.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Authentication;
using System;
namespace NosCore.Core.Encryption
{
public class BcryptHasher : IHasher
{
public string Hash(string password, string? salt)
{
return BCrypt.Net.BCrypt.HashPassword(password, salt);
}
public string Hash(string password) => throw new NotImplementedException();
}
}
================================================
FILE: src/NosCore.Core/Encryption/Pbkdf2Hasher.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Authentication;
using System;
using System.Globalization;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace NosCore.Core.Encryption
{
public class Pbkdf2Hasher : IHasher
{
public string Hash(string inputString, string? salt)
{
var saltBytes = Convert.FromBase64String(Convert.ToBase64String(Encoding.Default.GetBytes(salt ?? "")));
var hashBytes = Rfc2898DeriveBytes.Pbkdf2(
Encoding.Default.GetBytes(inputString),
saltBytes,
150000,
HashAlgorithmName.SHA512,
64);
return string.Concat(hashBytes.Select(item => item.ToString("x2", CultureInfo.CurrentCulture)));
}
public string Hash(string password) => throw new NotImplementedException();
}
}
================================================
FILE: src/NosCore.Core/Encryption/Sha512Hasher.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Authentication;
using System.Globalization;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
namespace NosCore.Core.Encryption
{
public class Sha512Hasher : IHasher
{
public string Hash(string password, string? salt)
{
using var hash = SHA512.Create();
return string.Concat(hash.ComputeHash(Encoding.Default.GetBytes(salt ?? "" + password))
.Select(item => item.ToString("x2", CultureInfo.CurrentCulture)));
}
public string Hash(string password) => Hash(password, null);
}
}
================================================
FILE: src/NosCore.Core/Extensions/TypeExtension.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System;
using System.Collections.Concurrent;
using System.Linq;
using System.Reflection.Emit;
namespace NosCore.Core.Extensions
{
public static class TypeExtension
{
private static readonly ConcurrentDictionary<Type, Func<object>> Constructors = new();
public static Func<TBase> GetConstructorDelegate<TBase>(this Type type)
{
return (Func<TBase>)GetConstructorDelegate(type, typeof(Func<TBase>));
}
public static Func<object> GetConstructorDelegate(this Type type)
{
return (Func<object>)GetConstructorDelegate(type, typeof(Func<object>));
}
public static Delegate GetConstructorDelegate(this Type type, Type delegateType)
{
if (type == null)
{
throw new ArgumentNullException(nameof(type));
}
if (delegateType == null)
{
throw new ArgumentNullException(nameof(delegateType));
}
var genericArguments = delegateType.GetGenericArguments();
var argTypes = genericArguments.Length > 1 ? genericArguments.Take(genericArguments.Length - 1).ToArray()
: Type.EmptyTypes;
var constructor = type.GetConstructor(argTypes);
if (constructor == null)
{
if (argTypes.Length == 0)
{
throw new InvalidProgramException(
$"Type '{type.Name}' doesn't have a parameterless constructor.");
}
throw new InvalidProgramException($"Type '{type.Name}' doesn't have the requested constructor.");
}
var dynamicMethod = new DynamicMethod("DM$_" + type.Name, type, argTypes, type);
var ilGen = dynamicMethod.GetILGenerator();
for (var i = 0; i < argTypes.Length; i++)
{
ilGen.Emit(OpCodes.Ldarg, i);
}
ilGen.Emit(OpCodes.Newobj, constructor);
ilGen.Emit(OpCodes.Ret);
return dynamicMethod.CreateDelegate(delegateType);
}
public static T CreateInstance<T>(this Type type)
{
if (Constructors.TryGetValue(type, out var constructor))
{
return (T)constructor();
}
constructor = type.GetConstructorDelegate();
Constructors.TryAdd(type, constructor);
return (T)constructor();
}
}
}
================================================
FILE: src/NosCore.Core/I18N/GameLanguageLocalizer.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using Microsoft.Extensions.Localization;
using NosCore.Data.Enumerations.I18N;
using NosCore.Shared.Enumerations;
using NosCore.Shared.I18N;
using System.Collections.Generic;
using System.Globalization;
namespace NosCore.Core.I18N
{
public class GameLanguageLocalizer(ILogLanguageLocalizer<LanguageKey> stringLocalizer) : IGameLanguageLocalizer
{
public LocalizedString this[LanguageKey key, RegionType region]
{
get
{
var currentUi = CultureInfo.CurrentUICulture;
var current = CultureInfo.CurrentCulture;
CultureInfo.CurrentUICulture = new CultureInfo(region.ToString());
CultureInfo.CurrentCulture = new CultureInfo(region.ToString());
var result = stringLocalizer[key];
CultureInfo.CurrentUICulture = currentUi;
CultureInfo.CurrentCulture = current;
return result;
}
}
public LocalizedString this[LanguageKey key, RegionType region, params object[] arguments]
{
get
{
var currentUi = CultureInfo.CurrentUICulture;
var current = CultureInfo.CurrentCulture;
CultureInfo.CurrentUICulture = new CultureInfo(region.ToString());
CultureInfo.CurrentCulture = new CultureInfo(region.ToString());
var result = stringLocalizer[key, arguments];
CultureInfo.CurrentUICulture = currentUi;
CultureInfo.CurrentCulture = current;
return result;
}
}
public IEnumerable<LocalizedString> GetAllStrings() => stringLocalizer.GetAllStrings();
}
}
================================================
FILE: src/NosCore.Core/I18N/IGameLanguageLocalizer.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using Microsoft.Extensions.Localization;
using NosCore.Data.Enumerations.I18N;
using NosCore.Shared.Enumerations;
using NosCore.Shared.I18N;
namespace NosCore.Core.I18N;
public interface IGameLanguageLocalizer : ILogLanguageLocalizer
{
LocalizedString this[LanguageKey key, RegionType region, params object[] arguments] { get; }
LocalizedString this[LanguageKey key, RegionType region] { get; }
}
================================================
FILE: src/NosCore.Core/NosCore.Core.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<TieredCompilation>true</TieredCompilation>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>..\..\build\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>..\..\build\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Remove="HttpClients\**" />
<EmbeddedResource Remove="HttpClients\**" />
<None Remove="HttpClients\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac" />
<PackageReference Include="BCrypt.Net-Core" />
<PackageReference Include="FastExpressionCompiler" />
<PackageReference Include="JsonPatch.Net" />
<PackageReference Include="Mapster" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" />
<PackageReference Include="Microsoft.Extensions.Http" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
<PackageReference Include="NosCore.Dao" />
<PackageReference Include="NosCore.Networking" />
<PackageReference Include="NosCore.PathFinder" />
<PackageReference Include="NosCore.Shared" />
<PackageReference Include="Serilog" />
<PackageReference Include="Polly" />
<PackageReference Include="Serilog.Extensions.Hosting" />
<PackageReference Include="Serilog.Settings.Configuration" />
<PackageReference Include="Serilog.Sinks.Console" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" />
<PackageReference Include="TwoFactorAuth.Net" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NosCore.Analyzers">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NosCore.Data\NosCore.Data.csproj" />
</ItemGroup>
</Project>
================================================
FILE: src/NosCore.Core/Observability/NosCoreTelemetry.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System.Diagnostics;
using System.Diagnostics.Metrics;
using Microsoft.Extensions.DependencyInjection;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
namespace NosCore.Core.Observability
{
public static class NosCoreTelemetry
{
public const string ActivitySourceName = "NosCore";
public const string MeterName = "NosCore";
public static readonly ActivitySource ActivitySource = new(ActivitySourceName);
public static readonly Meter Meter = new(MeterName);
// Configured via standard OTEL env vars: OTEL_SERVICE_NAME,
// OTEL_RESOURCE_ATTRIBUTES, OTEL_EXPORTER_OTLP_ENDPOINT,
// OTEL_EXPORTER_OTLP_PROTOCOL.
public static IServiceCollection AddNosCoreTelemetry(this IServiceCollection services, string defaultServiceName, bool includeAspNetCore = false)
{
services.AddOpenTelemetry()
.ConfigureResource(rb => rb.AddService(defaultServiceName))
.WithTracing(t =>
{
t.AddSource(ActivitySourceName);
t.AddHttpClientInstrumentation();
t.AddEntityFrameworkCoreInstrumentation();
if (includeAspNetCore)
{
t.AddAspNetCoreInstrumentation();
}
t.AddOtlpExporter();
})
.WithMetrics(m =>
{
m.AddMeter(MeterName);
m.AddRuntimeInstrumentation();
m.AddHttpClientInstrumentation();
if (includeAspNetCore)
{
m.AddAspNetCoreInstrumentation();
}
m.AddOtlpExporter();
});
return services;
}
}
}
================================================
FILE: src/NosCore.Core/Services/IdService/IIdService.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System.Collections.Concurrent;
namespace NosCore.Core.Services.IdService
{
public interface IIdService<T>
{
ConcurrentDictionary<long, T> Items { get; }
long GetNextId();
}
}
================================================
FILE: src/NosCore.Core/Services/IdService/IdService.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System.Collections.Concurrent;
namespace NosCore.Core.Services.IdService
{
public class IdService<T>(long firstId) : IIdService<T>
{
public ConcurrentDictionary<long, T> Items { get; } = new();
public long GetNextId()
{
return ++firstId;
}
}
}
================================================
FILE: src/NosCore.Core/SessionFactory.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System;
using System.Collections.Concurrent;
namespace NosCore.Core
{
public sealed class SessionFactory
{
private static readonly Lazy<SessionFactory> Lazy = new(() => new SessionFactory());
private SessionFactory()
{
AuthCodes = new ConcurrentDictionary<string, string>();
ReadyForAuth = new ConcurrentDictionary<string, long>();
}
public static SessionFactory Instance => Lazy.Value;
public ConcurrentDictionary<string, string> AuthCodes { get; }
public ConcurrentDictionary<string, long> ReadyForAuth { get; }
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ChangeChannelPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$ChangeChannel", AuthorityType.GameMaster)]
public class ChangeChannelPacket : CommandPacket
{
[PacketIndex(0)]
public int ChannelId { get; set; }
public override string Help()
{
return "$ChangeChannel ChannelId";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ChangeClassPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$ChangeClass", AuthorityType.GameMaster)]
public class ChangeClassPacket : CommandPacket
{
[PacketIndex(0)]
public CharacterClassType ClassType { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$ChangeClass ClassType [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ChangeGenderPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$ChangeGender", AuthorityType.GameMaster)]
public class ChangeGenderPacket : CommandPacket
{
public override string Help()
{
return "$ChangeGender";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ClearInventoryPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$ClearInventory", AuthorityType.Moderator)]
public class ClearInventoryPacket : CommandPacket
{
public override string Help()
{
return "$ClearInventory";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/CommandPacketHeaderAttribute.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Packets.Enumerations;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
public class CommandPacketHeaderAttribute(string identification, AuthorityType authority) : PacketHeaderAttribute(identification, Scope.InGame)
{
public AuthorityType Authority { get; } = authority;
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/CreateItemPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$CreateItem", AuthorityType.GameMaster)]
public class CreateItemPacket : CommandPacket
{
[PacketIndex(0)]
public short VNum { get; set; }
[PacketIndex(1)]
public short? DesignOrAmount { get; set; }
[PacketIndex(2)]
public byte? Upgrade { get; set; }
public override string Help()
{
return "$CreateItem VNum [DesignOrAmount] [Upgrade]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/EffectCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Effect", AuthorityType.GameMaster)]
public class EffectCommandPacket : CommandPacket
{
[PacketIndex(0)]
public int EffectId { get; set; }
public override string Help()
{
return "$Effect EffectId";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/EntryPointPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets;
using NosCore.Packets.Attributes;
using NosCore.Packets.Enumerations;
namespace NosCore.Data.CommandPackets
{
[PacketHeader("EntryPoint", Scope.OnCharacterScreen)]
public class EntryPointPacket : PacketBase
{
[PacketIndex(1)]
public required string Name { get; set; }
[PacketIndex(2)]
public string? Password { get; set; }
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/FlCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Packets.Enumerations;
namespace NosCore.Data.CommandPackets
{
[PacketHeader("$fl", Scope.InTrade | Scope.InGame)]
public class FlCommandPacket : CommandPacket
{
[PacketIndex(0)]
public string? CharacterName { get; set; }
public override string Help()
{
return "$fl [CharacterName]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/GiftPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Gift", AuthorityType.GameMaster)]
public class GiftPacket : CommandPacket
{
[PacketIndex(0)]
public short VNum { get; set; }
[PacketIndex(1)]
public byte Amount { get; set; }
[PacketIndex(2)]
public sbyte Rare { get; set; }
[PacketIndex(3)]
public byte Upgrade { get; set; }
[PacketIndex(4)]
public string? CharacterName { get; set; }
public override string Help()
{
return "$Gift VNum Amount Rare Upgrade [CharacterName]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/HelpPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Help", AuthorityType.GameMaster)]
public class HelpPacket : CommandPacket
{
public override string Help()
{
return "$Help";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ICommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using JetBrains.Annotations;
using NosCore.Packets;
using NosCore.Packets.Interfaces;
namespace NosCore.Data.CommandPackets
{
public interface ICommandPacket : IPacket
{
[UsedImplicitly]
string Help();
}
public abstract class CommandPacket : PacketBase, ICommandPacket
{
public abstract string Help();
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/InvisibleCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Invisible", AuthorityType.GameMaster)]
public class InvisibleCommandPacket : CommandPacket
{
public override string Help()
{
return "$Invisible";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/KickPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Kick", AuthorityType.Moderator)]
public class KickPacket : CommandPacket
{
[PacketIndex(0)]
public string? Name { get; set; }
public override string Help()
{
return "$Kick [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/KillPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Kill", AuthorityType.GameMaster)]
public class KillPacket : CommandPacket
{
public override string Help()
{
return "$Kill";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/PositionPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Position", AuthorityType.GameMaster)]
public class PositionPacket : CommandPacket
{
public override string Help()
{
return "$Position";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetBankGoldPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetBankGold", AuthorityType.GameMaster)]
public class SetBankGoldPacket : CommandPacket
{
[PacketIndex(0)]
public long BankGold { get; set; }
public override string Help()
{
return "$SetBankGold Amount";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetGoldCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetGold", AuthorityType.GameMaster)]
[PacketHeaderAlias("$Gold")]
public class SetGoldCommandPacket : CommandPacket
{
[PacketIndex(0)]
[Range(1, 1000000000)]
public long Gold { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$Gold Gold [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetHairColorPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetHairColor", AuthorityType.GameMaster)]
public class SetHairColorPacket : CommandPacket
{
[PacketIndex(0)]
public byte Color { get; set; }
public override string Help()
{
return "$SetHairColor Color";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetHairStylePacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetHairStyle", AuthorityType.GameMaster)]
public class SetHairStylePacket : CommandPacket
{
[PacketIndex(0)]
public byte Style { get; set; }
public override string Help()
{
return "$SetHairStyle Style";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetHeroLevelCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetHeroLevel", AuthorityType.GameMaster)]
[PacketHeaderAlias("$HeroLvl")]
public class SetHeroLevelCommandPacket : CommandPacket
{
[PacketIndex(0)]
[Range(1, byte.MaxValue)]
public byte Level { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$SetHeroLevel Level [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetHeroXpPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetHeroXp", AuthorityType.GameMaster)]
public class SetHeroXpPacket : CommandPacket
{
[PacketIndex(0)]
public long HeroXp { get; set; }
public override string Help()
{
return "$SetHeroXp Amount";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetJobLevelCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetJobLevel", AuthorityType.GameMaster)]
[PacketHeaderAlias("$JLvl")]
public class SetJobLevelCommandPacket : CommandPacket
{
[PacketIndex(0)]
[Range(1, byte.MaxValue)]
public byte Level { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$SetJobLevel Level [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetJobLevelXpPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetJobLevelXp", AuthorityType.GameMaster)]
public class SetJobLevelXpPacket : CommandPacket
{
[PacketIndex(0)]
public long JobLevelXp { get; set; }
public override string Help()
{
return "$SetJobLevelXp Amount";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetLevelCommandPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetLevel", AuthorityType.GameMaster)]
[PacketHeaderAlias("$Lvl")]
public class SetLevelCommandPacket : CommandPacket
{
[PacketIndex(0)]
[Range(1, byte.MaxValue)]
public byte Level { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$SetLevel Level [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetMaintenancePacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetMaintenance", AuthorityType.GameMaster)]
public class SetMaintenancePacket : CommandPacket
{
[PacketIndex(0)]
public bool IsGlobal { get; set; }
[PacketIndex(1)]
public bool MaintenanceMode { get; set; }
public override string Help()
{
return "$SetMaintenance IsGlobal MaintenanceMode";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetReputationPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetReputation", AuthorityType.GameMaster)]
[PacketHeaderAlias("$Reputation")]
public class SetReputationPacket : CommandPacket
{
[PacketIndex(0)]
[Range(0, long.MaxValue)]
public long Reputation { get; set; }
[PacketIndex(1)]
public string? Name { get; set; }
public override string Help()
{
return "$SetReputation Reputation [Name]";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetSpAdditionPointPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetSpAdditionPoint", AuthorityType.GameMaster)]
public class SetSpAdditionPointPacket : CommandPacket
{
[PacketIndex(0)]
public int SpAdditionPoint { get; set; }
public override string Help()
{
return "$SetSpAdditionPoint Value";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SetSpPointPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$SetSpPoint", AuthorityType.GameMaster)]
public class SetSpPointPacket : CommandPacket
{
[PacketIndex(0)]
public int SpPoint { get; set; }
public override string Help()
{
return "$SetSpPoint Value";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ShoutHerePacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$ShoutHere", AuthorityType.Moderator)]
public class ShoutHerePacket : CommandPacket
{
[PacketIndex(0)]
public string? Message { get; set; }
public override string Help()
{
return "$ShoutHere Message";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/ShoutPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Shout", AuthorityType.Moderator)]
public class ShoutPacket : CommandPacket
{
[PacketIndex(0)]
public string? Message { get; set; }
public override string Help()
{
return "$Shout Message";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SizePacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Size", AuthorityType.GameMaster)]
public class SizePacket : CommandPacket
{
[PacketIndex(0)]
public VisualType VisualType { get; set; }
[PacketIndex(1)]
public long VisualId { get; set; }
[PacketIndex(2)]
public byte Size { get; set; }
public override string Help()
{
return "$Size VisualType VisualId Size";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/SpeedPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Speed", AuthorityType.GameMaster)]
public class SpeedPacket : CommandPacket
{
[PacketIndex(0)]
public byte Speed { get; set; }
public override string Help()
{
return "$Speed Speed";
}
}
}
================================================
FILE: src/NosCore.Data/CommandPackets/TeleportPacket.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Packets.Attributes;
using NosCore.Shared.Enumerations;
namespace NosCore.Data.CommandPackets
{
[CommandPacketHeader("$Teleport", AuthorityType.GameMaster)]
public class TeleportPacket : CommandPacket
{
[PacketIndex(0)]
public string? TeleportArgument { get; set; }
[PacketIndex(1)]
public short? MapX { get; set; }
[PacketIndex(2)]
public short? MapY { get; set; }
public override string Help()
{
return "$Teleport TeleportArgument [X] [Y]";
}
}
}
================================================
FILE: src/NosCore.Data/DataAttributes/StaticMetaDataAttribute.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Data.Enumerations.I18N;
using System;
namespace NosCore.Data.DataAttributes
{
public class StaticMetaDataAttribute : Attribute
{
public LogLanguageKey LoadedMessage { get; set; }
public LogLanguageKey EmptyMessage { get; set; }
}
}
================================================
FILE: src/NosCore.Data/Dto/I18NFromAttribute.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System;
namespace NosCore.Data.Dto
{
public class I18NFromAttribute(Type type) : Attribute
{
public Type Type { get; set; } = type;
}
}
================================================
FILE: src/NosCore.Data/Dto/I18NString.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
using System.Collections.Generic;
namespace NosCore.Data.Dto
{
public class I18NString : Dictionary<RegionType, string>
{
public I18NString()
{
Add(RegionType.EN, "NONAME");
Add(RegionType.DE, "NONAME");
Add(RegionType.FR, "NONAME");
Add(RegionType.IT, "NONAME");
Add(RegionType.PL, "NONAME");
Add(RegionType.ES, "NONAME");
Add(RegionType.CS, "NONAME");
Add(RegionType.TR, "NONAME");
Add(RegionType.RU, "NONAME");
}
}
}
================================================
FILE: src/NosCore.Data/Dto/IDTO.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Dto
{
public interface IDto
{
}
}
================================================
FILE: src/NosCore.Data/Dto/II18NDto.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NosCore.Shared.Enumerations;
namespace NosCore.Data.Dto
{
public interface II18NDto : IDto
{
string Key { get; set; }
RegionType RegionType { get; set; }
string Text { get; set; }
}
}
================================================
FILE: src/NosCore.Data/Dto/IItemInstanceDto.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using NodaTime;
using System;
using System.ComponentModel.DataAnnotations;
namespace NosCore.Data.Dto
{
public interface IItemInstanceDto : IDto
{
[Key]
Guid Id { get; set; }
short Amount { get; set; }
long? BoundCharacterId { get; set; }
short Design { get; set; }
int DurabilityPoint { get; set; }
Instant? ItemDeleteTime { get; set; }
short ItemVNum { get; set; }
short Rare { get; set; }
byte Upgrade { get; set; }
}
}
================================================
FILE: src/NosCore.Data/Dto/IStaticDto.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Dto
{
public interface IStaticDto : IDto
{
}
}
================================================
FILE: src/NosCore.Data/Dto/StaticDtoExtension.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using FastMember;
using NosCore.Shared.Enumerations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace NosCore.Data.Dto
{
public static class StaticDtoExtension
{
public static IDictionary<PropertyInfo, Tuple<PropertyInfo, Type>> GetI18NProperties(Type staticDto)
{
var dic = new Dictionary<PropertyInfo, Tuple<PropertyInfo, Type>>();
var properties = staticDto.GetProperties();
foreach (var prop in properties.Where(p => typeof(I18NString).IsAssignableFrom(p.PropertyType)))
{
var key = properties.FirstOrDefault(s => s.Name == $"{prop.Name}I18NKey");
if (key == null)
{
continue;
}
dic.Add(prop,
new Tuple<PropertyInfo, Type>(key,
prop.GetCustomAttribute<I18NFromAttribute>()!.Type));
}
return dic;
}
public static void InjectI18N(this IStaticDto staticDto,
IDictionary<PropertyInfo, Tuple<PropertyInfo, Type>> propertyInfos,
IDictionary<Type, Dictionary<string, Dictionary<RegionType, II18NDto>>> langDictionary, Array regions,
TypeAccessor accessor)
{
foreach (var prop in propertyInfos)
{
var key = accessor[staticDto, prop.Value.Item1.Name]?.ToString() ?? "NONAME";
var dic = new I18NString();
foreach (var region in regions)
{
if (!langDictionary[prop.Value.Item2].ContainsKey(key))
{
continue;
}
if (langDictionary[prop.Value.Item2][key].ContainsKey((RegionType)region!))
{
dic[(RegionType)region] = langDictionary[prop.Value.Item2][key][(RegionType)region].Text;
}
}
accessor[staticDto, prop.Key.Name] = dic;
}
}
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Audit/AuditLogType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Audit
{
public enum AuditLogType
{
AccountCreation,
CharacterCreation,
EmailUpdate
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Battle/TargetHitType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Battle
{
public enum TargetHitType : byte
{
SingleTargetHit = 0,
SingleTargetHitCombo = 1,
SingleAoeTargetHit = 2,
AoeTargetHit = 3,
ZoneHit = 4,
SpecialZoneHit = 5
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarEquipmentType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Bazaar
{
public enum BazaarEquipmentType
{
Mask = 2,
Hat = 1,
CostumeHat = 6,
CostumeSuit = 5,
Gloves = 3,
Boots = 4
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarJeweleryType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Bazaar
{
public enum BazaarJeweleryType
{
Ring = 2,
Necklace = 1,
Amulet = 5,
Bracelet = 3,
Fairy = 4,
Box = 5
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarMainType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Bazaar
{
public enum BazaarMainType
{
Main = 1,
Upgrade = 2,
Production = 3,
Special = 4,
Potion = 5,
Event = 6
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarUsableType.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
namespace NosCore.Data.Enumerations.Bazaar
{
public enum BazaarUsableType
{
Food = 1,
Snack = 2,
Magical = 3,
Part = 4,
Teacher = 5,
Sell = 6
}
}
================================================
FILE: src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs
================================================
// __ _ __ __ ___ __ ___ ___
// | \| |/__\ /' _/ / _//__\| _ \ __|
// | | ' | \/ |`._`.| \_| \/ | v / _|
// |_|\__|\__/ |___/ \__/\__/|_|_\___|
//
using System.Diagnostics.CodeAnalysis;
namespace NosCore.Data.Enumerations.Buff
{
[SuppressMessage("ReSharper", "UnusedMember.Global")]
public class AdditionalTypes : BCardType
{
// 81-??
public enum AbsorbedSpirit : byte
{
ApplyEffectIfPresent = 11,
ApplyEffectIfNotPresent = 12,
ResistForcedMovement = 21,
ResistForcedMovementNegated = 22,
MagicCooldownIncreased = 31,
MagicCooldownDecreased = 32
}
public enum Absorption : byte
{
AllAttackIncreased = 11,
AllAttackDecreased = 12,
MeleeAttackIncreased = 21,
MeleeAttacklDecreased = 22,
RangedAttackIncreased = 31,
RangedAttackDecreased = 32,
MagicalAttackIncreased = 41,
MagicalAttacksDecreased = 42
}
public enum AbsorptionAndPowerSkill : byte
{
AddDamageToHp = 11,
RemoveDamnageFromHp = 12,
// Unknown = 21, Unknown2 = 22, Unknown3 = 31, Unknown4 = 32,
DamageIncreasedSkill = 41,
DamageDecreasedSkill = 42,
CriticalIncreasedSkill = 51,
CriticalDecreasedSkill = 52
}
public enum AngerSkill : byte
{
AttackInRangeNotLocation = 11,
AttackInRangeNotLocationNegated = 12,
ReduceEnemyHpChance = 21,
ReduceEnemyHpByDamageChance = 22,
BlockGoodEffect = 31,
BlockGoodEffectNegated = 32,
OnlyNormalAttacks = 41,
OnlyNormalAttacksNegated = 42
}
public enum ArenaCamera : byte
{
CallParticipant1 = 11,
CallParticipant2 =
12, // propably we will need to fix "Their" Mistake soo CallParticipant1 = 11 and 12, CallParticipant2 = 21 and 22 :D
CallParticipant2Negated = 21,
CallParticipant2NegatedNegated = 22,
CallParticipant3 = 31,
CallParticipant3Negated = 32,
SwitchView = 41,
SwitchViewNegated = 42,
SeeHiddenAllies = 51,
SeeHiddenAlliesNegated = 52
}
public enum AttackPower : byte
{
AllAttacksIncreased = 11,
AllAttacksDecreased = 12,
MeleeAttacksIncreased = 21,
MeleeAttacksDecreased = 22,
RangedAttacksIncreased = 31,
RangedAttacksDecreased = 32,
MagicalAttacksIncreased = 41,
MagicalAttacksDecreased = 42,
AttackLevelIncreased = 51,
AttackLevelDecreased = 52
}
public enum BearSpirit : byte
{
IncreaseMaximumMp = 11,
DecreaseMaximumMp = 12,
// Unknown = 21, Unknown2 = 22,
IncreaseMaximumHp = 31,
DecreaseMaximumHp = 32
}
public enum Block : byte
{
ChanceAllIncreased = 11,
ChanceAllDecreased = 12,
ChanceMeleeIncreased = 21,
ChanceMeleeDecreased = 22,
ChanceRangedIncreased = 31,
ChanceRangedDecreased = 32,
ChanceMagicalIncreased = 41,
ChanceMagicalDecreased = 42
}
public enum BossMonstersSkill : byte
{
InflictDamageAfter = 11,
InflictDamageAfterNegated = 12
}
public enum Buff : byte
{
ChanceCausing = 11,
ChanceRemoving = 12,
PreventingBadEffect = 21,
PreventingBadEffectNegated = 22,
NearbyObjectsAboveLevel = 31,
NearbyObjectsBelowLevel = 32,
EffectResistance = 41,
EffectResistanceNegated = 42,
CancelGroupOfEffects = 51,
CounteractPoison = 52
}
public enum CalculatingLevel : byte
{
CalculatedAttackLevel = 11,
CalculatedAttackLevelNegated = 12,
CalculatedDefenceLevel = 21,
CalculatedDefenceLevelNegated = 22
}
public enum Capture : byte
{
CaptureAnimal = 11,
CaptureAnimalNegated = 12
}
public enum Casting : byte
{
EffectDurationIncreased = 11,
EffectDurationDecreased = 12,
ManaForSkillsIncreased = 21,
ManaForSkillsDecreased = 22,
AttackSpeedIncreased = 31,
AttackSpeedDecreased = 32,
CastingSkillFailed = 41,
CastingSkillFailedNegated = 42,
InterruptCasting = 51,
InterruptCastingNegated = 52
}
public enum Count : byte
{
Summon = 11,
SummonChance = 12
}
public enum Critical : byte
{
InflictingIncreased = 11,
InflictingReduced = 12,
DamageIncreased = 21,
DamageIncreasedInflictingReduced = 22,
DamageIncreasingPropability = 31,
DamageReducingPropability = 32,
ReceivingIncreased = 41,
ReceivingDecreased = 42,
DamageFromCriticalIncreased = 51,
DamageFromCriticalDecreased = 52
}
public enum Damage : byte
{
DamageIncreased = 11,
DamageDecreased = 12,
MeleeIncreased = 21,
MeleeDecreased = 22,
RangedIncreased = 31,
RangedDecreased = 32,
MagicalIncreased = 41,
MagicalDecreased = 42
}
public enum DamageConvertingSkill : byte
{
TransferInflictedDamage = 11,
TransferInflictedDamageNegated = 12,
IncreaseDamageTransfered = 21,
DecreaseDamageTransfered = 22,
HpRecoveryIncreased = 31,
HpRecoveryDecreased = 32,
AdditionalDamageCombo = 41,
AdditionalDamageComboNegated = 42,
ReflectMaximumReceivedDamage = 51,
ReflectMaximumReceivedDamageNegated = 52
}
public enum DarkCloneSummon : byte
{
SummonDarkCloneChance = 11,
SummonDarkCloneChanceNegated = 12,
ConvertRecoveryToDamage = 21,
ConvertRecoveryToDamageNegated = 22,
ConvertDamageToHpChance = 31,
ConvertDamageToHpChanceNegated = 32,
IncreaseEnemyCooldownChance = 41,
IncreaseEnemyCooldownChanceNegated = 42,
DarkElementDamageIncreaseChance = 51,
DarkElementDamageDecreaseChance = 52
}
public enum DebuffResistance : byte
{
IncreaseBadEffectChance = 11,
NeverBadEffectChance = 12,
IncreaseBadGeneralEffectChance = 21,
NeverBadGeneralEffectChance = 22,
IncreaseBadMagicEffectChance = 31,
NeverBadMagicEffectChance = 32,
IncreaseBadToxicEffectChance = 41,
NeverBadToxicEffectChance = 42,
IncreaseBadDiseaseEffectChance = 51,
NeverBadDiseaseEffectChance = 52
}
public enum Defence : byte
{
AllIncreased = 11,
AllDecreased = 12,
MeleeIncreased = 21,
MeleeDecreased = 22,
RangedIncreased = 31,
RangedDecreased = 32,
MagicalIncreased = 41,
MagicalDecreased = 42,
DefenceLevelIncreased = 51,
DefenceLevelDecreased = 52
}
public enum DodgeAndDefencePercent : byte
{
DodgeIncreased = 11,
DodgeDecreased = 12,
DodgingMeleeIncreased = 21,
DodgingMeleeDecreased = 22,
DodgingRangedIncreased = 31,
DodgingRangedDecreased = 32,
DefenceIncreased = 41,
DefenceReduced = 42
}
public enum Drain : byte
{
CastDrain = 11,
CastDrainNegated = 12,
TransferEnemyHp = 21,
TransferEnemyHpNegated = 22
}
// 21-40
public enum DrainAndSteal : byte
{
ReceiveHpFromMp = 11,
ReceiveHpFromMpNegated = 12,
ReceiveMpFromHp = 21,
ReceiveMpFromHpNegated = 22,
GiveEnemyHp = 31,
LeechEnemyHp = 32,
GiveEnemyMp = 41,
LeechEnemyMp = 42,
ConvertEnemyMptoHp = 51,
ConvertEnemyHptoMp = 52
}
public enum Element : byte
{
FireIncreased = 11,
FireDecreased = 12,
WaterIncreased = 21,
WaterDecreased = 22,
LightIncreased = 31,
LightDecreased = 32,
DarkIncreased = 41,
DarkDecreased = 42,
AllIncreased = 51,
AllDecreased = 52
}
public enum ElementResistance : byte
{
AllIncreased = 11,
AllDecreased = 12,
FireIncreased = 21,
FireDecreased = 22,
WaterIncreased = 31,
WaterDecreased = 32,
LightIncreased = 41,
LightDecreased = 42,
DarkIncreased = 51,
DarkDecreased = 52
}
public enum EnemyElementResistance : byte
{
AllIncreased = 11,
AllDecreased = 12,
FireIncreased = 21,
FireDecreased = 22,
WaterIncreased = 31,
WaterDecreased = 32,
LightIncreased = 41,
LightDecreased = 42,
DarkIncreased = 51,
DarkDecreased = 52
}
public enum FairyXpIncrease : byte
{
TeleportToLocation = 11,
TeleportToLocationNegated = 12,
IncreaseFairyXpPoints = 21,
IncreaseFairyXpPointsNegated = 22
}
public enum FalconSkill : byte
{
CausingChanceLocation = 11,
RemovingChanceLocation = 12,
Hide = 21,
HideNegated = 22,
Ambush = 31,
AmbushNegated = 32,
FalconFollowing = 41,
FalconFollowingNegated = 42,
FalconFocusLowestHp = 51,
FalconFocusLowestHpNegated = 52
}
public enum FearSkill : byte
{
RestoreRemainingEnemyHp = 11,
DecreaseRemainingEnemyHp = 12,
TimesUsed = 21,
TimesUsedNegated = 22,
AttackRangedIncreased = 31,
AttackRangedDecreased = 32,
MoveAgainstWill = 41,
MoveAgainstWillNegated = 42,
ProduceWhenAmbushe = 51,
ProduceWhenAmbushNegated = 52
}
public enum FireCannoneerRangeBuff : byte
{
AoeIncreased = 11,
AoeDecreased = 12,
Flinch = 21,
FlinchNegated = 22
}
public enum FocusEnemyAttentionSkill : byte
{
FocusEnemyAttention = 11
// Unknown = 12, Unknown2 = 21, Unknown3 = 22,
}
public enum FourthGlacernonFamilyRaid : byte
{
AllInFieldReceiveDamage = 11, // Look nearly the same as 12
AllInFieldsReceiveDamage = 12 // Look nearly the same as 11
}
public enum FrozenDebuff : byte
{
MovementLocked = 11,
MovementLockedNegated = 12
// Unknown = 21, Unknown2 = 22
}
public enum GuarantedDodgeRangedAttack : byte
{
AttackHitChance = 11,
AttackHitChanceNegated = 12,
AlwaysDodgePropability = 21,
AlwaysDodgePropabilityNegated = 22,
NoPenatly = 41,
DistanceDamageIncreasing = 41,
NoPenatlyNegated = 42,
DistanceDamageIncreasingNegated = 42
}
public enum HealingBurningAndCasting : byte
{
RestoreHp = 11,
DecreaseHp = 12,
RestoreMp = 21,
DecreaseMp = 22,
RestoreHpWhenCasting = 31,
DecreaseHpWhenCasting = 32,
RestoreHpWhenCastingInterrupted = 41,
DecreaseHpWhenCastingInterrupted = 42,
HpIncreasedByConsumingMp = 51,
HpDecreasedByConsumingMp = 52
}
// 61-80
/*public enum Missingno : byte
{
Unknown = 11,
Unknown2 = 12
}*/
public enum HideBarrelSkill : byte
{
NoHpConsumption = 11,
NoHpRecovery = 12
}
public enum Hpmp : byte
{
RestoreDecreasedHp = 11,
DecreaseRemainingHp = 12,
RestoreDecreasedMp = 21,
DecreaseRemainingMp = 22,
HpRestored = 31,
HpReduced = 32,
MpRestored = 41,
MpReduced = 42,
ReceiveAdditionalHp = 51,
ReceiveAdditionalMp = 52
}
public enum HugeSnowman : byte
{
SnowStorm = 11,
gitextract_crxs70bx/
├── .coderabbit.yaml
├── .editorconfig
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ └── feature_request.md
│ ├── dependabot.yml
│ └── workflows/
│ └── dotnet.yml
├── .gitignore
├── CONTRIBUTING.md
├── Directory.Build.props
├── Directory.Packages.props
├── LICENSE
├── NosCore.sln
├── NosCore.sln.DotSettings
├── NosCore.sln.startup.json
├── NuGet.config
├── README.md
├── build/
│ └── .gitkeep
├── build-exe.cmd
├── build.cmd
├── codecov.yml
├── configuration/
│ ├── api.yml
│ ├── database.yml
│ ├── logger.yml
│ ├── login.yml
│ ├── master.yml
│ ├── parser.yml
│ └── world.yml
├── deploy/
│ ├── Dockerfile-login
│ ├── Dockerfile-master
│ └── Dockerfile-world
├── docker-compose.yml
├── documentation/
│ ├── PostmanCollection/
│ │ └── NosCore.postman_collection.json
│ └── dat/
│ ├── Card.dat.md
│ ├── Item.dat.md
│ ├── Skill.dat.md
│ ├── monster.dat.md
│ └── quest.dat.md
├── lgtm.yml
├── scripts/
│ ├── Docker - All.cmd
│ ├── Docker - LoginServer.cmd
│ ├── Docker - MasterServer.cmd
│ ├── Docker - Postgres.cmd
│ ├── Docker - ReverseProxy.cmd
│ ├── Docker - Shutdown.cmd
│ ├── Docker - WorldServer.cmd
│ ├── LoginServer.cmd
│ ├── MasterServer.cmd
│ ├── Parser.cmd
│ ├── WorldServer.cmd
│ └── docker-publish.sh
├── src/
│ ├── NosCore.Core/
│ │ ├── AuthorizeRoleAttribute.cs
│ │ ├── Channel.cs
│ │ ├── ChannelInfo.cs
│ │ ├── Concurrency/
│ │ │ └── AsyncLock.cs
│ │ ├── Configuration/
│ │ │ ├── LoginConfiguration.cs
│ │ │ └── WorldConfiguration.cs
│ │ ├── ConfigureJwtBearerOptions.cs
│ │ ├── ConnectionInfo.cs
│ │ ├── Encryption/
│ │ │ ├── BcryptEncryption.cs
│ │ │ ├── Pbkdf2Hasher.cs
│ │ │ └── Sha512Hasher.cs
│ │ ├── Extensions/
│ │ │ └── TypeExtension.cs
│ │ ├── I18N/
│ │ │ ├── GameLanguageLocalizer.cs
│ │ │ └── IGameLanguageLocalizer.cs
│ │ ├── NosCore.Core.csproj
│ │ ├── Observability/
│ │ │ └── NosCoreTelemetry.cs
│ │ ├── Services/
│ │ │ └── IdService/
│ │ │ ├── IIdService.cs
│ │ │ └── IdService.cs
│ │ └── SessionFactory.cs
│ ├── NosCore.Data/
│ │ ├── CommandPackets/
│ │ │ ├── ChangeChannelPacket.cs
│ │ │ ├── ChangeClassPacket.cs
│ │ │ ├── ChangeGenderPacket.cs
│ │ │ ├── ClearInventoryPacket.cs
│ │ │ ├── CommandPacketHeaderAttribute.cs
│ │ │ ├── CreateItemPacket.cs
│ │ │ ├── EffectCommandPacket.cs
│ │ │ ├── EntryPointPacket.cs
│ │ │ ├── FlCommandPacket.cs
│ │ │ ├── GiftPacket.cs
│ │ │ ├── HelpPacket.cs
│ │ │ ├── ICommandPacket.cs
│ │ │ ├── InvisibleCommandPacket.cs
│ │ │ ├── KickPacket.cs
│ │ │ ├── KillPacket.cs
│ │ │ ├── PositionPacket.cs
│ │ │ ├── SetBankGoldPacket.cs
│ │ │ ├── SetGoldCommandPacket.cs
│ │ │ ├── SetHairColorPacket.cs
│ │ │ ├── SetHairStylePacket.cs
│ │ │ ├── SetHeroLevelCommandPacket.cs
│ │ │ ├── SetHeroXpPacket.cs
│ │ │ ├── SetJobLevelCommandPacket.cs
│ │ │ ├── SetJobLevelXpPacket.cs
│ │ │ ├── SetLevelCommandPacket.cs
│ │ │ ├── SetMaintenancePacket.cs
│ │ │ ├── SetReputationPacket.cs
│ │ │ ├── SetSpAdditionPointPacket.cs
│ │ │ ├── SetSpPointPacket.cs
│ │ │ ├── ShoutHerePacket.cs
│ │ │ ├── ShoutPacket.cs
│ │ │ ├── SizePacket.cs
│ │ │ ├── SpeedPacket.cs
│ │ │ └── TeleportPacket.cs
│ │ ├── DataAttributes/
│ │ │ └── StaticMetaDataAttribute.cs
│ │ ├── Dto/
│ │ │ ├── I18NFromAttribute.cs
│ │ │ ├── I18NString.cs
│ │ │ ├── IDTO.cs
│ │ │ ├── II18NDto.cs
│ │ │ ├── IItemInstanceDto.cs
│ │ │ ├── IStaticDto.cs
│ │ │ └── StaticDtoExtension.cs
│ │ ├── Enumerations/
│ │ │ ├── Audit/
│ │ │ │ └── AuditLogType.cs
│ │ │ ├── Battle/
│ │ │ │ └── TargetHitType.cs
│ │ │ ├── Bazaar/
│ │ │ │ ├── BazaarEquipmentType.cs
│ │ │ │ ├── BazaarJeweleryType.cs
│ │ │ │ ├── BazaarMainType.cs
│ │ │ │ └── BazaarUsableType.cs
│ │ │ ├── Buff/
│ │ │ │ ├── AdditionalTypes.cs
│ │ │ │ ├── BCardType.cs
│ │ │ │ ├── BuffType.cs
│ │ │ │ ├── MedalType.cs
│ │ │ │ ├── ShellOptionType.cs
│ │ │ │ └── StaticBonusType.cs
│ │ │ ├── Character/
│ │ │ │ ├── CharacterOption.cs
│ │ │ │ ├── CharacterState.cs
│ │ │ │ ├── FactionType.cs
│ │ │ │ └── MateType.cs
│ │ │ ├── Event/
│ │ │ │ ├── EventActionType.cs
│ │ │ │ └── EventType.cs
│ │ │ ├── Family/
│ │ │ │ ├── FamilyAuthority.cs
│ │ │ │ ├── FamilyLogType.cs
│ │ │ │ └── FamilyMemberRank.cs
│ │ │ ├── Group/
│ │ │ │ ├── GroupSharingType.cs
│ │ │ │ └── GroupType.cs
│ │ │ ├── HashingType.cs
│ │ │ ├── I18N/
│ │ │ │ └── LanguageKey.cs
│ │ │ ├── Interaction/
│ │ │ │ ├── Act4RaidType.cs
│ │ │ │ ├── ArenaTeamType.cs
│ │ │ │ ├── ChatType.cs
│ │ │ │ ├── GeneralLogType.cs
│ │ │ │ ├── InRespawnType.cs
│ │ │ │ ├── PenaltyType.cs
│ │ │ │ ├── ReceiverType.cs
│ │ │ │ ├── RespawnType.cs
│ │ │ │ ├── ScriptedInstanceType.cs
│ │ │ │ ├── TalentArenaOptionType.cs
│ │ │ │ └── TeleporterType.cs
│ │ │ ├── Items/
│ │ │ │ ├── CellonType.cs
│ │ │ │ ├── ItemEffectType.cs
│ │ │ │ ├── ItemType.cs
│ │ │ │ ├── JewelOptionType.cs
│ │ │ │ ├── RarifyMode.cs
│ │ │ │ ├── RarifyProtection.cs
│ │ │ │ ├── UpgradeMode.cs
│ │ │ │ └── UpgradeProtection.cs
│ │ │ ├── Map/
│ │ │ │ ├── MapInstanceEventType.cs
│ │ │ │ ├── MapInstanceType.cs
│ │ │ │ ├── MapTypeType.cs
│ │ │ │ └── MonsterType.cs
│ │ │ ├── Miniland/
│ │ │ │ └── WarehouseType.cs
│ │ │ ├── NoscorePocketType.cs
│ │ │ ├── Quest/
│ │ │ │ └── QuestRewardType.cs
│ │ │ ├── SaveResult.cs
│ │ │ └── UpdateStatActionType.cs
│ │ ├── GameObjectMapper.cs
│ │ ├── NosCore.Data.csproj
│ │ ├── Resource/
│ │ │ ├── LocalizedResources.Designer.cs
│ │ │ ├── LocalizedResources.cs.resx
│ │ │ ├── LocalizedResources.de.resx
│ │ │ ├── LocalizedResources.es.resx
│ │ │ ├── LocalizedResources.fr.resx
│ │ │ ├── LocalizedResources.it.resx
│ │ │ ├── LocalizedResources.pl.resx
│ │ │ ├── LocalizedResources.resx
│ │ │ ├── LocalizedResources.ru.resx
│ │ │ └── LocalizedResources.tr.resx
│ │ └── WebApi/
│ │ ├── AuthIntent.cs
│ │ ├── BazaarLink.cs
│ │ ├── BazaarRequest.cs
│ │ ├── BlacklistRequest.cs
│ │ ├── Character.cs
│ │ ├── CharacterRelationStatus.cs
│ │ ├── FriendShipRequest.cs
│ │ ├── MailRequest.cs
│ │ ├── Subscriber.cs
│ │ ├── WareHouseDepositRequest.cs
│ │ └── WarehouseLink.cs
│ ├── NosCore.Database/
│ │ ├── DesignTimeDbContextFactory.cs
│ │ ├── Entities/
│ │ │ ├── Account.cs
│ │ │ ├── Act.cs
│ │ │ ├── ActPart.cs
│ │ │ ├── AuditLog.cs
│ │ │ ├── BCard.cs
│ │ │ ├── Base/
│ │ │ │ ├── I18NStringAttribute.cs
│ │ │ │ ├── IEntity.cs
│ │ │ │ ├── IStaticEntity.cs
│ │ │ │ └── SynchronizableBaseEntity.cs
│ │ │ ├── BazaarItem.cs
│ │ │ ├── BoxInstance.cs
│ │ │ ├── Card.cs
│ │ │ ├── Character.cs
│ │ │ ├── CharacterActPart.cs
│ │ │ ├── CharacterQuest.cs
│ │ │ ├── CharacterQuestObjective.cs
│ │ │ ├── CharacterRelation.cs
│ │ │ ├── Characterskill.cs
│ │ │ ├── Combo.cs
│ │ │ ├── Drop.cs
│ │ │ ├── EquipmentOption.cs
│ │ │ ├── Family.cs
│ │ │ ├── FamilyCharacter.cs
│ │ │ ├── FamilyLog.cs
│ │ │ ├── I18NActDesc.cs
│ │ │ ├── I18NBCard.cs
│ │ │ ├── I18NCard.cs
│ │ │ ├── I18NItem.cs
│ │ │ ├── I18NMapIdData.cs
│ │ │ ├── I18NMapPointData.cs
│ │ │ ├── I18NNpcMonster.cs
│ │ │ ├── I18NNpcMonsterTalk.cs
│ │ │ ├── I18NQuest.cs
│ │ │ ├── I18NSkill.cs
│ │ │ ├── InventoryItemInstance.cs
│ │ │ ├── Item.cs
│ │ │ ├── ItemInstance.cs
│ │ │ ├── Mail.cs
│ │ │ ├── Map.cs
│ │ │ ├── MapMonster.cs
│ │ │ ├── MapNpc.cs
│ │ │ ├── MapType.cs
│ │ │ ├── MapTypeMap.cs
│ │ │ ├── Mate.cs
│ │ │ ├── Miniland.cs
│ │ │ ├── MinilandObject.cs
│ │ │ ├── NpcMonster.cs
│ │ │ ├── NpcMonsterskill.cs
│ │ │ ├── NpcTalk.cs
│ │ │ ├── PenaltyLog.cs
│ │ │ ├── Portal.cs
│ │ │ ├── Quest.cs
│ │ │ ├── QuestObjective.cs
│ │ │ ├── QuestQuestReward.cs
│ │ │ ├── QuestReward.cs
│ │ │ ├── QuicklistEntry.cs
│ │ │ ├── Recipe.cs
│ │ │ ├── RecipeItem.cs
│ │ │ ├── Respawn.cs
│ │ │ ├── RespawnMapType.cs
│ │ │ ├── RollGeneratedItem.cs
│ │ │ ├── Script.cs
│ │ │ ├── ScriptedInstance.cs
│ │ │ ├── Shop.cs
│ │ │ ├── ShopItem.cs
│ │ │ ├── Shopskill.cs
│ │ │ ├── Skill.cs
│ │ │ ├── SpecialistInstance.cs
│ │ │ ├── StaticBonus.cs
│ │ │ ├── StaticBuff.cs
│ │ │ ├── Teleporter.cs
│ │ │ ├── Title.cs
│ │ │ ├── UsableInstance.cs
│ │ │ ├── Warehouse.cs
│ │ │ ├── WarehouseItem.cs
│ │ │ └── WearableInstance.cs
│ │ ├── Hosting/
│ │ │ └── PersistenceModule.cs
│ │ ├── Migrations/
│ │ │ ├── 20220103074410_FirstMigration.Designer.cs
│ │ │ ├── 20220103074410_FirstMigration.cs
│ │ │ ├── 20231125092440_BumpToEf8.Designer.cs
│ │ │ ├── 20231125092440_BumpToEf8.cs
│ │ │ ├── 20260420121955_AddCharacterQuestObjective.Designer.cs
│ │ │ ├── 20260420121955_AddCharacterQuestObjective.cs
│ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.Designer.cs
│ │ │ ├── 20260420231052_AddNpcMonsterCanWalk.cs
│ │ │ ├── 20260421034800_ParseMonsterDatExtras.Designer.cs
│ │ │ ├── 20260421034800_ParseMonsterDatExtras.cs
│ │ │ ├── 20260421054001_AddBCardSlot.Designer.cs
│ │ │ ├── 20260421054001_AddBCardSlot.cs
│ │ │ ├── 20260421070126_AddMountAndRaidPockets.Designer.cs
│ │ │ ├── 20260421070126_AddMountAndRaidPockets.cs
│ │ │ ├── 20260421105756_DropMapMonsterIsMoving.Designer.cs
│ │ │ ├── 20260421105756_DropMapMonsterIsMoving.cs
│ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.Designer.cs
│ │ │ ├── 20260421112205_ParseExtraNpcMonsterColumns.cs
│ │ │ ├── 20260424144528_AddMateCaptureItemEffect.Designer.cs
│ │ │ ├── 20260424144528_AddMateCaptureItemEffect.cs
│ │ │ └── NosCoreContextModelSnapshot.cs
│ │ ├── NosCore.Database.csproj
│ │ └── NosCoreContext.cs
│ ├── NosCore.GameObject/
│ │ ├── Ecs/
│ │ │ ├── Attributes/
│ │ │ │ └── ComponentBundleAttribute.cs
│ │ │ ├── Components/
│ │ │ │ ├── AggroComponent.cs
│ │ │ │ ├── AppearanceComponent.cs
│ │ │ │ ├── BuffStateComponent.cs
│ │ │ │ ├── CombatComponent.cs
│ │ │ │ ├── EffectComponent.cs
│ │ │ │ ├── EntityIdentityComponent.cs
│ │ │ │ ├── ExperienceComponent.cs
│ │ │ │ ├── GoldComponent.cs
│ │ │ │ ├── HealthComponent.cs
│ │ │ │ ├── ManaComponent.cs
│ │ │ │ ├── MapItemDataComponent.cs
│ │ │ │ ├── NameComponent.cs
│ │ │ │ ├── NpcDataComponent.cs
│ │ │ │ ├── NpcMovementComponent.cs
│ │ │ │ ├── NpcStateComponent.cs
│ │ │ │ ├── PlayerComponent.cs
│ │ │ │ ├── PlayerContextComponent.cs
│ │ │ │ ├── PlayerFlagsComponent.cs
│ │ │ │ ├── PlayerInventoryComponent.cs
│ │ │ │ ├── PlayerNetworkComponent.cs
│ │ │ │ ├── PlayerRequestsComponent.cs
│ │ │ │ ├── PlayerSocialComponent.cs
│ │ │ │ ├── PlayerStateComponent.cs
│ │ │ │ ├── PositionComponent.cs
│ │ │ │ ├── ReputationComponent.cs
│ │ │ │ ├── SkillCooldownComponent.cs
│ │ │ │ ├── SpComponent.cs
│ │ │ │ ├── SpawnComponent.cs
│ │ │ │ ├── SpeedComponent.cs
│ │ │ │ ├── TimingComponent.cs
│ │ │ │ └── VisualComponent.cs
│ │ │ ├── DignityLevels.cs
│ │ │ ├── Extensions/
│ │ │ │ ├── AliveEntityExtension.cs
│ │ │ │ ├── CharacterEntityExtension.cs
│ │ │ │ ├── GroupExtension.cs
│ │ │ │ ├── ItemInstanceExtension.cs
│ │ │ │ ├── MapItemBundleExtensions.cs
│ │ │ │ ├── MonsterBundleExtensions.cs
│ │ │ │ ├── NonPlayableEntityExtension.cs
│ │ │ │ ├── NpcBundleExtensions.cs
│ │ │ │ ├── NpcInfoExtensions.cs
│ │ │ │ ├── PlayerBundleExtensions.cs
│ │ │ │ └── VisualEntityExtension.cs
│ │ │ ├── Interfaces/
│ │ │ │ ├── IAliveEntity.cs
│ │ │ │ ├── ICharacterEntity.cs
│ │ │ │ ├── INamedEntity.cs
│ │ │ │ ├── INonPlayableEntity.cs
│ │ │ │ └── IVisualEntity.cs
│ │ │ ├── MapItemComponentBundle.cs
│ │ │ ├── MapWorld.cs
│ │ │ ├── MonsterComponentBundle.cs
│ │ │ ├── NpcComponentBundle.cs
│ │ │ ├── PlayerComponentBundle.cs
│ │ │ ├── ReputationLevels.cs
│ │ │ └── Systems/
│ │ │ ├── MovementSystem.cs
│ │ │ └── VisibilitySystem.cs
│ │ ├── Hosting/
│ │ │ └── Modules/
│ │ │ └── NetworkingModule.cs
│ │ ├── Infastructure/
│ │ │ ├── IPacketHandler.cs
│ │ │ └── ISingletonService.cs
│ │ ├── InterChannelCommunication/
│ │ │ ├── HubConnectionFactory.cs
│ │ │ ├── Hubs/
│ │ │ │ ├── AuthHub/
│ │ │ │ │ ├── AuthHub.cs
│ │ │ │ │ ├── AuthHubClient.cs
│ │ │ │ │ └── IAuthHub.cs
│ │ │ │ ├── BaseHubClient.cs
│ │ │ │ ├── BazaarHub/
│ │ │ │ │ ├── BazaarHub.cs
│ │ │ │ │ ├── BazaarHubClient.cs
│ │ │ │ │ └── IBazaarHub.cs
│ │ │ │ ├── BlacklistHub/
│ │ │ │ │ ├── BlacklistHub.cs
│ │ │ │ │ ├── BlacklistHubClient.cs
│ │ │ │ │ └── IBlacklistHub.cs
│ │ │ │ ├── ChannelHub/
│ │ │ │ │ ├── ChannelHub.cs
│ │ │ │ │ ├── ChannelHubClient.cs
│ │ │ │ │ └── IChannelHub.cs
│ │ │ │ ├── FriendHub/
│ │ │ │ │ ├── FriendHub.cs
│ │ │ │ │ ├── FriendHubClient.cs
│ │ │ │ │ └── IFriendHub.cs
│ │ │ │ ├── MailHub/
│ │ │ │ │ ├── IMailHub.cs
│ │ │ │ │ ├── MailHub.cs
│ │ │ │ │ └── MailHubClient.cs
│ │ │ │ ├── PubSub/
│ │ │ │ │ ├── IPubSubHub.cs
│ │ │ │ │ ├── PubSubHub.cs
│ │ │ │ │ └── PubSubHubClient.cs
│ │ │ │ └── WarehouseHub/
│ │ │ │ ├── IWarehouseHub.cs
│ │ │ │ ├── WarehouseHub.cs
│ │ │ │ └── WarehouseHubClient.cs
│ │ │ ├── MasterClientList.cs
│ │ │ ├── Messages/
│ │ │ │ ├── DeleteMailData.cs
│ │ │ │ ├── DisconnectData.cs
│ │ │ │ ├── IMessage.cs
│ │ │ │ ├── MailData.cs
│ │ │ │ ├── PostedPacket.cs
│ │ │ │ └── StatData.cs
│ │ │ └── PolymorphicConverter.cs
│ │ ├── Map/
│ │ │ ├── Map.cs
│ │ │ └── Portal.cs
│ │ ├── Messaging/
│ │ │ ├── Events/
│ │ │ │ ├── CharacterMovedEvent.cs
│ │ │ │ ├── EntityCapturedEvent.cs
│ │ │ │ ├── EntityDamagedEvent.cs
│ │ │ │ ├── EntityDiedEvent.cs
│ │ │ │ ├── GuriPacketReceivedEvent.cs
│ │ │ │ ├── ItemUsedEvent.cs
│ │ │ │ ├── MapInstanceEnteredEvent.cs
│ │ │ │ ├── MapItemPickedUpEvent.cs
│ │ │ │ └── QuestCompletedEvent.cs
│ │ │ ├── Handlers/
│ │ │ │ ├── Battle/
│ │ │ │ │ ├── DeathBCardHandler.cs
│ │ │ │ │ ├── MonsterAggroHandler.cs
│ │ │ │ │ ├── MonsterRespawnHandler.cs
│ │ │ │ │ ├── PlayerRevivalHandler.cs
│ │ │ │ │ └── RewardDistributionHandler.cs
│ │ │ │ ├── Guri/
│ │ │ │ │ ├── EmoticonHandler.cs
│ │ │ │ │ ├── MfaHandler.cs
│ │ │ │ │ ├── SpeakerHandler.cs
│ │ │ │ │ └── TitleHandler.cs
│ │ │ │ ├── Map/
│ │ │ │ │ └── MinilandEntranceHandler.cs
│ │ │ │ ├── MapItem/
│ │ │ │ │ ├── DropHandler.cs
│ │ │ │ │ ├── GoldDropHandler.cs
│ │ │ │ │ └── SpChargerHandler.cs
│ │ │ │ ├── Nrun/
│ │ │ │ │ ├── BazaarHandler.cs
│ │ │ │ │ ├── CellonItemHandler.cs
│ │ │ │ │ ├── ChangeClassHandler.cs
│ │ │ │ │ ├── FinishedTsDialogHandler.cs
│ │ │ │ │ ├── INrunEventHandler.cs
│ │ │ │ │ ├── OpenProductionHandler.cs
│ │ │ │ │ ├── OpenShopHandler.cs
│ │ │ │ │ ├── SetPlaceOfRevivalHandler.cs
│ │ │ │ │ ├── TeleporterHandler.cs
│ │ │ │ │ └── UpgradeItemHandler.cs
│ │ │ │ ├── Quest/
│ │ │ │ │ ├── OnCharacterMovedHandler.cs
│ │ │ │ │ ├── OnEntityCapturedHandler.cs
│ │ │ │ │ ├── OnEntityDiedHandler.cs
│ │ │ │ │ └── OnQuestCompletedHandler.cs
│ │ │ │ └── UseItem/
│ │ │ │ ├── BackPackHandler.cs
│ │ │ │ ├── BazaarMedalsHandler.cs
│ │ │ │ ├── BoxEffectHandler.cs
│ │ │ │ ├── ChangeGenderHandler.cs
│ │ │ │ ├── HairDieHandler.cs
│ │ │ │ ├── MinilandBellHandler.cs
│ │ │ │ ├── PetBasketHandler.cs
│ │ │ │ ├── SealedTarotCardHandler.cs
│ │ │ │ ├── SpRechargerHandler.cs
│ │ │ │ ├── SpeakerHandler.cs
│ │ │ │ ├── TitleHandler.cs
│ │ │ │ ├── VehicleHandler.cs
│ │ │ │ └── WearHandler.cs
│ │ │ ├── RecurringMessagePublisher.cs
│ │ │ ├── ScheduledJobs/
│ │ │ │ ├── RemoveTimeoutStaticBonusesHandler.cs
│ │ │ │ ├── RemoveTimeoutStaticBonusesMessage.cs
│ │ │ │ ├── SaveAllSessionsHandler.cs
│ │ │ │ └── SaveAllSessionsMessage.cs
│ │ │ ├── WolverineDependencyRegistrar.cs
│ │ │ └── WolverineHostExtensions.cs
│ │ ├── Networking/
│ │ │ ├── Broadcaster.cs
│ │ │ └── ClientSession/
│ │ │ ├── ClientSession.cs
│ │ │ ├── DisconnectHandlers/
│ │ │ │ ├── ExchangeDisconnectHandler.cs
│ │ │ │ ├── FriendNotificationDisconnectHandler.cs
│ │ │ │ ├── MapDisconnectHandler.cs
│ │ │ │ ├── MinilandDisconnectHandler.cs
│ │ │ │ └── SaveDisconnectHandler.cs
│ │ │ ├── IPacketHandlingStrategy.cs
│ │ │ ├── ISessionDisconnectHandler.cs
│ │ │ ├── LoginPacketHandlingStrategy.cs
│ │ │ ├── NpcDialogRequestSubject.cs
│ │ │ ├── RequestData.cs
│ │ │ └── WorldPacketHandlingStrategy.cs
│ │ ├── NosCore.GameObject.csproj
│ │ └── Services/
│ │ ├── AuthService/
│ │ │ ├── AuthCodeService.cs
│ │ │ └── IAuthCodeService.cs
│ │ ├── BattleService/
│ │ │ ├── AggroService.cs
│ │ │ ├── BattleService.cs
│ │ │ ├── BattleStatsProvider.cs
│ │ │ ├── BuffService.cs
│ │ │ ├── CaptureService.cs
│ │ │ ├── CharacterSkill.cs
│ │ │ ├── DamageCalculator.cs
│ │ │ ├── DamageResult.cs
│ │ │ ├── HitArguments.cs
│ │ │ ├── HitQueue.cs
│ │ │ ├── IAggroService.cs
│ │ │ ├── IBattleService.cs
│ │ │ ├── IBattleStatsProvider.cs
│ │ │ ├── IBuffService.cs
│ │ │ ├── ICaptureService.cs
│ │ │ ├── IDamageCalculator.cs
│ │ │ ├── IHitQueue.cs
│ │ │ ├── IMonsterAi.cs
│ │ │ ├── INpcCombatCatalog.cs
│ │ │ ├── IRandomProvider.cs
│ │ │ ├── IRegenerationService.cs
│ │ │ ├── IRespawnService.cs
│ │ │ ├── IRewardService.cs
│ │ │ ├── ISkillResolver.cs
│ │ │ ├── ITargetResolver.cs
│ │ │ ├── Model/
│ │ │ │ ├── BuffInstance.cs
│ │ │ │ ├── CombatStats.cs
│ │ │ │ ├── HitOutcome.cs
│ │ │ │ ├── HitRequest.cs
│ │ │ │ └── SkillInfo.cs
│ │ │ ├── MonsterAi.cs
│ │ │ ├── NpcCombatCatalog.cs
│ │ │ ├── RegenerationService.cs
│ │ │ ├── RespawnService.cs
│ │ │ ├── RewardService.cs
│ │ │ ├── SkillResolver.cs
│ │ │ ├── SkillResult.cs
│ │ │ └── TargetResolver.cs
│ │ ├── BazaarService/
│ │ │ ├── BazaarRegistry.cs
│ │ │ ├── BazaarService.cs
│ │ │ ├── IBazaarRegistry.cs
│ │ │ └── IBazaarService.cs
│ │ ├── BlackListService/
│ │ │ ├── BlacklistService.cs
│ │ │ └── IBlacklistService.cs
│ │ ├── BroadcastService/
│ │ │ ├── IPacketBroadcaster.cs
│ │ │ ├── IPacketSender.cs
│ │ │ ├── IPacketTarget.cs
│ │ │ ├── ISessionRegistry.cs
│ │ │ ├── PacketBroadcaster.cs
│ │ │ └── SessionRegistry.cs
│ │ ├── ChannelCommunicationService/
│ │ │ ├── ChannelCommunicationRunner.cs
│ │ │ └── Handlers/
│ │ │ ├── DeleteMailDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── DisconnectDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── IChannelCommunicationMessageHandler.cs
│ │ │ ├── MailDataMessageChannelCommunicationMessageHandler.cs
│ │ │ ├── PostedPacketMessageChannelCommunicationMessageHandler.cs
│ │ │ └── StatDataMessageChannelCommunicationMessageHandler.cs
│ │ ├── ChannelService/
│ │ │ ├── ChannelService.cs
│ │ │ └── IChannelService.cs
│ │ ├── CharacterService/
│ │ │ ├── CharacterInitializationService.cs
│ │ │ └── ICharacterInitializationService.cs
│ │ ├── ExchangeService/
│ │ │ ├── ExchangeData.cs
│ │ │ ├── ExchangeRequestRegistry.cs
│ │ │ ├── ExchangeService.cs
│ │ │ ├── IExchangeRequestRegistry.cs
│ │ │ └── IExchangeService.cs
│ │ ├── ExperienceService/
│ │ │ ├── ExperienceProgressionService.cs
│ │ │ └── IExperienceProgressionService.cs
│ │ ├── FriendService/
│ │ │ ├── CharacterRelation.cs
│ │ │ ├── FriendRequestRegistry.cs
│ │ │ ├── FriendService.cs
│ │ │ ├── IFriendRequestRegistry.cs
│ │ │ └── IFriendService.cs
│ │ ├── GroupService/
│ │ │ ├── Group.cs
│ │ │ ├── GroupRegistry.cs
│ │ │ └── IGroupRegistry.cs
│ │ ├── InventoryService/
│ │ │ ├── IInventoryService.cs
│ │ │ ├── InventoryItemInstance.cs
│ │ │ └── InventoryService.cs
│ │ ├── ItemGenerationService/
│ │ │ ├── IItemGenerationService.cs
│ │ │ ├── Item/
│ │ │ │ ├── BoxInstance.cs
│ │ │ │ ├── IItemInstance.cs
│ │ │ │ ├── Item.cs
│ │ │ │ ├── ItemInstance.cs
│ │ │ │ ├── SpecialistInstance.cs
│ │ │ │ ├── UsableInstance.cs
│ │ │ │ └── WearableInstance.cs
│ │ │ └── ItemGenerationService.cs
│ │ ├── ItemStorage/
│ │ │ ├── ISlotBasedStorage.cs
│ │ │ ├── ISlotItem.cs
│ │ │ └── SlotStorageHelper.cs
│ │ ├── LoginService/
│ │ │ ├── ILoginService.cs
│ │ │ └── LoginService.cs
│ │ ├── MailService/
│ │ │ ├── Gift.cs
│ │ │ ├── GiftHelper.cs
│ │ │ ├── IMailService.cs
│ │ │ ├── IParcelRegistry.cs
│ │ │ ├── MailService.cs
│ │ │ └── ParcelRegistry.cs
│ │ ├── MapChangeService/
│ │ │ ├── IMapChangeService.cs
│ │ │ └── MapChangeService.cs
│ │ ├── MapInstanceAccessService/
│ │ │ ├── IMapInstanceAccessService.cs
│ │ │ └── MapInstanceAccessService.cs
│ │ ├── MapInstanceGenerationService/
│ │ │ ├── IMapInstanceGenerationService.cs
│ │ │ ├── IMapInstanceRegistry.cs
│ │ │ ├── MapInstance.cs
│ │ │ ├── MapInstanceGenerationService.cs
│ │ │ └── MapInstanceRegistry.cs
│ │ ├── MapItemGenerationService/
│ │ │ ├── IMapItemGenerationService.cs
│ │ │ └── MapItemGenerationService.cs
│ │ ├── MinilandService/
│ │ │ ├── IMinilandRegistry.cs
│ │ │ ├── IMinilandService.cs
│ │ │ ├── MapDesignObject.cs
│ │ │ ├── Miniland.cs
│ │ │ ├── MinilandHelper.cs
│ │ │ ├── MinilandRegistry.cs
│ │ │ └── MinilandService.cs
│ │ ├── PacketHandlerService/
│ │ │ ├── IPacketHandlerRegistry.cs
│ │ │ └── PacketHandlerRegistry.cs
│ │ ├── PathfindingService/
│ │ │ ├── IPathfindingService.cs
│ │ │ └── PathfindingService.cs
│ │ ├── QuestService/
│ │ │ ├── Handlers/
│ │ │ │ ├── GoToQuestHandler.cs
│ │ │ │ ├── HuntQuestHandler.cs
│ │ │ │ ├── KillQuestHandlerBase.cs
│ │ │ │ └── NumberOfKillQuestHandler.cs
│ │ │ ├── IQuestService.cs
│ │ │ ├── IQuestTypeHandler.cs
│ │ │ ├── Quest.cs
│ │ │ └── QuestService.cs
│ │ ├── SaveService/
│ │ │ ├── ISaveService.cs
│ │ │ └── SaveService.cs
│ │ ├── ShopService/
│ │ │ ├── IShopRegistry.cs
│ │ │ ├── Shop.cs
│ │ │ ├── ShopItem.cs
│ │ │ └── ShopRegistry.cs
│ │ ├── SkillService/
│ │ │ ├── ISkillService.cs
│ │ │ └── SkillService.cs
│ │ ├── SpeedCalculationService/
│ │ │ ├── ISpeedCalculationService.cs
│ │ │ └── SpeedCalculationService.cs
│ │ ├── TransformationService/
│ │ │ ├── ITransformationService.cs
│ │ │ └── TransformationService.cs
│ │ ├── UpgradeService/
│ │ │ ├── EquipmentUpgradeOperationBase.cs
│ │ │ ├── IRandomNumberSource.cs
│ │ │ ├── IUpgradeOperation.cs
│ │ │ ├── RarifyOperation.cs
│ │ │ ├── RarifyOperationBase.cs
│ │ │ ├── SumUpgradeOperation.cs
│ │ │ ├── UpgradeContext.cs
│ │ │ ├── UpgradeItemOperation.cs
│ │ │ ├── UpgradeOperation.cs
│ │ │ └── UpgradeOutcome.cs
│ │ └── WarehouseService/
│ │ ├── IWarehouseService.cs
│ │ ├── WarehouseItem.cs
│ │ └── WarehouseService.cs
│ ├── NosCore.LoginServer/
│ │ ├── LoginServer.cs
│ │ ├── LoginServerBootstrap.cs
│ │ └── NosCore.LoginServer.csproj
│ ├── NosCore.MasterServer/
│ │ ├── MasterConfiguration.cs
│ │ ├── MasterServer.cs
│ │ ├── MasterServerBootstrap.cs
│ │ └── NosCore.MasterServer.csproj
│ ├── NosCore.PacketHandlers/
│ │ ├── Battle/
│ │ │ ├── RevivalPacketHandler.cs
│ │ │ └── UseSkillPacketHandler.cs
│ │ ├── Bazaar/
│ │ │ ├── CBListPacketHandler.cs
│ │ │ ├── CBuyPacketHandler.cs
│ │ │ ├── CModPacketHandler.cs
│ │ │ ├── CRegPacketHandler.cs
│ │ │ ├── CSListPacketHandler.cs
│ │ │ ├── CScalcPacketHandler.cs
│ │ │ └── CSkillPacketHandler.cs
│ │ ├── CharacterScreen/
│ │ │ ├── CharNewJobPacketHandler.cs
│ │ │ ├── CharNewPacketHandler.cs
│ │ │ ├── CharRenPacketHandler.cs
│ │ │ ├── CharacterDeletePacketHandler.cs
│ │ │ ├── DacPacketHandler.cs
│ │ │ ├── EntryPointPacketHandler.cs
│ │ │ └── SelectPacketHandler.cs
│ │ ├── Chat/
│ │ │ ├── BtkPacketHandler.cs
│ │ │ ├── ClientSayPacketHandler.cs
│ │ │ └── WhisperPacketHandler.cs
│ │ ├── Command/
│ │ │ ├── ChangeChannelPacketHandler.cs
│ │ │ ├── ChangeClassPacketHandler.cs
│ │ │ ├── ChangeGenderPacketHandler.cs
│ │ │ ├── CreateItemPacketHandler.cs
│ │ │ ├── EffectCommandPacketHandler.cs
│ │ │ ├── GiftPacketHandler.cs
│ │ │ ├── HelpPacketHandler.cs
│ │ │ ├── InvisibleCommandPacketHandler.cs
│ │ │ ├── KickPacketHandler.cs
│ │ │ ├── KillCommandPacketHandler.cs
│ │ │ ├── PositionPacketHandler.cs
│ │ │ ├── SetBankGoldPacketHandler.cs
│ │ │ ├── SetGoldCommandPacketHandler.cs
│ │ │ ├── SetHairColorPacketHandler.cs
│ │ │ ├── SetHairStylePacketHandler.cs
│ │ │ ├── SetHeroLevelCommandPacketHandler.cs
│ │ │ ├── SetHeroXpPacketHandler.cs
│ │ │ ├── SetJobLevelCommandPacketHandler.cs
│ │ │ ├── SetJobLevelXpPacketHandler.cs
│ │ │ ├── SetLevelCommandPacketHandler.cs
│ │ │ ├── SetMaintenancePacketHandler.cs
│ │ │ ├── SetReputationPacketHandler.cs
│ │ │ ├── SetSpAdditionPointPacketHandler.cs
│ │ │ ├── SetSpPointPacketHandler.cs
│ │ │ ├── ShoutHerePacketHandler.cs
│ │ │ ├── ShoutPacketHandler.cs
│ │ │ ├── SizePacketHandler.cs
│ │ │ ├── SpeedPacketHandler.cs
│ │ │ └── TeleportPacketHandler.cs
│ │ ├── Exchange/
│ │ │ ├── ExcListPacketHandler.cs
│ │ │ └── ExchangeRequestPacketHandler.cs
│ │ ├── Friend/
│ │ │ ├── BlDelPacketHandler.cs
│ │ │ ├── BlInsPacketHandler.cs
│ │ │ ├── BlPacketHandler.cs
│ │ │ ├── FdelPacketHandler.cs
│ │ │ ├── FinsPacketHandler.cs
│ │ │ └── FlPacketHandler.cs
│ │ ├── Game/
│ │ │ ├── GameStartPacketHandler.cs
│ │ │ ├── GuriPacketHandler.cs
│ │ │ ├── NcifPacketHandler.cs
│ │ │ ├── NpinfoPacketHandler.cs
│ │ │ ├── PulsePacketHandler.cs
│ │ │ ├── QSetPacketHandler.cs
│ │ │ ├── ReqInfoPacketHandler.cs
│ │ │ ├── ScpCtsPacketHandler.cs
│ │ │ └── TitEqPacketHandler.cs
│ │ ├── Group/
│ │ │ ├── GroupTalkPacketHandler.cs
│ │ │ ├── PjoinPacketHandler.cs
│ │ │ └── PleavePacketHandler.cs
│ │ ├── Inventory/
│ │ │ ├── BiPacketHandler.cs
│ │ │ ├── GetPacketHandler.cs
│ │ │ ├── MvePacketHandler.cs
│ │ │ ├── MviPacketHandler.cs
│ │ │ ├── PutPacketHandler.cs
│ │ │ ├── RemovePacketHandler.cs
│ │ │ ├── SpTransformPacketHandler.cs
│ │ │ ├── UseItemPacketHandler.cs
│ │ │ └── WearPacketHandler.cs
│ │ ├── Login/
│ │ │ ├── NoS0575PacketHandler.cs
│ │ │ └── NoS0577PacketHandler.cs
│ │ ├── Miniland/
│ │ │ ├── AddobjPacketHandler.cs
│ │ │ ├── MJoinPacketHandler.cs
│ │ │ ├── MinilandObjects/
│ │ │ │ ├── MgPacketHandler.cs
│ │ │ │ └── UseobjPacketHandler.cs
│ │ │ ├── MlobjPacketHandler.cs
│ │ │ └── RmvobjPacketHandler.cs
│ │ ├── Movement/
│ │ │ ├── ClientDirPacketHandler.cs
│ │ │ ├── PreqPacketHandler.cs
│ │ │ ├── SitPacketHandler.cs
│ │ │ └── WalkPacketHandler.cs
│ │ ├── NoAction/
│ │ │ ├── BpClosePacketHandler.cs
│ │ │ ├── CClosePacketHandler.cs
│ │ │ ├── LbsPacketHandler.cs
│ │ │ ├── SnapPacketHandler.cs
│ │ │ ├── SortOpenPacketHandler.cs
│ │ │ └── ZeroPacketHandler.cs
│ │ ├── NosCore.PacketHandlers.csproj
│ │ ├── Parcel/
│ │ │ ├── PclPacketHandler.cs
│ │ │ └── PstClientPacketHandler.cs
│ │ ├── Quest/
│ │ │ ├── QTPacketHandler.cs
│ │ │ └── ScriptPacketHandler.cs
│ │ ├── Shops/
│ │ │ ├── BuyPacketHandler.cs
│ │ │ ├── MShopPacketHandler.cs
│ │ │ ├── NrunPacketHandler.cs
│ │ │ ├── RequestNpcPacketHandler.cs
│ │ │ ├── SellPacketHandler.cs
│ │ │ └── ShoppingPacketHandler.cs
│ │ ├── Upgrades/
│ │ │ └── UpgradePacketHandler.cs
│ │ └── Warehouse/
│ │ ├── DepositPacketHandler.cs
│ │ ├── FDepositPacketHandler.cs
│ │ ├── FReposPacketHandler.cs
│ │ ├── FStashEndPacketHandler.cs
│ │ ├── FWithdrawPacketHandler.cs
│ │ ├── ReposPacketHandler.cs
│ │ ├── StashEndPacketHandler.cs
│ │ └── WithdrawPacketHandler.cs
│ ├── NosCore.Parser/
│ │ ├── ImportFactory.cs
│ │ ├── NosCore.Parser.csproj
│ │ ├── Parser.cs
│ │ ├── ParserBootstrap.cs
│ │ ├── ParserCliOptions.cs
│ │ ├── ParserConfiguration.cs
│ │ └── Parsers/
│ │ ├── ActParser.cs
│ │ ├── CardParser.cs
│ │ ├── DropParser.cs
│ │ ├── Generic/
│ │ │ ├── DatDocumentationGenerator.cs
│ │ │ ├── DatFieldMetadata.cs
│ │ │ ├── FluentParserBuilder.cs
│ │ │ └── GenericParser.cs
│ │ ├── I18NParser.cs
│ │ ├── ItemParser.cs
│ │ ├── MapMonsterParser.cs
│ │ ├── MapNpcParser.cs
│ │ ├── MapParser.cs
│ │ ├── MapTypeMapParser.cs
│ │ ├── MapTypeParser.cs
│ │ ├── NpcMonsterParser.cs
│ │ ├── NpcTalkParser.cs
│ │ ├── PortalParser.cs
│ │ ├── QuestParser.cs
│ │ ├── QuestPrizeParser.cs
│ │ ├── RespawnMapTypeParser.cs
│ │ ├── ScriptParser.cs
│ │ ├── ShopItemParser.cs
│ │ ├── ShopParser.cs
│ │ └── SkillParser.cs
│ ├── NosCore.WebApi/
│ │ ├── ApiConfiguration.cs
│ │ ├── Controllers/
│ │ │ ├── AuthController.cs
│ │ │ └── NosmallController.cs
│ │ ├── NosCore.WebApi.csproj
│ │ └── WebApiBootstrap.cs
│ └── NosCore.WorldServer/
│ ├── NosCore.WorldServer.csproj
│ ├── WorldServer.cs
│ └── WorldServerBootstrap.cs
├── test/
│ ├── NosCore.Core.Tests/
│ │ ├── LogLanguageTests.cs
│ │ └── NosCore.Core.Tests.csproj
│ ├── NosCore.Database.Tests/
│ │ ├── DatabaseTests.cs
│ │ └── NosCore.Database.Tests.csproj
│ ├── NosCore.GameObject.Tests/
│ │ ├── BazaarTests.cs
│ │ ├── GroupTests.cs
│ │ ├── Messaging/
│ │ │ ├── Handlers/
│ │ │ │ ├── Battle/
│ │ │ │ │ ├── MonsterAggroHandlerTests.cs
│ │ │ │ │ ├── MonsterRespawnHandlerTests.cs
│ │ │ │ │ ├── PlayerRevivalHandlerTests.cs
│ │ │ │ │ └── RewardDistributionHandlerTests.cs
│ │ │ │ ├── Guri/
│ │ │ │ │ ├── EmoticonHandlerTests.cs
│ │ │ │ │ └── MfaHandlerTests.cs
│ │ │ │ ├── Map/
│ │ │ │ │ └── MinilandEntranceHandlerTests.cs
│ │ │ │ ├── Nrun/
│ │ │ │ │ ├── SetPlaceOfRevivalHandlerTests.cs
│ │ │ │ │ ├── TeleporterHandlerTests.cs
│ │ │ │ │ └── UpgradeItemHandlerTests.cs
│ │ │ │ └── UseItem/
│ │ │ │ ├── BackPackHandlerTests.cs
│ │ │ │ ├── BazaarMedalsHandlerTests.cs
│ │ │ │ ├── BoxEffectHandlerTests.cs
│ │ │ │ ├── ChangeGenderHandlerTests.cs
│ │ │ │ ├── HairDieHandlerTests.cs
│ │ │ │ ├── MinilandBellHandlerTests.cs
│ │ │ │ ├── PetBasketHandlerTests.cs
│ │ │ │ ├── SealedTarotCardHandlerTests.cs
│ │ │ │ ├── SpRechargerHandlerTests.cs
│ │ │ │ ├── SpeakerHandlerTests.cs
│ │ │ │ ├── TitleHandlerTests.cs
│ │ │ │ └── WearHandlerTests.cs
│ │ │ └── WolverineHandlerResolutionTests.cs
│ │ ├── NosCore.GameObject.Tests.csproj
│ │ ├── Services/
│ │ │ ├── AuthService/
│ │ │ │ └── AuthCodeServiceTests.cs
│ │ │ ├── BattleService/
│ │ │ │ ├── AggroServiceTests.cs
│ │ │ │ ├── BattleServiceTests.cs
│ │ │ │ ├── BuffServiceTests.cs
│ │ │ │ ├── DamageCalculatorTests.cs
│ │ │ │ ├── HitQueueTests.cs
│ │ │ │ ├── MonsterAiTests.cs
│ │ │ │ ├── NpcCombatCatalogTests.cs
│ │ │ │ └── SkillResolverTests.cs
│ │ │ ├── BazaarService/
│ │ │ │ └── BazaarRegistryTests.cs
│ │ │ ├── BlacklistService/
│ │ │ │ └── BlacklistServiceTests.cs
│ │ │ ├── BroadcastService/
│ │ │ │ └── SessionRegistryTests.cs
│ │ │ ├── ChannelCommunicationService/
│ │ │ │ └── Handlers/
│ │ │ │ ├── DeleteMailDataMessageHandlerTests.cs
│ │ │ │ ├── DisconnectDataMessageHandlerTests.cs
│ │ │ │ ├── MailDataMessageHandlerTests.cs
│ │ │ │ ├── PostedPacketMessageHandlerTests.cs
│ │ │ │ └── StatDataMessageHandlerTests.cs
│ │ │ ├── ChannelService/
│ │ │ │ └── ChannelServiceTests.cs
│ │ │ ├── CharacterService/
│ │ │ │ └── CharacterInitializationServiceTests.cs
│ │ │ ├── ExchangeService/
│ │ │ │ ├── ExchangeRequestRegistryTests.cs
│ │ │ │ └── ExchangeServiceTests.cs
│ │ │ ├── FriendService/
│ │ │ │ ├── FriendRequestRegistryTests.cs
│ │ │ │ └── FriendServiceTests.cs
│ │ │ ├── GroupService/
│ │ │ │ └── GroupRegistryTests.cs
│ │ │ ├── InventoryService/
│ │ │ │ └── InventoryServiceTests.cs
│ │ │ ├── LoginService/
│ │ │ │ └── LoginServiceTests.cs
│ │ │ ├── MailService/
│ │ │ │ └── MailServiceTests.cs
│ │ │ ├── MapChangeService/
│ │ │ │ └── MapChangeServiceTests.cs
│ │ │ ├── MapInstanceAccessService/
│ │ │ │ └── MapInstanceAccessServiceTests.cs
│ │ │ ├── MapInstanceGenerationService/
│ │ │ │ └── MapInstanceRegistryTests.cs
│ │ │ ├── MinilandService/
│ │ │ │ ├── MinilandRegistryTests.cs
│ │ │ │ └── MinilandServiceTests.cs
│ │ │ ├── PacketHandlerService/
│ │ │ │ └── PacketHandlerRegistryTests.cs
│ │ │ ├── PathfindingService/
│ │ │ │ └── PathfindingServiceTests.cs
│ │ │ ├── QuestService/
│ │ │ │ └── QuestServiceTests.cs
│ │ │ ├── SaveService/
│ │ │ │ └── SaveServiceTests.cs
│ │ │ ├── ShopService/
│ │ │ │ └── ShopRegistryTests.cs
│ │ │ ├── SkillService/
│ │ │ │ └── SkillServiceTests.cs
│ │ │ ├── SpeedCalculationService/
│ │ │ │ └── SpeedCalculationServiceTests.cs
│ │ │ ├── TransformationService/
│ │ │ │ └── TransformationServiceTests.cs
│ │ │ ├── UpgradeService/
│ │ │ │ ├── EquipmentUpgradeOperationTests.cs
│ │ │ │ ├── RarifyOperationTests.cs
│ │ │ │ └── SumUpgradeOperationTests.cs
│ │ │ └── WarehouseService/
│ │ │ └── WarehouseServiceTests.cs
│ │ ├── SetupAssemblyInitializer.cs
│ │ └── ShopTests.cs
│ ├── NosCore.PacketHandlers.Tests/
│ │ ├── Battle/
│ │ │ ├── RevivalPacketHandlerTests.cs
│ │ │ └── UseSkillPacketHandlerTests.cs
│ │ ├── Bazaar/
│ │ │ ├── CBListPacketHandlerTests.cs
│ │ │ ├── CBuyPacketHandlerTests.cs
│ │ │ ├── CModPacketHandlerTests.cs
│ │ │ ├── CRegPacketHandlerTests.cs
│ │ │ ├── CSListPacketHandlerTests.cs
│ │ │ ├── CScalcPacketHandlerTests.cs
│ │ │ └── CSkillPacketHandlerTests.cs
│ │ ├── CharacterScreen/
│ │ │ ├── CharNewJobPacketHandlerTests.cs
│ │ │ ├── CharNewPacketHandlerTests.cs
│ │ │ ├── CharRenPacketHandlerTests.cs
│ │ │ ├── CharacterDeletePacketHandlerTests.cs
│ │ │ ├── DacPacketHandlerTests.cs
│ │ │ ├── EntryPointPacketHandlerTests.cs
│ │ │ └── SelectPacketHandlerTests.cs
│ │ ├── Chat/
│ │ │ ├── BtkPacketHandlerTests.cs
│ │ │ ├── ClientSayPacketHandlerTests.cs
│ │ │ └── WhisperPacketHandlerTests.cs
│ │ ├── Command/
│ │ │ ├── ChangeChannelPacketHandlerTests.cs
│ │ │ ├── ChangeClassPacketHandlerTests.cs
│ │ │ ├── CreateItemPacketHandlerTests.cs
│ │ │ ├── EffectCommandPacketHandlerTests.cs
│ │ │ ├── GiftPacketHandlerTests.cs
│ │ │ ├── HelpPacketHandlerTests.cs
│ │ │ ├── InvisibleCommandPacketHandlerTests.cs
│ │ │ ├── KickPacketHandlerTests.cs
│ │ │ ├── PositionPacketHandlerTests.cs
│ │ │ ├── SetGoldCommandPacketHandlerTests.cs
│ │ │ ├── SetHeroLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetJobLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetLevelCommandPacketHandlerTests.cs
│ │ │ ├── SetMaintenancePacketHandlerTests.cs
│ │ │ ├── SetReputationPacketHandlerTests.cs
│ │ │ ├── ShoutPacketHandlerTests.cs
│ │ │ ├── SizePacketHandlerTests.cs
│ │ │ ├── SpeedPacketHandlerTests.cs
│ │ │ └── TeleportPacketHandlerTests.cs
│ │ ├── Exchange/
│ │ │ ├── ExcListPacketHandlerTests.cs
│ │ │ └── ExchangeRequestPacketHandlerTests.cs
│ │ ├── Friend/
│ │ │ ├── BlDelPacketHandlerTests.cs
│ │ │ ├── BlInsPacketHandlerTests.cs
│ │ │ ├── BlPacketHandlerTests.cs
│ │ │ ├── FinsPacketHandlerTests.cs
│ │ │ ├── FlPacketHandlerTests.cs
│ │ │ └── fDelPacketHandlerTests.cs
│ │ ├── Game/
│ │ │ ├── GameStartPacketHandlerTests.cs
│ │ │ ├── GuriPacketHandlerTests.cs
│ │ │ ├── NcifPacketHandlerTests.cs
│ │ │ ├── PulsePacketHandlerTests.cs
│ │ │ ├── QsetPacketHandlerTests.cs
│ │ │ ├── ReqInfoPacketHandlerTests.cs
│ │ │ └── TitEqPacketHandlerTests.cs
│ │ ├── Group/
│ │ │ ├── GroupTalkPacketHandlerTests.cs
│ │ │ ├── PJoinPacketHandlerTests.cs
│ │ │ └── PleavePacketHandlerTests.cs
│ │ ├── Inventory/
│ │ │ ├── BiPacketHandlerTests.cs
│ │ │ ├── MvePacketHandlerTests.cs
│ │ │ ├── MviPacketHandlerTests.cs
│ │ │ ├── PutPacketHandlerTests.cs
│ │ │ ├── RemovePacketHandlerTests.cs
│ │ │ └── SpTransformPacketHandlerTests.cs
│ │ ├── Login/
│ │ │ ├── NoS0575PacketHandlerTests.cs
│ │ │ └── NoS0577PacketHandlerTests.cs
│ │ ├── Miniland/
│ │ │ ├── AddobjPacketHandlerTests.cs
│ │ │ ├── MJoinPacketHandlerTests.cs
│ │ │ ├── MinilandObjects/
│ │ │ │ ├── MgPacketHandlerTests.cs
│ │ │ │ └── UseobjPacketHandlerTests.cs
│ │ │ ├── MlEditPacketHandlerTests.cs
│ │ │ └── RmvobjPacketHandlerTests.cs
│ │ ├── Movement/
│ │ │ ├── ClientDirPacketHandlerTests.cs
│ │ │ ├── PreqPacketHandlerTests.cs
│ │ │ ├── SitPacketHandlerTests.cs
│ │ │ └── WalkPacketHandlerTests.cs
│ │ ├── NosCore.PacketHandlers.Tests.csproj
│ │ ├── Parcel/
│ │ │ ├── PclPacketHandlerTests.cs
│ │ │ └── PstClientPacketHandlerTests.cs
│ │ ├── Quest/
│ │ │ ├── QtPacketHandlerTests.cs
│ │ │ └── ScriptPacketHandlerTests.cs
│ │ ├── SetupAssemblyInitializer.cs
│ │ ├── Shops/
│ │ │ ├── BuyPacketHandlerTests.cs
│ │ │ ├── MShopPacketHandlerTests.cs
│ │ │ ├── NrunPacketHandlerTests.cs
│ │ │ ├── RequestNpcPacketHandlerTests.cs
│ │ │ ├── SellPacketHandlerTests.cs
│ │ │ └── ShoppingPacketHandlerTests.cs
│ │ ├── Upgrades/
│ │ │ └── UpgradePacketHandlerTests.cs
│ │ └── Warehouse/
│ │ ├── DepositPacketHandlerTests.cs
│ │ ├── FDepositPacketHandlerTests.cs
│ │ ├── FReposPacketHandlerTests.cs
│ │ ├── FStashEndPacketHandlerTests.cs
│ │ ├── FWithdrawPacketHandlerTests.cs
│ │ ├── ReposPacketHandlerTests.cs
│ │ ├── StashEndPacketHandlerTests.cs
│ │ ├── WarehousePacketHandlerTests.cs
│ │ └── WithdrawPacketHandlerTests.cs
│ ├── NosCore.Parser.Tests/
│ │ ├── ActParserTests.cs
│ │ ├── CardParserTests.cs
│ │ ├── DatDocumentationGeneratorTests.cs
│ │ ├── DatDocumentationSnapshotTests.cs
│ │ ├── DropParserTests.cs
│ │ ├── FluentParserBuilderTests.cs
│ │ ├── GenericParserTests.cs
│ │ ├── ItemParserTests.cs
│ │ ├── MapMonsterParserTests.cs
│ │ ├── MapNpcParserTests.cs
│ │ ├── MapParserTests.cs
│ │ ├── NosCore.Parser.Tests.csproj
│ │ ├── NpcMonsterParserTests.cs
│ │ ├── PortalParserTests.cs
│ │ ├── QuestParserTests.cs
│ │ ├── QuestPrizeParserTests.cs
│ │ ├── ShopParserTests.cs
│ │ └── SkillParserTests.cs
│ ├── NosCore.Tests.Shared/
│ │ ├── AutoFixture/
│ │ │ └── NosCoreFixture.cs
│ │ ├── BDD/
│ │ │ ├── SpecBase.cs
│ │ │ └── Steps/
│ │ │ ├── InventorySteps.cs
│ │ │ ├── PacketSteps.cs
│ │ │ └── SessionSteps.cs
│ │ ├── NosCore.Tests.Shared.csproj
│ │ ├── TestHelpers.cs
│ │ └── tools/
│ │ └── coverage.opencover.xml
│ └── NosCore.WebApi.Tests/
│ ├── ApiTests/
│ │ └── AuthControllerTests.cs
│ ├── NosCore.WebApi.Tests.csproj
│ └── SetupAssemblyInitializer.cs
└── tools/
├── NosCore.DtoGenerator/
│ ├── DtoGenerator.cs
│ └── NosCore.DtoGenerator.csproj
└── NosCore.EcsGenerator/
├── ComponentBundleGenerator.cs
└── NosCore.EcsGenerator.csproj
Showing preview only (532K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5347 symbols across 895 files)
FILE: src/NosCore.Core/AuthorizeRoleAttribute.cs
class AuthorizeRoleAttribute (line 14) | public class AuthorizeRoleAttribute : AuthorizeAttribute
method AuthorizeRoleAttribute (line 16) | public AuthorizeRoleAttribute(AuthorityType allowedRole)
FILE: src/NosCore.Core/Channel.cs
class Channel (line 12) | public class Channel
FILE: src/NosCore.Core/ChannelInfo.cs
class ChannelInfo (line 12) | public class ChannelInfo
FILE: src/NosCore.Core/Concurrency/AsyncLock.cs
class AsyncLock (line 16) | public sealed class AsyncLock : IDisposable
method AcquireAsync (line 20) | public async ValueTask<Releaser> AcquireAsync(CancellationToken cancel...
method Dispose (line 26) | public void Dispose() => _semaphore.Dispose();
type Releaser (line 28) | public readonly struct Releaser(SemaphoreSlim semaphore) : IDisposable
method Dispose (line 30) | public void Dispose() => semaphore.Release();
FILE: src/NosCore.Core/Configuration/LoginConfiguration.cs
class LoginConfiguration (line 13) | public class LoginConfiguration : ServerConfiguration
FILE: src/NosCore.Core/Configuration/WorldConfiguration.cs
class WorldConfiguration (line 14) | public class WorldConfiguration : ServerConfiguration
type StarterOrigin (line 66) | public enum StarterOrigin : byte
class BasicEquipment (line 73) | public class BasicEquipment
FILE: src/NosCore.Core/ConfigureJwtBearerOptions.cs
class ConfigureJwtBearerOptions (line 17) | public class ConfigureJwtBearerOptions(IOptions<WebApiConfiguration> web...
method Configure (line 20) | public void Configure(string? name, JwtBearerOptions options)
method Configure (line 44) | public void Configure(JwtBearerOptions options)
FILE: src/NosCore.Core/ConnectionInfo.cs
class ConnectionInfo (line 9) | public class ConnectionInfo
FILE: src/NosCore.Core/Encryption/BcryptEncryption.cs
class BcryptHasher (line 12) | public class BcryptHasher : IHasher
method Hash (line 14) | public string Hash(string password, string? salt)
method Hash (line 19) | public string Hash(string password) => throw new NotImplementedExcepti...
FILE: src/NosCore.Core/Encryption/Pbkdf2Hasher.cs
class Pbkdf2Hasher (line 16) | public class Pbkdf2Hasher : IHasher
method Hash (line 18) | public string Hash(string inputString, string? salt)
method Hash (line 31) | public string Hash(string password) => throw new NotImplementedExcepti...
FILE: src/NosCore.Core/Encryption/Sha512Hasher.cs
class Sha512Hasher (line 15) | public class Sha512Hasher : IHasher
method Hash (line 17) | public string Hash(string password, string? salt)
method Hash (line 24) | public string Hash(string password) => Hash(password, null);
FILE: src/NosCore.Core/Extensions/TypeExtension.cs
class TypeExtension (line 14) | public static class TypeExtension
method GetConstructorDelegate (line 18) | public static Func<TBase> GetConstructorDelegate<TBase>(this Type type)
method GetConstructorDelegate (line 23) | public static Func<object> GetConstructorDelegate(this Type type)
method GetConstructorDelegate (line 28) | public static Delegate GetConstructorDelegate(this Type type, Type del...
method CreateInstance (line 68) | public static T CreateInstance<T>(this Type type)
FILE: src/NosCore.Core/I18N/GameLanguageLocalizer.cs
class GameLanguageLocalizer (line 16) | public class GameLanguageLocalizer(ILogLanguageLocalizer<LanguageKey> st...
method GetAllStrings (line 52) | public IEnumerable<LocalizedString> GetAllStrings() => stringLocalizer...
FILE: src/NosCore.Core/I18N/IGameLanguageLocalizer.cs
type IGameLanguageLocalizer (line 14) | public interface IGameLanguageLocalizer : ILogLanguageLocalizer
FILE: src/NosCore.Core/Observability/NosCoreTelemetry.cs
class NosCoreTelemetry (line 16) | public static class NosCoreTelemetry
method AddNosCoreTelemetry (line 27) | public static IServiceCollection AddNosCoreTelemetry(this IServiceColl...
FILE: src/NosCore.Core/Services/IdService/IIdService.cs
type IIdService (line 11) | public interface IIdService<T>
method GetNextId (line 15) | long GetNextId();
FILE: src/NosCore.Core/Services/IdService/IdService.cs
class IdService (line 11) | public class IdService<T>(long firstId) : IIdService<T>
method GetNextId (line 15) | public long GetNextId()
FILE: src/NosCore.Core/SessionFactory.cs
class SessionFactory (line 12) | public sealed class SessionFactory
method SessionFactory (line 16) | private SessionFactory()
FILE: src/NosCore.Data/CommandPackets/ChangeChannelPacket.cs
class ChangeChannelPacket (line 12) | [CommandPacketHeader("$ChangeChannel", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ChangeClassPacket.cs
class ChangeClassPacket (line 12) | [CommandPacketHeader("$ChangeClass", AuthorityType.GameMaster)]
method Help (line 21) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ChangeGenderPacket.cs
class ChangeGenderPacket (line 11) | [CommandPacketHeader("$ChangeGender", AuthorityType.GameMaster)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ClearInventoryPacket.cs
class ClearInventoryPacket (line 11) | [CommandPacketHeader("$ClearInventory", AuthorityType.Moderator)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/CommandPacketHeaderAttribute.cs
class CommandPacketHeaderAttribute (line 13) | public class CommandPacketHeaderAttribute(string identification, Authori...
FILE: src/NosCore.Data/CommandPackets/CreateItemPacket.cs
class CreateItemPacket (line 12) | [CommandPacketHeader("$CreateItem", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/EffectCommandPacket.cs
class EffectCommandPacket (line 12) | [CommandPacketHeader("$Effect", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/EntryPointPacket.cs
class EntryPointPacket (line 13) | [PacketHeader("EntryPoint", Scope.OnCharacterScreen)]
FILE: src/NosCore.Data/CommandPackets/FlCommandPacket.cs
class FlCommandPacket (line 12) | [PacketHeader("$fl", Scope.InTrade | Scope.InGame)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/GiftPacket.cs
class GiftPacket (line 12) | [CommandPacketHeader("$Gift", AuthorityType.GameMaster)]
method Help (line 30) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/HelpPacket.cs
class HelpPacket (line 11) | [CommandPacketHeader("$Help", AuthorityType.GameMaster)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ICommandPacket.cs
type ICommandPacket (line 13) | public interface ICommandPacket : IPacket
method Help (line 15) | [UsedImplicitly]
class CommandPacket (line 19) | public abstract class CommandPacket : PacketBase, ICommandPacket
method Help (line 21) | public abstract string Help();
FILE: src/NosCore.Data/CommandPackets/InvisibleCommandPacket.cs
class InvisibleCommandPacket (line 11) | [CommandPacketHeader("$Invisible", AuthorityType.GameMaster)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/KickPacket.cs
class KickPacket (line 12) | [CommandPacketHeader("$Kick", AuthorityType.Moderator)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/KillPacket.cs
class KillPacket (line 11) | [CommandPacketHeader("$Kill", AuthorityType.GameMaster)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/PositionPacket.cs
class PositionPacket (line 11) | [CommandPacketHeader("$Position", AuthorityType.GameMaster)]
method Help (line 14) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetBankGoldPacket.cs
class SetBankGoldPacket (line 12) | [CommandPacketHeader("$SetBankGold", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetGoldCommandPacket.cs
class SetGoldCommandPacket (line 13) | [CommandPacketHeader("$SetGold", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetHairColorPacket.cs
class SetHairColorPacket (line 12) | [CommandPacketHeader("$SetHairColor", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetHairStylePacket.cs
class SetHairStylePacket (line 12) | [CommandPacketHeader("$SetHairStyle", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetHeroLevelCommandPacket.cs
class SetHeroLevelCommandPacket (line 13) | [CommandPacketHeader("$SetHeroLevel", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetHeroXpPacket.cs
class SetHeroXpPacket (line 12) | [CommandPacketHeader("$SetHeroXp", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetJobLevelCommandPacket.cs
class SetJobLevelCommandPacket (line 13) | [CommandPacketHeader("$SetJobLevel", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetJobLevelXpPacket.cs
class SetJobLevelXpPacket (line 12) | [CommandPacketHeader("$SetJobLevelXp", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetLevelCommandPacket.cs
class SetLevelCommandPacket (line 13) | [CommandPacketHeader("$SetLevel", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetMaintenancePacket.cs
class SetMaintenancePacket (line 12) | [CommandPacketHeader("$SetMaintenance", AuthorityType.GameMaster)]
method Help (line 21) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetReputationPacket.cs
class SetReputationPacket (line 13) | [CommandPacketHeader("$SetReputation", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetSpAdditionPointPacket.cs
class SetSpAdditionPointPacket (line 12) | [CommandPacketHeader("$SetSpAdditionPoint", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SetSpPointPacket.cs
class SetSpPointPacket (line 12) | [CommandPacketHeader("$SetSpPoint", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ShoutHerePacket.cs
class ShoutHerePacket (line 12) | [CommandPacketHeader("$ShoutHere", AuthorityType.Moderator)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/ShoutPacket.cs
class ShoutPacket (line 12) | [CommandPacketHeader("$Shout", AuthorityType.Moderator)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SizePacket.cs
class SizePacket (line 12) | [CommandPacketHeader("$Size", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/SpeedPacket.cs
class SpeedPacket (line 12) | [CommandPacketHeader("$Speed", AuthorityType.GameMaster)]
method Help (line 18) | public override string Help()
FILE: src/NosCore.Data/CommandPackets/TeleportPacket.cs
class TeleportPacket (line 12) | [CommandPacketHeader("$Teleport", AuthorityType.GameMaster)]
method Help (line 24) | public override string Help()
FILE: src/NosCore.Data/DataAttributes/StaticMetaDataAttribute.cs
class StaticMetaDataAttribute (line 12) | public class StaticMetaDataAttribute : Attribute
FILE: src/NosCore.Data/Dto/I18NFromAttribute.cs
class I18NFromAttribute (line 11) | public class I18NFromAttribute(Type type) : Attribute
FILE: src/NosCore.Data/Dto/I18NString.cs
class I18NString (line 12) | public class I18NString : Dictionary<RegionType, string>
method I18NString (line 14) | public I18NString()
FILE: src/NosCore.Data/Dto/IDTO.cs
type IDto (line 9) | public interface IDto
FILE: src/NosCore.Data/Dto/II18NDto.cs
type II18NDto (line 11) | public interface II18NDto : IDto
FILE: src/NosCore.Data/Dto/IItemInstanceDto.cs
type IItemInstanceDto (line 13) | public interface IItemInstanceDto : IDto
FILE: src/NosCore.Data/Dto/IStaticDto.cs
type IStaticDto (line 9) | public interface IStaticDto : IDto
FILE: src/NosCore.Data/Dto/StaticDtoExtension.cs
class StaticDtoExtension (line 16) | public static class StaticDtoExtension
method GetI18NProperties (line 18) | public static IDictionary<PropertyInfo, Tuple<PropertyInfo, Type>> Get...
method InjectI18N (line 37) | public static void InjectI18N(this IStaticDto staticDto,
FILE: src/NosCore.Data/Enumerations/Audit/AuditLogType.cs
type AuditLogType (line 9) | public enum AuditLogType
FILE: src/NosCore.Data/Enumerations/Battle/TargetHitType.cs
type TargetHitType (line 9) | public enum TargetHitType : byte
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarEquipmentType.cs
type BazaarEquipmentType (line 9) | public enum BazaarEquipmentType
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarJeweleryType.cs
type BazaarJeweleryType (line 9) | public enum BazaarJeweleryType
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarMainType.cs
type BazaarMainType (line 9) | public enum BazaarMainType
FILE: src/NosCore.Data/Enumerations/Bazaar/BazaarUsableType.cs
type BazaarUsableType (line 9) | public enum BazaarUsableType
FILE: src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs
class AdditionalTypes (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
type AbsorbedSpirit (line 15) | public enum AbsorbedSpirit : byte
type Absorption (line 25) | public enum Absorption : byte
type AbsorptionAndPowerSkill (line 37) | public enum AbsorptionAndPowerSkill : byte
type AngerSkill (line 50) | public enum AngerSkill : byte
type ArenaCamera (line 62) | public enum ArenaCamera : byte
type AttackPower (line 79) | public enum AttackPower : byte
type BearSpirit (line 93) | public enum BearSpirit : byte
type Block (line 104) | public enum Block : byte
type BossMonstersSkill (line 116) | public enum BossMonstersSkill : byte
type Buff (line 122) | public enum Buff : byte
type CalculatingLevel (line 136) | public enum CalculatingLevel : byte
type Capture (line 144) | public enum Capture : byte
type Casting (line 150) | public enum Casting : byte
type Count (line 164) | public enum Count : byte
type Critical (line 170) | public enum Critical : byte
type Damage (line 184) | public enum Damage : byte
type DamageConvertingSkill (line 196) | public enum DamageConvertingSkill : byte
type DarkCloneSummon (line 210) | public enum DarkCloneSummon : byte
type DebuffResistance (line 224) | public enum DebuffResistance : byte
type Defence (line 238) | public enum Defence : byte
type DodgeAndDefencePercent (line 252) | public enum DodgeAndDefencePercent : byte
type Drain (line 264) | public enum Drain : byte
type DrainAndSteal (line 273) | public enum DrainAndSteal : byte
type Element (line 287) | public enum Element : byte
type ElementResistance (line 301) | public enum ElementResistance : byte
type EnemyElementResistance (line 315) | public enum EnemyElementResistance : byte
type FairyXpIncrease (line 329) | public enum FairyXpIncrease : byte
type FalconSkill (line 337) | public enum FalconSkill : byte
type FearSkill (line 351) | public enum FearSkill : byte
type FireCannoneerRangeBuff (line 365) | public enum FireCannoneerRangeBuff : byte
type FocusEnemyAttentionSkill (line 373) | public enum FocusEnemyAttentionSkill : byte
type FourthGlacernonFamilyRaid (line 380) | public enum FourthGlacernonFamilyRaid : byte
type FrozenDebuff (line 386) | public enum FrozenDebuff : byte
type GuarantedDodgeRangedAttack (line 394) | public enum GuarantedDodgeRangedAttack : byte
type HealingBurningAndCasting (line 406) | public enum HealingBurningAndCasting : byte
type HideBarrelSkill (line 427) | public enum HideBarrelSkill : byte
type Hpmp (line 433) | public enum Hpmp : byte
type HugeSnowman (line 447) | public enum HugeSnowman : byte
type IncreaseDamage (line 455) | public enum IncreaseDamage : byte
type InflictSkill (line 469) | public enum InflictSkill : byte
type Item (line 475) | public enum Item : byte
type JumpBackPush (line 489) | public enum JumpBackPush : byte
type LeonaPassiveSkill (line 505) | public enum LeonaPassiveSkill : byte
type LightAndShadow (line 519) | public enum LightAndShadow : byte
type LordCalvinas (line 531) | public enum LordCalvinas : byte
type LordHatus (line 537) | public enum LordHatus : byte
type MaxHpmp (line 543) | public enum MaxHpmp : byte
type MeditationSkill (line 557) | public enum MeditationSkill : byte
type MeteoriteTeleport (line 571) | public enum MeteoriteTeleport : byte
type Mode (line 586) | public enum Mode : byte
type Morale (line 600) | public enum Morale : byte
type Move (line 614) | public enum Move : byte
type MultAttack (line 628) | public enum MultAttack : byte
type MultDefence (line 640) | public enum MultDefence : byte
type NoCharacteristicValue (line 652) | public enum NoCharacteristicValue : byte
type NoDefeatAndNoDamage (line 666) | public enum NoDefeatAndNoDamage : byte
type Quest (line 676) | public enum Quest : byte
type Recovery (line 682) | public enum Recovery : byte
type RecoveryAndDamagePercent (line 690) | public enum RecoveryAndDamagePercent : byte
type Reflection (line 700) | public enum Reflection : byte
type SecondSpCard (line 712) | public enum SecondSpCard : byte
type SeSpecialist (line 724) | public enum SeSpecialist : byte
type SniperAttack (line 734) | public enum SniperAttack : byte
type SpCardUpgrade (line 748) | public enum SpCardUpgrade : byte
type SpecialActions (line 756) | public enum SpecialActions : byte
type SpecialAttack (line 771) | public enum SpecialAttack : byte
type SpecialBehaviour (line 785) | public enum SpecialBehaviour : byte
type SpecialCritical (line 797) | public enum SpecialCritical : byte
type SpecialDamageAndExplosions (line 811) | public enum SpecialDamageAndExplosions : byte
type SpecialDefence (line 821) | public enum SpecialDefence : byte
type SpecialEffects (line 835) | public enum SpecialEffects : byte
type SpecialEffects2 (line 849) | public enum SpecialEffects2 : byte
type SpecialisationBuffResistance (line 863) | public enum SpecialisationBuffResistance : byte
type Spsl (line 876) | public enum Spsl : byte
type StealBuff (line 885) | public enum StealBuff : byte
type SummonAndRecoverHp (line 897) | public enum SummonAndRecoverHp : byte
type SummonedMonsterAttack (line 905) | public enum SummonedMonsterAttack : byte
type Summons (line 911) | public enum Summons : byte
type SummonSkill (line 925) | public enum SummonSkill : byte
type Target (line 933) | public enum Target : byte
type TauntSkill (line 945) | public enum TauntSkill : byte
type TeamArenaBuff (line 959) | public enum TeamArenaBuff : byte
type TimeCircleSkills (line 967) | public enum TimeCircleSkills : byte
type VulcanoElementBuff (line 981) | public enum VulcanoElementBuff : byte
type Type85 (line 993) | public enum Type85 : byte
type Type86 (line 1006) | public enum Type86 : byte
type Type87 (line 1017) | public enum Type87 : byte
type Type88 (line 1028) | public enum Type88 : byte
type Type89 (line 1039) | public enum Type89 : byte
type Type90 (line 1049) | public enum Type90 : byte
type Type91 (line 1060) | public enum Type91 : byte
type Type92 (line 1070) | public enum Type92 : byte
type Type93 (line 1078) | public enum Type93 : byte
type Type94 (line 1092) | public enum Type94 : byte
type Type95 (line 1105) | public enum Type95 : byte
type Type96 (line 1113) | public enum Type96 : byte
type Type97 (line 1123) | public enum Type97 : byte
type Type98 (line 1134) | public enum Type98 : byte
type Type99 (line 1144) | public enum Type99 : byte
type Type100 (line 1158) | public enum Type100 : byte
type Type101 (line 1172) | public enum Type101 : byte
type Type102 (line 1186) | public enum Type102 : byte
type Type103 (line 1200) | public enum Type103 : byte
type Type104 (line 1214) | public enum Type104 : byte
type Type107 (line 1223) | public enum Type107 : byte
type Type108 (line 1236) | public enum Type108 : byte
type Type109 (line 1248) | public enum Type109 : byte
type Type110 (line 1259) | public enum Type110 : byte
FILE: src/NosCore.Data/Enumerations/Buff/BCardType.cs
class BCardType (line 9) | public class BCardType
type CardType (line 11) | public enum CardType : byte
FILE: src/NosCore.Data/Enumerations/Buff/BuffType.cs
type BuffType (line 9) | public enum BuffType : byte
FILE: src/NosCore.Data/Enumerations/Buff/MedalType.cs
type MedalType (line 9) | public enum MedalType : byte
FILE: src/NosCore.Data/Enumerations/Buff/ShellOptionType.cs
type ShellOptionType (line 9) | public enum ShellOptionType
FILE: src/NosCore.Data/Enumerations/Buff/StaticBonusType.cs
type StaticBonusType (line 9) | public enum StaticBonusType : byte
FILE: src/NosCore.Data/Enumerations/Character/CharacterOption.cs
type CharacterOption (line 9) | public enum CharacterOption
FILE: src/NosCore.Data/Enumerations/Character/CharacterState.cs
type CharacterState (line 9) | public enum CharacterState : byte
FILE: src/NosCore.Data/Enumerations/Character/FactionType.cs
type FactionType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Character/MateType.cs
type MateType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Event/EventActionType.cs
type EventActionType (line 9) | public enum EventActionType
FILE: src/NosCore.Data/Enumerations/Event/EventType.cs
type EventType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Family/FamilyAuthority.cs
type FamilyAuthority (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Family/FamilyLogType.cs
type FamilyLogType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Family/FamilyMemberRank.cs
type FamilyMemberRank (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Group/GroupSharingType.cs
type GroupSharingType (line 9) | public enum GroupSharingType : byte
FILE: src/NosCore.Data/Enumerations/Group/GroupType.cs
type GroupType (line 9) | public enum GroupType : byte
FILE: src/NosCore.Data/Enumerations/HashingType.cs
type HashingType (line 9) | public enum HashingType
FILE: src/NosCore.Data/Enumerations/I18N/LanguageKey.cs
type LogLanguageKey (line 11) | [SuppressMessage("ReSharper", "InconsistentNaming")]
type LanguageKey (line 160) | [SuppressMessage("ReSharper", "InconsistentNaming")]
FILE: src/NosCore.Data/Enumerations/Interaction/Act4RaidType.cs
type Act4RaidType (line 9) | public enum Act4RaidType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/ArenaTeamType.cs
type ArenaTeamType (line 9) | public enum ArenaTeamType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/ChatType.cs
type ChatType (line 9) | public enum ChatType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/GeneralLogType.cs
type GeneralLogType (line 9) | public enum GeneralLogType
FILE: src/NosCore.Data/Enumerations/Interaction/InRespawnType.cs
type InRespawnType (line 9) | public enum InRespawnType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/PenaltyType.cs
type PenaltyType (line 9) | public enum PenaltyType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/ReceiverType.cs
type ReceiverType (line 9) | public enum ReceiverType : byte
FILE: src/NosCore.Data/Enumerations/Interaction/RespawnType.cs
type RespawnType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Interaction/ScriptedInstanceType.cs
type ScriptedInstanceType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Interaction/TalentArenaOptionType.cs
type TalentArenaOptionType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Interaction/TeleporterType.cs
type TeleporterType (line 9) | public enum TeleporterType : byte
FILE: src/NosCore.Data/Enumerations/Items/CellonType.cs
type CellonType (line 9) | public enum CellonType : byte
FILE: src/NosCore.Data/Enumerations/Items/ItemEffectType.cs
type ItemEffectType (line 9) | public enum ItemEffectType : ushort
FILE: src/NosCore.Data/Enumerations/Items/ItemType.cs
type ItemType (line 9) | public enum ItemType : byte
FILE: src/NosCore.Data/Enumerations/Items/JewelOptionType.cs
type JewelOptionType (line 9) | public enum JewelOptionType : byte
FILE: src/NosCore.Data/Enumerations/Items/RarifyMode.cs
type RarifyMode (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Items/RarifyProtection.cs
type RarifyProtection (line 9) | public enum RarifyProtection
FILE: src/NosCore.Data/Enumerations/Items/UpgradeMode.cs
type UpgradeMode (line 9) | public enum UpgradeMode
FILE: src/NosCore.Data/Enumerations/Items/UpgradeProtection.cs
type UpgradeProtection (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Map/MapInstanceEventType.cs
type MapInstanceEventType (line 9) | public enum MapInstanceEventType
FILE: src/NosCore.Data/Enumerations/Map/MapInstanceType.cs
type MapInstanceType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/Map/MapTypeType.cs
type MapTypeType (line 9) | public enum MapTypeType : short
FILE: src/NosCore.Data/Enumerations/Map/MonsterType.cs
type MonsterType (line 9) | public enum MonsterType : byte
FILE: src/NosCore.Data/Enumerations/Miniland/WarehouseType.cs
type WarehouseType (line 9) | public enum WarehouseType : byte
FILE: src/NosCore.Data/Enumerations/NoscorePocketType.cs
type NoscorePocketType (line 11) | public enum NoscorePocketType : byte
FILE: src/NosCore.Data/Enumerations/Quest/QuestRewardType.cs
type QuestRewardType (line 11) | [SuppressMessage("ReSharper", "UnusedMember.Global")]
FILE: src/NosCore.Data/Enumerations/SaveResult.cs
type SaveResult (line 9) | public enum SaveResult : byte
FILE: src/NosCore.Data/Enumerations/UpdateStatActionType.cs
type UpdateStatActionType (line 9) | public enum UpdateStatActionType : byte
FILE: src/NosCore.Data/GameObjectMapper.cs
class GameObjectMapper (line 12) | public class GameObjectMapper<TDto, TGameObject> : IGameObjectMapper<TDto>
method GameObjectMapper (line 14) | public GameObjectMapper(Func<TGameObject> resolve)
type IGameObjectMapper (line 20) | public interface IGameObjectMapper<TDto>
FILE: src/NosCore.Data/Resource/LocalizedResources.Designer.cs
class LocalizedResources (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
method LocalizedResources (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...
FILE: src/NosCore.Data/WebApi/AuthIntent.cs
class AuthIntent (line 9) | public class AuthIntent
FILE: src/NosCore.Data/WebApi/BazaarLink.cs
class BazaarLink (line 11) | public class BazaarLink
FILE: src/NosCore.Data/WebApi/BazaarRequest.cs
class BazaarRequest (line 11) | public class BazaarRequest
FILE: src/NosCore.Data/WebApi/BlacklistRequest.cs
class BlacklistRequest (line 11) | public class BlacklistRequest
FILE: src/NosCore.Data/WebApi/Character.cs
class Character (line 9) | public class Character
FILE: src/NosCore.Data/WebApi/CharacterRelationStatus.cs
class CharacterRelationStatus (line 12) | public class CharacterRelationStatus
FILE: src/NosCore.Data/WebApi/FriendShipRequest.cs
class FriendShipRequest (line 11) | public class FriendShipRequest
FILE: src/NosCore.Data/WebApi/MailRequest.cs
class MailRequest (line 12) | public class MailRequest
FILE: src/NosCore.Data/WebApi/Subscriber.cs
class Subscriber (line 11) | public class Subscriber
FILE: src/NosCore.Data/WebApi/WareHouseDepositRequest.cs
class WareHouseDepositRequest (line 12) | public class WareHouseDepositRequest
FILE: src/NosCore.Data/WebApi/WarehouseLink.cs
class WarehouseLink (line 11) | public class WarehouseLink
FILE: src/NosCore.Database/DesignTimeDbContextFactory.cs
class DesignTimeDbContextFactory (line 14) | public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<No...
method CreateDbContext (line 16) | public NosCoreContext CreateDbContext(string[] args)
FILE: src/NosCore.Database/Entities/Account.cs
class Account (line 14) | public class Account : IEntity
method Account (line 16) | public Account()
FILE: src/NosCore.Database/Entities/Act.cs
class Act (line 14) | public class Act : IStaticEntity
method Act (line 16) | public Act()
FILE: src/NosCore.Database/Entities/ActPart.cs
class ActPart (line 14) | public class ActPart : IStaticEntity
method ActPart (line 16) | public ActPart()
FILE: src/NosCore.Database/Entities/AuditLog.cs
class AuditLog (line 14) | public class AuditLog
FILE: src/NosCore.Database/Entities/BCard.cs
class BCard (line 12) | public class BCard : IStaticEntity
FILE: src/NosCore.Database/Entities/Base/I18NStringAttribute.cs
class I18NStringAttribute (line 11) | public class I18NStringAttribute(Type type) : Attribute
FILE: src/NosCore.Database/Entities/Base/IEntity.cs
type IEntity (line 9) | public interface IEntity
FILE: src/NosCore.Database/Entities/Base/IStaticEntity.cs
type IStaticEntity (line 9) | public interface IStaticEntity : IEntity
FILE: src/NosCore.Database/Entities/Base/SynchronizableBaseEntity.cs
class SynchronizableBaseEntity (line 13) | public abstract class SynchronizableBaseEntity : IEntity
FILE: src/NosCore.Database/Entities/BazaarItem.cs
class BazaarItem (line 14) | public class BazaarItem : IEntity
FILE: src/NosCore.Database/Entities/BoxInstance.cs
class BoxInstance (line 9) | public class BoxInstance : SpecialistInstance
FILE: src/NosCore.Database/Entities/Card.cs
class Card (line 15) | public class Card : IStaticEntity
method Card (line 17) | public Card()
FILE: src/NosCore.Database/Entities/Character.cs
class Character (line 17) | public class Character : IEntity
method Character (line 19) | public Character()
FILE: src/NosCore.Database/Entities/CharacterActPart.cs
class CharacterActPart (line 11) | public class CharacterActPart : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/CharacterQuest.cs
class CharacterQuest (line 13) | public class CharacterQuest : SynchronizableBaseEntity
method CharacterQuest (line 15) | public CharacterQuest()
FILE: src/NosCore.Database/Entities/CharacterQuestObjective.cs
class CharacterQuestObjective (line 12) | public class CharacterQuestObjective : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/CharacterRelation.cs
class CharacterRelation (line 14) | public class CharacterRelation : IEntity
FILE: src/NosCore.Database/Entities/Characterskill.cs
class CharacterSkill (line 11) | public class CharacterSkill : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/Combo.cs
class Combo (line 12) | public class Combo : IStaticEntity
FILE: src/NosCore.Database/Entities/Drop.cs
class Drop (line 12) | public class Drop : IStaticEntity
FILE: src/NosCore.Database/Entities/EquipmentOption.cs
class EquipmentOption (line 13) | public class EquipmentOption : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/Family.cs
class Family (line 14) | public class Family : IEntity
method Family (line 16) | public Family()
FILE: src/NosCore.Database/Entities/FamilyCharacter.cs
class FamilyCharacter (line 13) | public class FamilyCharacter : IEntity
FILE: src/NosCore.Database/Entities/FamilyLog.cs
class FamilyLog (line 14) | public class FamilyLog : IEntity
FILE: src/NosCore.Database/Entities/I18NActDesc.cs
class I18NActDesc (line 13) | public class I18NActDesc : IEntity
FILE: src/NosCore.Database/Entities/I18NBCard.cs
class I18NBCard (line 13) | public class I18NBCard : IEntity
FILE: src/NosCore.Database/Entities/I18NCard.cs
class I18NCard (line 13) | public class I18NCard : IEntity
FILE: src/NosCore.Database/Entities/I18NItem.cs
class I18NItem (line 13) | public class I18NItem : IEntity
FILE: src/NosCore.Database/Entities/I18NMapIdData.cs
class I18NMapIdData (line 13) | public class I18NMapIdData : IEntity
FILE: src/NosCore.Database/Entities/I18NMapPointData.cs
class I18NMapPointData (line 13) | public class I18NMapPointData : IEntity
FILE: src/NosCore.Database/Entities/I18NNpcMonster.cs
class I18NNpcMonster (line 13) | public class I18NNpcMonster : IEntity
FILE: src/NosCore.Database/Entities/I18NNpcMonsterTalk.cs
class I18NNpcMonsterTalk (line 13) | public class I18NNpcMonsterTalk : IEntity
FILE: src/NosCore.Database/Entities/I18NQuest.cs
class I18NQuest (line 13) | public class I18NQuest : IEntity
FILE: src/NosCore.Database/Entities/I18NSkill.cs
class I18NSkill (line 13) | public class I18NSkill : IEntity
FILE: src/NosCore.Database/Entities/InventoryItemInstance.cs
class InventoryItemInstance (line 14) | public class InventoryItemInstance : SynchronizableBaseEntity
method InventoryItemInstance (line 16) | public InventoryItemInstance()
FILE: src/NosCore.Database/Entities/Item.cs
class Item (line 19) | [StaticMetaData(LoadedMessage = LogLanguageKey.ITEMS_LOADED)]
method Item (line 22) | public Item()
FILE: src/NosCore.Database/Entities/ItemInstance.cs
class ItemInstance (line 14) | public class ItemInstance : SynchronizableBaseEntity
method ItemInstance (line 16) | public ItemInstance()
FILE: src/NosCore.Database/Entities/Mail.cs
class Mail (line 16) | public class Mail : IEntity
FILE: src/NosCore.Database/Entities/Map.cs
class Map (line 16) | [StaticMetaData(LoadedMessage = LogLanguageKey.MAPS_LOADED, EmptyMessage...
method Map (line 19) | public Map()
FILE: src/NosCore.Database/Entities/MapMonster.cs
class MapMonster (line 15) | [StaticMetaData(LoadedMessage = LogLanguageKey.MAPMONSTERS_LOADED)]
FILE: src/NosCore.Database/Entities/MapNpc.cs
class MapNpc (line 16) | [StaticMetaData(LoadedMessage = LogLanguageKey.MAPNPCS_LOADED)]
method MapNpc (line 19) | public MapNpc()
FILE: src/NosCore.Database/Entities/MapType.cs
class MapType (line 14) | public class MapType : IStaticEntity
method MapType (line 16) | public MapType()
FILE: src/NosCore.Database/Entities/MapTypeMap.cs
class MapTypeMap (line 12) | public class MapTypeMap : IStaticEntity
FILE: src/NosCore.Database/Entities/Mate.cs
class Mate (line 13) | public class Mate : IEntity
FILE: src/NosCore.Database/Entities/Miniland.cs
class Miniland (line 14) | public class Miniland : IEntity
FILE: src/NosCore.Database/Entities/MinilandObject.cs
class MinilandObject (line 13) | public class MinilandObject : IEntity
FILE: src/NosCore.Database/Entities/NpcMonster.cs
class NpcMonster (line 17) | [StaticMetaData(LoadedMessage = LogLanguageKey.NPCMONSTERS_LOADED)]
method NpcMonster (line 20) | public NpcMonster()
FILE: src/NosCore.Database/Entities/NpcMonsterskill.cs
class NpcMonsterSkill (line 12) | public class NpcMonsterSkill : IStaticEntity
FILE: src/NosCore.Database/Entities/NpcTalk.cs
class NpcTalk (line 15) | [StaticMetaData(LoadedMessage = LogLanguageKey.NPCMONSTERSTALKS_LOADED)]
method NpcTalk (line 18) | public NpcTalk()
FILE: src/NosCore.Database/Entities/PenaltyLog.cs
class PenaltyLog (line 14) | public class PenaltyLog : IEntity
FILE: src/NosCore.Database/Entities/Portal.cs
class Portal (line 13) | public class Portal : IStaticEntity
FILE: src/NosCore.Database/Entities/Quest.cs
class Quest (line 17) | [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTS_LOADED)]
method Quest (line 20) | public Quest()
FILE: src/NosCore.Database/Entities/QuestObjective.cs
class QuestObjective (line 16) | [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTOBJECTIVES_LOADED)]
method QuestObjective (line 19) | public QuestObjective()
FILE: src/NosCore.Database/Entities/QuestQuestReward.cs
class QuestQuestReward (line 14) | public class QuestQuestReward : IStaticEntity
FILE: src/NosCore.Database/Entities/QuestReward.cs
class QuestReward (line 15) | [StaticMetaData(LoadedMessage = LogLanguageKey.QUESTREWARDS_LOADED)]
method QuestReward (line 18) | public QuestReward()
FILE: src/NosCore.Database/Entities/QuicklistEntry.cs
class QuicklistEntry (line 11) | public class QuicklistEntry : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/Recipe.cs
class Recipe (line 13) | public class Recipe : IStaticEntity
method Recipe (line 15) | public Recipe()
FILE: src/NosCore.Database/Entities/RecipeItem.cs
class RecipeItem (line 12) | public class RecipeItem : IEntity
FILE: src/NosCore.Database/Entities/Respawn.cs
class Respawn (line 12) | public class Respawn : IEntity
FILE: src/NosCore.Database/Entities/RespawnMapType.cs
class RespawnMapType (line 14) | public class RespawnMapType : IStaticEntity
method RespawnMapType (line 16) | public RespawnMapType()
FILE: src/NosCore.Database/Entities/RollGeneratedItem.cs
class RollGeneratedItem (line 12) | public class RollGeneratedItem : IEntity
FILE: src/NosCore.Database/Entities/Script.cs
class Script (line 15) | [StaticMetaData(LoadedMessage = LogLanguageKey.SCRIPTS_LOADED)]
method Script (line 18) | public Script()
FILE: src/NosCore.Database/Entities/ScriptedInstance.cs
class ScriptedInstance (line 13) | public class ScriptedInstance : IEntity
FILE: src/NosCore.Database/Entities/Shop.cs
class Shop (line 15) | [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPS_LOADED)]
method Shop (line 18) | public Shop()
FILE: src/NosCore.Database/Entities/ShopItem.cs
class ShopItem (line 14) | [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPITEMS_LOADED)]
FILE: src/NosCore.Database/Entities/Shopskill.cs
class ShopSkill (line 14) | [StaticMetaData(LoadedMessage = LogLanguageKey.SHOPSKILLS_LOADED)]
FILE: src/NosCore.Database/Entities/Skill.cs
class Skill (line 14) | public class Skill : IStaticEntity
method Skill (line 16) | public Skill()
FILE: src/NosCore.Database/Entities/SpecialistInstance.cs
class SpecialistInstance (line 9) | public class SpecialistInstance : WearableInstance
FILE: src/NosCore.Database/Entities/StaticBonus.cs
class StaticBonus (line 14) | public class StaticBonus : IEntity
FILE: src/NosCore.Database/Entities/StaticBuff.cs
class StaticBuff (line 12) | public class StaticBuff : IEntity
FILE: src/NosCore.Database/Entities/Teleporter.cs
class Teleporter (line 13) | public class Teleporter : IStaticEntity
FILE: src/NosCore.Database/Entities/Title.cs
class Title (line 11) | public class Title : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/UsableInstance.cs
class UsableInstance (line 9) | public class UsableInstance : ItemInstance
FILE: src/NosCore.Database/Entities/Warehouse.cs
class Warehouse (line 13) | public class Warehouse : SynchronizableBaseEntity
method Warehouse (line 15) | public Warehouse()
FILE: src/NosCore.Database/Entities/WarehouseItem.cs
class WarehouseItem (line 13) | public class WarehouseItem : SynchronizableBaseEntity
FILE: src/NosCore.Database/Entities/WearableInstance.cs
class WearableInstance (line 9) | public class WearableInstance : ItemInstance
FILE: src/NosCore.Database/Hosting/PersistenceModule.cs
class PersistenceModule (line 30) | public sealed class PersistenceModule : Autofac.Module
method PersistenceModule (line 34) | public PersistenceModule(Action<ContainerBuilder, Type>? onDtoTypeRegi...
method Load (line 39) | protected override void Load(ContainerBuilder builder)
method MirrorTo (line 84) | public static void MirrorTo(IServiceCollection services)
method DiscoverDaoMappings (line 106) | public static IEnumerable<DaoMapping> DiscoverDaoMappings()
method RegisterDatabaseObject (line 134) | public static void RegisterDatabaseObject<TDto, TDb, TPk>(ContainerBui...
type DaoMapping (line 181) | public sealed record DaoMapping(Type DtoType, Type DbType, Type PkType...
FILE: src/NosCore.Database/Migrations/20220103074410_FirstMigration.Designer.cs
class FirstMigration (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 19) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20220103074410_FirstMigration.cs
class FirstMigration (line 10) | public partial class FirstMigration : Migration
method Up (line 12) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 2393) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20231125092440_BumpToEf8.Designer.cs
class BumpToEf8 (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20231125092440_BumpToEf8.cs
class BumpToEf8 (line 8) | public partial class BumpToEf8 : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 34) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260420121955_AddCharacterQuestObjective.Designer.cs
class AddCharacterQuestObjective (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260420121955_AddCharacterQuestObjective.cs
class AddCharacterQuestObjective (line 9) | public partial class AddCharacterQuestObjective : Migration
method Up (line 12) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 53) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260420231052_AddNpcMonsterCanWalk.Designer.cs
class AddNpcMonsterCanWalk (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260420231052_AddNpcMonsterCanWalk.cs
class AddNpcMonsterCanWalk (line 8) | public partial class AddNpcMonsterCanWalk : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 22) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260421034800_ParseMonsterDatExtras.Designer.cs
class ParseMonsterDatExtras (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260421034800_ParseMonsterDatExtras.cs
class ParseMonsterDatExtras (line 8) | public partial class ParseMonsterDatExtras : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 163) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260421054001_AddBCardSlot.Designer.cs
class AddBCardSlot (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260421054001_AddBCardSlot.cs
class AddBCardSlot (line 8) | public partial class AddBCardSlot : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 22) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260421070126_AddMountAndRaidPockets.Designer.cs
class AddMountAndRaidPockets (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260421070126_AddMountAndRaidPockets.cs
class AddMountAndRaidPockets (line 8) | public partial class AddMountAndRaidPockets : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 73) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260421105756_DropMapMonsterIsMoving.Designer.cs
class DropMapMonsterIsMoving (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260421105756_DropMapMonsterIsMoving.cs
class DropMapMonsterIsMoving (line 8) | public partial class DropMapMonsterIsMoving : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 19) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260421112205_ParseExtraNpcMonsterColumns.Designer.cs
class ParseExtraNpcMonsterColumns (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260421112205_ParseExtraNpcMonsterColumns.cs
class ParseExtraNpcMonsterColumns (line 8) | public partial class ParseExtraNpcMonsterColumns : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 134) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/20260424144528_AddMateCaptureItemEffect.Designer.cs
class AddMateCaptureItemEffect (line 15) | [DbContext(typeof(NosCoreContext))]
method BuildTargetModel (line 20) | protected override void BuildTargetModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/Migrations/20260424144528_AddMateCaptureItemEffect.cs
class AddMateCaptureItemEffect (line 8) | public partial class AddMateCaptureItemEffect : Migration
method Up (line 11) | protected override void Up(MigrationBuilder migrationBuilder)
method Down (line 73) | protected override void Down(MigrationBuilder migrationBuilder)
FILE: src/NosCore.Database/Migrations/NosCoreContextModelSnapshot.cs
class NosCoreContextModelSnapshot (line 14) | [DbContext(typeof(NosCoreContext))]
method BuildModel (line 17) | protected override void BuildModel(ModelBuilder modelBuilder)
FILE: src/NosCore.Database/NosCoreContext.cs
class NosCoreContext (line 16) | public class NosCoreContext : DbContext
method NosCoreContext (line 18) | public NosCoreContext(DbContextOptions options) : base(options)
method HasPostgresEnum (line 159) | static void HasPostgresEnum(ModelBuilder modelBuilder, Type type)
method OnModelCreating (line 168) | protected override void OnModelCreating(ModelBuilder modelBuilder)
FILE: src/NosCore.GameObject/Ecs/Attributes/ComponentBundleAttribute.cs
class ComponentBundleAttribute (line 5) | [AttributeUsage(AttributeTargets.Struct)]
method ComponentBundleAttribute (line 10) | public ComponentBundleAttribute(params Type[] components)
FILE: src/NosCore.GameObject/Ecs/Components/AggroComponent.cs
type AggroComponent (line 15) | public record struct AggroComponent(
FILE: src/NosCore.GameObject/Ecs/Components/AppearanceComponent.cs
type AppearanceComponent (line 6) | public record struct AppearanceComponent(
FILE: src/NosCore.GameObject/Ecs/Components/BuffStateComponent.cs
type BuffStateComponent (line 14) | public record struct BuffStateComponent(ConcurrentDictionary<short, Buff...
FILE: src/NosCore.GameObject/Ecs/Components/CombatComponent.cs
type CombatComponent (line 7) | public record struct CombatComponent(
FILE: src/NosCore.GameObject/Ecs/Components/EffectComponent.cs
type EffectComponent (line 3) | public record struct EffectComponent(short Effect, short EffectDelay);
FILE: src/NosCore.GameObject/Ecs/Components/EntityIdentityComponent.cs
type EntityIdentityComponent (line 5) | public record struct EntityIdentityComponent(long VisualId, VisualType V...
FILE: src/NosCore.GameObject/Ecs/Components/ExperienceComponent.cs
type ExperienceComponent (line 3) | public record struct ExperienceComponent(byte Level, long LevelXp, byte ...
FILE: src/NosCore.GameObject/Ecs/Components/GoldComponent.cs
type GoldComponent (line 9) | public record struct GoldComponent(long Gold);
FILE: src/NosCore.GameObject/Ecs/Components/HealthComponent.cs
type HealthComponent (line 3) | public record struct HealthComponent(int Hp, int MaxHp, bool IsAlive);
FILE: src/NosCore.GameObject/Ecs/Components/ManaComponent.cs
type ManaComponent (line 3) | public record struct ManaComponent(int Mp, int MaxMp);
FILE: src/NosCore.GameObject/Ecs/Components/MapItemDataComponent.cs
type MapItemDataComponent (line 7) | public record struct MapItemDataComponent(short VNum, short Amount, long...
FILE: src/NosCore.GameObject/Ecs/Components/NameComponent.cs
type NameComponent (line 3) | public record struct NameComponent(string Name);
FILE: src/NosCore.GameObject/Ecs/Components/NpcDataComponent.cs
type NpcDataComponent (line 3) | public record struct NpcDataComponent(short VNum, short Race, byte Level...
FILE: src/NosCore.GameObject/Ecs/Components/NpcMovementComponent.cs
type NpcMovementComponent (line 3) | public record struct NpcMovementComponent(short FirstX, short FirstY, bo...
FILE: src/NosCore.GameObject/Ecs/Components/NpcStateComponent.cs
type NpcStateComponent (line 14) | public record struct NpcStateComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerComponent.cs
type PlayerComponent (line 3) | public record struct PlayerComponent(long AccountId, long CharacterId, b...
FILE: src/NosCore.GameObject/Ecs/Components/PlayerContextComponent.cs
type PlayerContextComponent (line 13) | public record struct PlayerContextComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerFlagsComponent.cs
type PlayerFlagsComponent (line 5) | public record struct PlayerFlagsComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerInventoryComponent.cs
type PlayerInventoryComponent (line 17) | public record struct PlayerInventoryComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerNetworkComponent.cs
type PlayerNetworkComponent (line 12) | public record struct PlayerNetworkComponent(IPacketSender? Sender, IChan...
FILE: src/NosCore.GameObject/Ecs/Components/PlayerRequestsComponent.cs
type PlayerRequestsComponent (line 14) | public record struct PlayerRequestsComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerSocialComponent.cs
type PlayerSocialComponent (line 12) | public record struct PlayerSocialComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PlayerStateComponent.cs
type PlayerStateComponent (line 7) | public record struct PlayerStateComponent(
FILE: src/NosCore.GameObject/Ecs/Components/PositionComponent.cs
type PositionComponent (line 5) | public record struct PositionComponent(short PositionX, short PositionY,...
FILE: src/NosCore.GameObject/Ecs/Components/ReputationComponent.cs
type ReputationComponent (line 3) | public record struct ReputationComponent(long Reputation, short Dignity,...
FILE: src/NosCore.GameObject/Ecs/Components/SkillCooldownComponent.cs
type SkillCooldownComponent (line 14) | public record struct SkillCooldownComponent(ConcurrentDictionary<short, ...
FILE: src/NosCore.GameObject/Ecs/Components/SpComponent.cs
type SpComponent (line 3) | public record struct SpComponent(short SpCooldown, int SpPoint, int SpAd...
FILE: src/NosCore.GameObject/Ecs/Components/SpawnComponent.cs
type SpawnComponent (line 3) | public record struct SpawnComponent(short FirstX, short FirstY, bool IsM...
FILE: src/NosCore.GameObject/Ecs/Components/SpeedComponent.cs
type SpeedComponent (line 3) | public record struct SpeedComponent(byte Speed);
FILE: src/NosCore.GameObject/Ecs/Components/TimingComponent.cs
type TimingComponent (line 5) | public record struct TimingComponent(Instant LastMove, Instant LastAttack);
FILE: src/NosCore.GameObject/Ecs/Components/VisualComponent.cs
type VisualComponent (line 3) | public record struct VisualComponent(short Morph, byte MorphUpgrade, sho...
FILE: src/NosCore.GameObject/Ecs/DignityLevels.cs
class DignityLevels (line 11) | public static class DignityLevels
method FromDignity (line 13) | public static DignityType FromDignity(short dignity) => dignity switch
FILE: src/NosCore.GameObject/Ecs/Extensions/AliveEntityExtension.cs
class AliveEntityExtension (line 35) | public static class AliveEntityExtension
method ChangeDirAsync (line 37) | public static Task ChangeDirAsync(this IAliveEntity aliveEntity, byte ...
method GenerateChangeDir (line 44) | public static DirPacket GenerateChangeDir(this IAliveEntity namedEntity)
method GenerateNpcReq (line 54) | public static RequestNpcPacket GenerateNpcReq(this IAliveEntity namedE...
method GenerateSubPinit (line 64) | public static PinitSubPacket GenerateSubPinit(this INamedEntity namedE...
method GenerateSubPidx (line 80) | public static PidxSubPacket GenerateSubPidx(this IAliveEntity playable...
method GenerateSubPidx (line 85) | public static PidxSubPacket GenerateSubPidx(this IAliveEntity playable...
method GenerateStatInfo (line 94) | public static StPacket GenerateStatInfo(this IAliveEntity aliveEntity)
method MoveAsync (line 116) | public static Task MoveAsync(this INonPlayableEntity nonPlayableEntity...
method RestAsync (line 159) | public static Task RestAsync(this IAliveEntity aliveEntity)
method GenerateCond (line 166) | public static CondPacket GenerateCond(this IAliveEntity aliveEntity)
method GenerateSay (line 178) | public static SayPacket GenerateSay(this IAliveEntity aliveEntity, str...
method GenerateSayItem (line 189) | public static SayItemPacket GenerateSayItem(this IAliveEntity aliveEnt...
method GenerateShop (line 207) | public static ShopPacket GenerateShop(this IAliveEntity visualEntity, ...
method GenerateUseItem (line 220) | public static UseItemPacket GenerateUseItem(this IAliveEntity aliveEnt...
method GeneratePairy (line 234) | public static PairyPacket GeneratePairy(this IAliveEntity aliveEntity,...
method GenerateCMode (line 248) | public static CModePacket GenerateCMode(this IAliveEntity aliveEntity)
method GenerateCharSc (line 262) | public static CharScPacket GenerateCharSc(this IAliveEntity aliveEntity)
method GenerateMove (line 272) | public static MovePacket GenerateMove(this IAliveEntity aliveEntity)
method GenerateMove (line 277) | public static MovePacket GenerateMove(this IAliveEntity aliveEntity, s...
method GenerateEff (line 289) | public static EffectPacket GenerateEff(this IAliveEntity aliveEntity, ...
method GenerateSay (line 299) | public static SayPacket GenerateSay(this IAliveEntity aliveEntity, Say...
method GenerateRest (line 310) | public static RestPacket GenerateRest(this IAliveEntity aliveEntity)
method GeneratePFlag (line 320) | public static PflagPacket GeneratePFlag(this IAliveEntity aliveEntity)
method SetLevel (line 330) | public static void SetLevel(this INamedEntity experiencedEntity, byte ...
method GenerateNInv (line 338) | public static NInvPacket GenerateNInv(this IAliveEntity aliveEntity, d...
FILE: src/NosCore.GameObject/Ecs/Extensions/CharacterEntityExtension.cs
class CharacterEntityExtension (line 55) | public static class CharacterEntityExtension
method GenerateInv (line 57) | [Obsolete(
method GenerateSki (line 187) | public static SkiPacket GenerateSki(this ICharacterEntity characterEnt...
method GenerateQuicklist (line 199) | public static IEnumerable<QSlotPacket> GenerateQuicklist(this ICharact...
method GenerateRsfi (line 228) | public static NosCore.Packets.ServerPackets.Player.RsfiPacket Generate...
method GenerateServerExcListPacket (line 241) | public static ServerExcListPacket GenerateServerExcListPacket(this ICh...
method GenerateInvisible (line 254) | public static ClPacket GenerateInvisible(this ICharacterEntity visualE...
method SendFinfoAsync (line 264) | public static async Task SendFinfoAsync(this ICharacterEntity visualEn...
method GenerateQuestPacket (line 295) | public static QstlistPacket GenerateQuestPacket(this ICharacterEntity ...
method GetEquipmentSubPacket (line 301) | public static InEquipmentSubPacket GetEquipmentSubPacket(this ICharact...
method GenerateGoldPacket (line 325) | private static GoldPacket GenerateGoldPacket(ICharacterEntity characte...
method GenerateLevPacket (line 327) | private static LevPacket GenerateLevPacket(ICharacterEntity characterE...
method GenerateStatPacket (line 343) | private static StatPacket GenerateStatPacket(ICharacterEntity characte...
method GenerateFdPacket (line 353) | private static FdPacket GenerateFdPacket(ICharacterEntity characterEnt...
method AddGoldAsync (line 361) | public static Task AddGoldAsync(this ICharacterEntity characterEntity)
method AddGoldAsync (line 366) | public static async Task AddGoldAsync(this ICharacterEntity characterE...
method RemoveGoldAsync (line 373) | public static async Task RemoveGoldAsync(this ICharacterEntity charact...
method GenerateUpdateGoldSayPacket (line 380) | private static SayPacket GenerateUpdateGoldSayPacket(ICharacterEntity ...
method SetJobLevelAsync (line 391) | public static async Task SetJobLevelAsync(this ICharacterEntity charac...
method SetHeroLevelAsync (line 404) | public static async Task SetHeroLevelAsync(this ICharacterEntity chara...
method JoinGroup (line 419) | public static void JoinGroup(this ICharacterEntity characterEntity, Gr...
method LeaveGroupAsync (line 425) | public static async Task LeaveGroupAsync(this ICharacterEntity charact...
method AddBankGold (line 456) | public static void AddBankGold(this ICharacterEntity characterEntity, ...
method RemoveBankGold (line 461) | public static void RemoveBankGold(this ICharacterEntity characterEntit...
method CloseShopAsync (line 466) | public static async Task CloseShopAsync(this ICharacterEntity characte...
method BuyAsync (line 478) | public static async Task BuyAsync(this ICharacterEntity characterEntit...
method BuyFromOwnerAsync (line 618) | private static async Task<NInvPacket?> BuyFromOwnerAsync(ICharacterEnt...
FILE: src/NosCore.GameObject/Ecs/Extensions/GroupExtension.cs
class GroupExtension (line 17) | public static class GroupExtension
method GeneratePidx (line 19) | public static PidxPacket GeneratePidx(this Group group, INamedEntity e...
method GeneratePidx (line 29) | public static PidxPacket GeneratePidx(this Group group, PlayerComponen...
FILE: src/NosCore.GameObject/Ecs/Extensions/ItemInstanceExtension.cs
class IItemInstanceExtension (line 17) | public static class IItemInstanceExtension
method GenerateIvnSubPacket (line 19) | public static IvnSubPacket GenerateIvnSubPacket(this IItemInstance? it...
method GeneratePocketChange (line 41) | public static IvnPacket GeneratePocketChange(this InventoryItemInstanc...
method GeneratePocketChange (line 72) | public static IvnPacket? GeneratePocketChange(this List<InventoryItemI...
FILE: src/NosCore.GameObject/Ecs/Extensions/MapItemBundleExtensions.cs
class MapItemBundleExtensions (line 13) | public static class MapItemBundleExtensions
method GenerateIn (line 15) | public static InPacket GenerateIn(this MapItemComponentBundle item)
method GenerateDrop (line 33) | public static DropPacket GenerateDrop(this MapItemComponentBundle item)
FILE: src/NosCore.GameObject/Ecs/Extensions/MonsterBundleExtensions.cs
class MonsterBundleExtensions (line 16) | public static class MonsterBundleExtensions
method GenerateIn (line 18) | public static InPacket GenerateIn(this MonsterComponentBundle monster)
method GenerateCond (line 42) | public static CondPacket GenerateCond(this MonsterComponentBundle mons...
method GenerateMove (line 54) | public static MovePacket GenerateMove(this MonsterComponentBundle mons...
method GenerateCharSc (line 66) | public static CharScPacket GenerateCharSc(this MonsterComponentBundle ...
FILE: src/NosCore.GameObject/Ecs/Extensions/NonPlayableEntityExtension.cs
class NonPlayableEntityExtension (line 33) | public static class NonPlayableEntityExtension
method InitializeShopAndDialog (line 35) | public static void InitializeShopAndDialog(this NpcComponentBundle bun...
method StopLife (line 92) | public static void StopLife(this INonPlayableEntity entity)
method StartLifeAsync (line 98) | public static Task StartLifeAsync(this INonPlayableEntity entity, IHeu...
method StartLifeAsync (line 107) | public static Task StartLifeAsync(this INonPlayableEntity entity, IMon...
method ShowDialogAsync (line 137) | public static Task ShowDialogAsync(this INonPlayableEntity entity, Req...
FILE: src/NosCore.GameObject/Ecs/Extensions/NpcBundleExtensions.cs
class NpcBundleExtensions (line 16) | public static class NpcBundleExtensions
method GenerateIn (line 18) | public static InPacket GenerateIn(this NpcComponentBundle npc, short? ...
method GenerateCond (line 42) | public static CondPacket GenerateCond(this NpcComponentBundle npc)
method GenerateMove (line 54) | public static MovePacket GenerateMove(this NpcComponentBundle npc, sho...
method GenerateCharSc (line 66) | public static CharScPacket GenerateCharSc(this NpcComponentBundle npc)
FILE: src/NosCore.GameObject/Ecs/Extensions/NpcInfoExtensions.cs
class NpcInfoExtensions (line 14) | public static class NpcInfoExtensions
method GenerateNpcInfo (line 25) | public static EInfoNpcMonsterPacket GenerateNpcInfo(this NpcMonsterDto...
method GenerateMateInfo (line 56) | public static EInfoNpcMonsterPacket GenerateMateInfo(this MateDto mate...
FILE: src/NosCore.GameObject/Ecs/Extensions/PlayerBundleExtensions.cs
class PlayerBundleExtensions (line 57) | public static class PlayerBundleExtensions
method SendPacketAsync (line 59) | public static Task SendPacketAsync(this PlayerComponentBundle player, ...
method SendPacketsAsync (line 64) | public static Task SendPacketsAsync(this PlayerComponentBundle player,...
method RestAsync (line 69) | public static async Task RestAsync(this PlayerComponentBundle player)
method GenerateTalk (line 75) | public static TalkPacket GenerateTalk(this PlayerComponentBundle playe...
method GenerateSpk (line 84) | public static SpeakPacket GenerateSpk(this PlayerComponentBundle playe...
method GenerateSay (line 96) | public static SayPacket GenerateSay(this PlayerComponentBundle player,...
method GenerateFinitAsync (line 107) | public static async Task<FinitPacket> GenerateFinitAsync(this PlayerCo...
method GenerateBlinitAsync (line 132) | public static async Task<BlinitPacket> GenerateBlinitAsync(this Player...
method SetReputationAsync (line 147) | public static async Task SetReputationAsync(this PlayerComponentBundle...
method SetLevelAsync (line 158) | public static async Task SetLevelAsync(this PlayerComponentBundle play...
method GenerateIn (line 218) | public static InPacket GenerateIn(this PlayerComponentBundle player, s...
method GetEquipmentSubPacket (line 269) | public static InEquipmentSubPacket GetEquipmentSubPacket(this PlayerCo...
method GetWeaponUpgradeRareSubPacket (line 287) | public static UpgradeRareSubPacket GetWeaponUpgradeRareSubPacket(this ...
method GetArmorUpgradeRareSubPacket (line 297) | public static UpgradeRareSubPacket GetArmorUpgradeRareSubPacket(this P...
method GenerateStat (line 307) | public static StatPacket GenerateStat(this PlayerComponentBundle player)
method GenerateGold (line 320) | public static GoldPacket GenerateGold(this PlayerComponentBundle player)
method GenerateLev (line 325) | public static LevPacket GenerateLev(this PlayerComponentBundle player,
method GenerateFd (line 346) | public static FdPacket GenerateFd(this PlayerComponentBundle player)
method GenerateReqInfo (line 362) | public static TcInfoPacket GenerateReqInfo(this PlayerComponentBundle ...
method GenerateAt (line 413) | public static AtPacket GenerateAt(this PlayerComponentBundle player, s...
method GenerateCInfo (line 429) | public static CInfoPacket GenerateCInfo(this PlayerComponentBundle pla...
method GenerateCond (line 455) | public static CondPacket GenerateCond(this PlayerComponentBundle player)
method GenerateCMode (line 467) | public static CModePacket GenerateCMode(this PlayerComponentBundle pla...
method GenerateOut (line 481) | public static OutPacket GenerateOut(this PlayerComponentBundle player)
method GenerateRest (line 490) | public static RestPacket GenerateRest(this PlayerComponentBundle player)
method GetReputationIcon (line 500) | private static int GetReputationIcon(long reputation)
method GetDignityIcon (line 524) | private static int GetDignityIcon(int dignity)
method GenerateEff (line 537) | public static EffectPacket GenerateEff(this PlayerComponentBundle play...
method GenerateSay (line 547) | public static SayPacket GenerateSay(this PlayerComponentBundle player,...
method GenerateUseItem (line 558) | public static UseItemPacket GenerateUseItem(this PlayerComponentBundle...
method GenerateEq (line 571) | public static EqPacket GenerateEq(this PlayerComponentBundle player)
method GenerateEquipment (line 588) | public static EquipPacket GenerateEquipment(this PlayerComponentBundle...
method GenerateSpPoint (line 635) | public static SpPacket GenerateSpPoint(this PlayerComponentBundle play...
method GenerateTitInfo (line 646) | public static TitleInfoPacket GenerateTitInfo(this PlayerComponentBund...
method GeneratePairy (line 659) | public static PairyPacket GeneratePairy(this PlayerComponentBundle pla...
method GenerateTitle (line 680) | public static TitlePacket GenerateTitle(this PlayerComponentBundle pla...
method GenerateIcon (line 693) | public static IconPacket GenerateIcon(this PlayerComponentBundle playe...
method GenerateGet (line 704) | public static ServerGetPacket GenerateGet(this PlayerComponentBundle p...
method GenerateMlobjlst (line 714) | public static MlobjlstPacket GenerateMlobjlst(this PlayerComponentBund...
method GenerateSayItem (line 747) | public static SayItemPacket GenerateSayItem(this PlayerComponentBundle...
method GenerateStatInfo (line 765) | public static StPacket GenerateStatInfo(this PlayerComponentBundle pla...
method GeneratePFlag (line 783) | public static PflagPacket GeneratePFlag(this PlayerComponentBundle pla...
method GenerateShop (line 793) | public static ShopPacket GenerateShop(this PlayerComponentBundle playe...
method GenerateChangeDir (line 806) | public static DirPacket GenerateChangeDir(this PlayerComponentBundle p...
method GenerateMove (line 816) | public static MovePacket GenerateMove(this PlayerComponentBundle player)
method GenerateMove (line 821) | public static MovePacket GenerateMove(this PlayerComponentBundle playe...
method GenerateSubPidx (line 833) | public static PidxSubPacket GenerateSubPidx(this PlayerComponentBundle...
method GenerateSubPidx (line 838) | public static PidxSubPacket GenerateSubPidx(this PlayerComponentBundle...
method GenerateSubPinit (line 847) | public static PinitSubPacket GenerateSubPinit(this PlayerComponentBund...
method LoadExpensions (line 863) | public static void LoadExpensions(this PlayerComponentBundle player)
method GenerateExts (line 874) | public static ExtsPacket GenerateExts(this PlayerComponentBundle playe...
method AddSpPoints (line 884) | public static void AddSpPoints(this PlayerComponentBundle player, int ...
method AddAdditionalSpPoints (line 891) | public static void AddAdditionalSpPoints(this PlayerComponentBundle pl...
method RemoveGold (line 898) | public static void RemoveGold(this PlayerComponentBundle player, long ...
method GenerateTit (line 903) | public static TitPacket GenerateTit(this PlayerComponentBundle player)
class ClientSessionMailExtensions (line 913) | public static class ClientSessionMailExtensions
method GenerateMailAsync (line 915) | public static async Task GenerateMailAsync(this ClientSession session,...
method ChangeClassAsync (line 945) | public static async Task ChangeClassAsync(this ClientSession session, ...
FILE: src/NosCore.GameObject/Ecs/Extensions/VisualEntityExtension.cs
class VisualEntityExtension (line 16) | public static class VisualEntityExtension
method GenerateIn (line 19) | public static InPacket GenerateIn(this INonPlayableEntity visualEntity)
method GenerateSpk (line 45) | public static SpeakPacket GenerateSpk(this INamedEntity visualEntity, ...
FILE: src/NosCore.GameObject/Ecs/Interfaces/IAliveEntity.cs
type IAliveEntity (line 14) | public interface IAliveEntity : IVisualEntity
FILE: src/NosCore.GameObject/Ecs/Interfaces/ICharacterEntity.cs
type ICharacterEntity (line 27) | public interface ICharacterEntity : INamedEntity
method SendPacketAsync (line 99) | Task SendPacketAsync(IPacket packetDefinition);
method SendPacketsAsync (line 101) | Task SendPacketsAsync(IEnumerable<IPacket> packetDefinitions);
FILE: src/NosCore.GameObject/Ecs/Interfaces/INamedEntity.cs
type INamedEntity (line 11) | public interface INamedEntity : IAliveEntity
FILE: src/NosCore.GameObject/Ecs/Interfaces/INonPlayableEntity.cs
type INonPlayableEntity (line 13) | public interface INonPlayableEntity : IAliveEntity
FILE: src/NosCore.GameObject/Ecs/Interfaces/IVisualEntity.cs
type IVisualEntity (line 13) | public interface IVisualEntity
FILE: src/NosCore.GameObject/Ecs/MapItemComponentBundle.cs
type MapItemComponentBundle (line 6) | [ComponentBundle(
FILE: src/NosCore.GameObject/Ecs/MapWorld.cs
class MapWorld (line 27) | public class MapWorld : IDisposable
method MapWorld (line 31) | public MapWorld()
method TryGetComponent (line 36) | public T? TryGetComponent<T>(Entity entity) where T : struct
method SetComponent (line 49) | public void SetComponent<T>(Entity entity, T component) where T : struct
method HasComponent (line 54) | public bool HasComponent<T>(Entity entity) where T : struct
method AddComponent (line 59) | public void AddComponent<T>(Entity entity, T component) where T : struct
method RemoveComponent (line 64) | public void RemoveComponent<T>(Entity entity) where T : struct
method CreateMonster (line 69) | public Entity CreateMonster(
method CreateNpc (line 101) | public Entity CreateNpc(
method CreateMapItem (line 140) | public Entity CreateMapItem(
method CreatePlayer (line 160) | public Entity CreatePlayer(
method ClonePlayer (line 216) | public Entity ClonePlayer(
method DestroyEntity (line 246) | public void DestroyEntity(Entity entity)
method Dispose (line 251) | public void Dispose()
FILE: src/NosCore.GameObject/Ecs/MonsterComponentBundle.cs
type MonsterComponentBundle (line 7) | [ComponentBundle(
FILE: src/NosCore.GameObject/Ecs/NpcComponentBundle.cs
type NpcComponentBundle (line 7) | [ComponentBundle(
FILE: src/NosCore.GameObject/Ecs/PlayerComponentBundle.cs
type PlayerComponentBundle (line 12) | [ComponentBundle(
method SendPacketAsync (line 102) | public Task SendPacketAsync(IPacket? packet)
method SendPacketsAsync (line 107) | public Task SendPacketsAsync(IEnumerable<IPacket?> packets)
FILE: src/NosCore.GameObject/Ecs/ReputationLevels.cs
class ReputationLevels (line 11) | public static class ReputationLevels
method FromReputation (line 13) | public static ReputationType FromReputation(long reputation) => reputa...
FILE: src/NosCore.GameObject/Ecs/Systems/MovementSystem.cs
class MovementSystem (line 16) | public class MovementSystem
method MovementSystem (line 22) | public MovementSystem(IClock clock, IHeuristic distanceCalculator)
method Update (line 30) | public void Update(MapWorld world, Map.Map map, Action<Entity, MoveDat...
type MoveData (line 71) | public readonly record struct MoveData(short MapX, short MapY, byte Speed);
FILE: src/NosCore.GameObject/Ecs/Systems/VisibilitySystem.cs
class VisibilitySystem (line 15) | public class VisibilitySystem
method VisibilitySystem (line 21) | public VisibilitySystem()
method GetMonsterEntities (line 32) | public IEnumerable<Entity> GetMonsterEntities(MapWorld world)
method GetNpcEntities (line 46) | public IEnumerable<Entity> GetNpcEntities(MapWorld world)
method GetMapItemEntities (line 60) | public IEnumerable<Entity> GetMapItemEntities(MapWorld world)
method GetEntitiesInRange (line 70) | public IEnumerable<Entity> GetEntitiesInRange(MapWorld world, short ce...
FILE: src/NosCore.GameObject/Hosting/Modules/NetworkingModule.cs
class NetworkingModule (line 27) | public sealed class NetworkingModule : Module
method Load (line 29) | protected override void Load(ContainerBuilder builder)
method DispatchPacketAsync (line 63) | private static async Task DispatchPacketAsync(ClientSession session, N...
method DispatchDisconnectAsync (line 75) | private static async Task DispatchDisconnectAsync(ClientSession sessio...
FILE: src/NosCore.GameObject/Infastructure/IPacketHandler.cs
type IPacketHandler (line 13) | public interface IPacketHandler
method ExecuteAsync (line 15) | Task ExecuteAsync(IPacket packet, ClientSession clientSession);
method ExecuteAsync (line 28) | Task ExecuteAsync(TPacket packet, ClientSession clientSession);
type ILoginPacketHandler (line 18) | public interface ILoginPacketHandler
type IWorldPacketHandler (line 22) | public interface IWorldPacketHandler
type IPacketHandler (line 26) | public interface IPacketHandler<in TPacket> : IPacketHandler where TPack...
method ExecuteAsync (line 15) | Task ExecuteAsync(IPacket packet, ClientSession clientSession);
method ExecuteAsync (line 28) | Task ExecuteAsync(TPacket packet, ClientSession clientSession);
class PacketHandler (line 31) | public abstract class PacketHandler<TPacket> : IPacketHandler<TPacket> w...
method ExecuteAsync (line 33) | public abstract Task ExecuteAsync(TPacket packet, ClientSession client...
method ExecuteAsync (line 35) | public Task ExecuteAsync(IPacket packet, ClientSession clientSession)
FILE: src/NosCore.GameObject/Infastructure/ISingletonService.cs
type ISingletonService (line 16) | public interface ISingletonService { }
FILE: src/NosCore.GameObject/InterChannelCommunication/HubConnectionFactory.cs
class HubConnectionFactory (line 22) | public class HubConnectionFactory(IOptions<ServerConfiguration> serverCo...
method Create (line 24) | public HubConnection Create(string name)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/AuthHub.cs
class AuthHub (line 17) | [Authorize]
method AuthHub (line 22) | public AuthHub(IAuthCodeService authCodeService)
method GetAwaitingConnectionAsync (line 27) | public Task<string?> GetAwaitingConnectionAsync(string? id, string? to...
method HexStringToString (line 55) | private static string HexStringToString(string hexString)
method SetAwaitingConnectionAsync (line 73) | public Task SetAwaitingConnectionAsync(long sessionId, string accountN...
method StoreAuthCodeAsync (line 79) | public Task StoreAuthCodeAsync(string authCode, string accountName)
method RegisterSessionIpAsync (line 85) | public Task RegisterSessionIpAsync(string accountName, string ipAddress)
method UnregisterSessionIpAsync (line 91) | public Task UnregisterSessionIpAsync(string accountName)
method GetSessionIpAsync (line 97) | public Task<string?> GetSessionIpAsync(string accountName)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/AuthHubClient.cs
class AuthHubClient (line 13) | public class AuthHubClient(HubConnectionFactory hubConnectionFactory) : ...
method DisposeAsync (line 17) | public ValueTask DisposeAsync() => _hubConnection.DisposeAsync();
method GetAwaitingConnectionAsync (line 19) | public async Task<string?> GetAwaitingConnectionAsync(string? name, st...
method SetAwaitingConnectionAsync (line 32) | public async Task SetAwaitingConnectionAsync(long sessionId, string ac...
method StoreAuthCodeAsync (line 45) | public async Task StoreAuthCodeAsync(string authCode, string accountName)
method RegisterSessionIpAsync (line 58) | public async Task RegisterSessionIpAsync(string accountName, string ip...
method UnregisterSessionIpAsync (line 71) | public async Task UnregisterSessionIpAsync(string accountName)
method GetSessionIpAsync (line 84) | public async Task<string?> GetSessionIpAsync(string accountName)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/AuthHub/IAuthHub.cs
type IAuthHub (line 11) | public interface IAuthHub
method GetAwaitingConnectionAsync (line 13) | Task<string?> GetAwaitingConnectionAsync(string? name, string? packetP...
method SetAwaitingConnectionAsync (line 15) | Task SetAwaitingConnectionAsync(long sessionId, string accountName);
method StoreAuthCodeAsync (line 22) | Task StoreAuthCodeAsync(string authCode, string accountName);
method RegisterSessionIpAsync (line 24) | Task RegisterSessionIpAsync(string accountName, string ipAddress);
method UnregisterSessionIpAsync (line 25) | Task UnregisterSessionIpAsync(string accountName);
method GetSessionIpAsync (line 26) | Task<string?> GetSessionIpAsync(string accountName);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BaseHubClient.cs
class BaseHubClient (line 17) | public abstract class BaseHubClient : IAsyncDisposable
method BaseHubClient (line 25) | protected BaseHubClient(HubConnectionFactory hubConnectionFactory, str...
method EnsureConnectedAsync (line 59) | protected async Task EnsureConnectedAsync()
method InvokeAsync (line 81) | protected async Task<T> InvokeAsync<T>(string methodName, params objec...
method InvokeAsync (line 90) | protected async Task InvokeAsync(string methodName, params object?[] a...
method DisposeAsync (line 99) | public async ValueTask DisposeAsync()
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/BazaarHub.cs
class BazaarHub (line 17) | public class BazaarHub(IBazaarService bazaarService) : Hub, IBazaarHub
method GetBazaar (line 19) | public Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pa...
method DeleteBazaarAsync (line 23) | public Task<bool> DeleteBazaarAsync(long id, short count, string reque...
method AddBazaarAsync (line 25) | public Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest) =...
method ModifyBazaarAsync (line 28) | public Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPat...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/BazaarHubClient.cs
class BazaarHubClient (line 16) | public class BazaarHubClient(HubConnectionFactory hubConnectionFactory, ...
method GetBazaar (line 19) | public Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pa...
method DeleteBazaarAsync (line 24) | public Task<bool> DeleteBazaarAsync(long id, short count, string reque...
method AddBazaarAsync (line 27) | public Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest) =>
method ModifyBazaarAsync (line 30) | public Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPat...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BazaarHub/IBazaarHub.cs
type IBazaarHub (line 15) | public interface IBazaarHub
method GetBazaar (line 17) | Task<List<BazaarLink>> GetBazaar(long id, byte? index, byte? pageSize,...
method DeleteBazaarAsync (line 19) | Task<bool> DeleteBazaarAsync(long id, short count, string requestChara...
method AddBazaarAsync (line 20) | Task<LanguageKey> AddBazaarAsync(BazaarRequest bazaarRequest);
method ModifyBazaarAsync (line 21) | Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/BlacklistHub.cs
class BlacklistHub (line 17) | public class BlacklistHub(IBlacklistService blacklistService) : Hub, IBl...
method AddBlacklistAsync (line 19) | public Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistR...
method GetBlacklistedAsync (line 21) | public Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id...
method DeleteAsync (line 23) | public async Task<bool> DeleteAsync(Guid id) => await blacklistService...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/BlacklistHubClient.cs
class BlacklistHubClient (line 16) | public class BlacklistHubClient(HubConnectionFactory hubConnectionFactor...
method AddBlacklistAsync (line 19) | public Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistR...
method GetBlacklistedAsync (line 22) | public Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id...
method DeleteAsync (line 25) | public Task<bool> DeleteAsync(Guid id) =>
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/BlacklistHub/IBlacklistHub.cs
type IBlacklistHub (line 15) | public interface IBlacklistHub
method AddBlacklistAsync (line 17) | Task<LanguageKey> AddBlacklistAsync(BlacklistRequest blacklistRequest);
method GetBlacklistedAsync (line 18) | Task<List<CharacterRelationStatus>> GetBlacklistedAsync(long id);
method DeleteAsync (line 19) | Task<bool> DeleteAsync(Guid id);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/ChannelHub.cs
class ChannelHub (line 23) | public class ChannelHub(ILogger<PubSubHub> logger, MasterClientList mast...
method OnDisconnectedAsync (line 26) | public override async Task OnDisconnectedAsync(Exception? exception)
method Bind (line 42) | public Task Bind(Channel data)
method GetCommunicationChannels (line 66) | public Task<List<ChannelInfo>> GetCommunicationChannels()
method Ping (line 71) | public Task<bool> Ping() => Task.FromResult(true);
method SetMaintenance (line 73) | public Task SetMaintenance(bool isGlobal, bool value)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/ChannelHubClient.cs
class ChannelHubClient (line 13) | public class ChannelHubClient(HubConnectionFactory hubConnectionFactory,...
method Bind (line 17) | public async Task Bind(Channel data)
method GetCommunicationChannels (line 35) | public Task<List<ChannelInfo>> GetCommunicationChannels()
method Ping (line 40) | public Task<bool> Ping()
method SetMaintenance (line 45) | public Task SetMaintenance(bool isGlobal, bool value)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/ChannelHub/IChannelHub.cs
type IChannelHub (line 13) | public interface IChannelHub
method Bind (line 15) | Task Bind(Channel data);
method GetCommunicationChannels (line 17) | Task<List<ChannelInfo>> GetCommunicationChannels();
method SetMaintenance (line 18) | Task SetMaintenance(bool isGlobal, bool value);
method Ping (line 20) | Task<bool> Ping();
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/FriendHub.cs
class FriendHub (line 17) | public class FriendHub(IFriendService friendService) : Hub, IFriendHub
method AddFriendAsync (line 19) | public Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket...
method GetFriendsAsync (line 21) | public Task<List<CharacterRelationStatus>> GetFriendsAsync(long id) =>...
method DeleteAsync (line 23) | public async Task<bool> DeleteAsync(Guid id) => await friendService.De...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/FriendHubClient.cs
class FriendHubClient (line 16) | public class FriendHubClient(HubConnectionFactory hubConnectionFactory, ...
method AddFriendAsync (line 19) | public Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket...
method GetFriendsAsync (line 22) | public Task<List<CharacterRelationStatus>> GetFriendsAsync(long id) =>
method DeleteAsync (line 25) | public Task<bool> DeleteAsync(Guid id) =>
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/FriendHub/IFriendHub.cs
type IFriendHub (line 15) | public interface IFriendHub
method AddFriendAsync (line 17) | Task<LanguageKey> AddFriendAsync(FriendShipRequest friendPacket);
method GetFriendsAsync (line 18) | Task<List<CharacterRelationStatus>> GetFriendsAsync(long id);
method DeleteAsync (line 19) | Task<bool> DeleteAsync(Guid id);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/IMailHub.cs
type IMailHub (line 15) | public interface IMailHub
method GetMails (line 17) | Task<List<MailData>> GetMails(long id, long characterId, bool senderCo...
method DeleteMailAsync (line 18) | Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy);
method ViewMailAsync (line 19) | Task<MailData?> ViewMailAsync(long id, JsonPatch mailData);
method SendMailAsync (line 20) | Task<bool> SendMailAsync(MailRequest mail);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/MailHub.cs
class MailHub (line 17) | public class MailHub(IMailService mailService) : Hub, IMailHub
method GetMails (line 19) | public Task<List<MailData>> GetMails(long id, long characterId, bool s...
method DeleteMailAsync (line 21) | public Task<bool> DeleteMailAsync(long id, long characterId, bool send...
method ViewMailAsync (line 23) | public Task<MailData?> ViewMailAsync(long id, JsonPatch mailData) => m...
method SendMailAsync (line 25) | public Task<bool> SendMailAsync(MailRequest mail) => mailService.SendM...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/MailHub/MailHubClient.cs
class MailHubClient (line 16) | public class MailHubClient(HubConnectionFactory hubConnectionFactory, IL...
method GetMails (line 19) | public Task<List<MailData>> GetMails(long id, long characterId, bool s...
method DeleteMailAsync (line 22) | public Task<bool> DeleteMailAsync(long id, long characterId, bool send...
method ViewMailAsync (line 25) | public Task<MailData?> ViewMailAsync(long id, JsonPatch mailData) =>
method SendMailAsync (line 28) | public Task<bool> SendMailAsync(MailRequest mail) =>
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/IPubSubHub.cs
type IPubSubHub (line 15) | public interface IPubSubHub
method SendMessageAsync (line 17) | Task<bool> SendMessageAsync(IMessage message);
method SendMessagesAsync (line 19) | Task<bool> SendMessagesAsync(List<IMessage> messages);
method GetSubscribersAsync (line 21) | Task<List<Subscriber>> GetSubscribersAsync();
method SubscribeAsync (line 23) | Task<bool> SubscribeAsync(Subscriber subscriber);
method UnsubscribeAsync (line 25) | Task<bool> UnsubscribeAsync(long id);
type IPubSubHubClient (line 28) | public interface IPubSubHubClient : IPubSubHub
method StartAsync (line 32) | Task StartAsync();
method StopAsync (line 34) | Task StopAsync();
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/PubSubHub.cs
class PubSubHub (line 17) | public class PubSubHub(MasterClientList masterClientList)
method SendMessageAsync (line 20) | public async Task<bool> SendMessageAsync(IMessage message)
method SendMessagesAsync (line 26) | public async Task<bool> SendMessagesAsync(List<IMessage> messages)
method GetSubscribersAsync (line 35) | public Task<List<Subscriber>> GetSubscribersAsync()
method SubscribeAsync (line 40) | public Task<bool> SubscribeAsync(Subscriber subscriber)
method UnsubscribeAsync (line 52) | public Task<bool> UnsubscribeAsync(long id)
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/PubSub/PubSubHubClient.cs
class PubSubHubClient (line 14) | public class PubSubHubClient : IPubSubHubClient, IAsyncDisposable
method PubSubHubClient (line 26) | public PubSubHubClient(HubConnectionFactory hubConnectionFactory, ILog...
method StartAsync (line 56) | public async Task StartAsync()
method StopAsync (line 79) | public async Task StopAsync()
method EnsureConnectedAsync (line 97) | private async Task EnsureConnectedAsync()
method SendMessageAsync (line 105) | public async Task<bool> SendMessageAsync(IMessage message)
method SendMessagesAsync (line 111) | public async Task<bool> SendMessagesAsync(List<IMessage> messages)
method GetSubscribersAsync (line 117) | public async Task<List<Subscriber>> GetSubscribersAsync()
method SubscribeAsync (line 123) | public async Task<bool> SubscribeAsync(Subscriber subscriber)
method UnsubscribeAsync (line 129) | public async Task<bool> UnsubscribeAsync(long id)
method DisposeAsync (line 135) | public async ValueTask DisposeAsync()
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/IWarehouseHub.cs
type IWarehouseHub (line 15) | public interface IWarehouseHub
method GetWarehouseItems (line 17) | Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? ownerId, W...
method DeleteWarehouseItemAsync (line 18) | Task<bool> DeleteWarehouseItemAsync(Guid id);
method AddWarehouseItemAsync (line 19) | Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest depositRequest);
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/WarehouseHub.cs
class WarehouseHub (line 17) | public class WarehouseHub(IWarehouseService warehouseService) : Hub, IWa...
method GetWarehouseItems (line 19) | public Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? own...
method DeleteWarehouseItemAsync (line 21) | public Task<bool> DeleteWarehouseItemAsync(Guid id) => warehouseServic...
method AddWarehouseItemAsync (line 23) | public Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest deposi...
FILE: src/NosCore.GameObject/InterChannelCommunication/Hubs/WarehouseHub/WarehouseHubClient.cs
class WarehouseHubClient (line 16) | public class WarehouseHubClient(HubConnectionFactory hubConnectionFactor...
method GetWarehouseItems (line 19) | public Task<List<WarehouseLink>> GetWarehouseItems(Guid? id, long? own...
method DeleteWarehouseItemAsync (line 22) | public Task<bool> DeleteWarehouseItemAsync(Guid id) =>
method AddWarehouseItemAsync (line 25) | public Task<bool> AddWarehouseItemAsync(WareHouseDepositRequest deposi...
FILE: src/NosCore.GameObject/InterChannelCommunication/MasterClientList.cs
class MasterClientList (line 13) | public class MasterClientList
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/DeleteMailData.cs
class DeleteMailData (line 5) | public class DeleteMailData : IMessage
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/DisconnectData.cs
class DisconnectData (line 5) | public class DisconnectData : IMessage
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/IMessage.cs
type IMessage (line 11) | public interface IMessage
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/MailData.cs
class MailData (line 18) | public class MailData : IMessage
method GeneratePostMessage (line 27) | public PostPacket GeneratePostMessage(int type)
method GeneratePost (line 62) | public IPacket? GeneratePost(byte type)
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/PostedPacket.cs
class PostedPacket (line 12) | public class PostedPacket : IMessage
FILE: src/NosCore.GameObject/InterChannelCommunication/Messages/StatData.cs
class StatData (line 12) | public class StatData : IMessage
FILE: src/NosCore.GameObject/InterChannelCommunication/PolymorphicConverter.cs
class PolymorphicJsonConverter (line 13) | public class PolymorphicJsonConverter<T> : JsonConverter<T>
method CanConvert (line 16) | public override bool CanConvert(Type typeToConvert)
method Read (line 21) | public override T? Read(ref Utf8JsonReader reader, Type typeToConvert,...
method Write (line 73) | public override void Write(Utf8JsonWriter writer, T value, JsonSeriali...
FILE: src/NosCore.GameObject/Map/Map.cs
class Map (line 16) | public class Map : MapDto, IMapGrid
method GetFreePosition (line 50) | internal bool GetFreePosition(ref short firstX, ref short firstY, byte...
method IsBlockedZone (line 85) | public bool IsBlockedZone(short firstX, short firstY, short mapX, shor...
method IsWalkable (line 112) | public bool IsWalkable(short mapX, short mapY)
method IsWalkable (line 122) | private static bool IsWalkable(byte value)
FILE: src/NosCore.GameObject/Map/Portal.cs
class Portal (line 13) | public class Portal : PortalDto
method GenerateGp (line 18) | public GpPacket GenerateGp()
FILE: src/NosCore.GameObject/Messaging/Events/CharacterMovedEvent.cs
type CharacterMovedEvent (line 15) | public sealed record CharacterMovedEvent(ICharacterEntity Character, sho...
FILE: src/NosCore.GameObject/Messaging/Events/EntityCapturedEvent.cs
type EntityCapturedEvent (line 16) | public sealed record EntityCapturedEvent(IAliveEntity Victim, IAliveEnti...
FILE: src/NosCore.GameObject/Messaging/Events/EntityDamagedEvent.cs
type EntityDamagedEvent (line 13) | public sealed record EntityDamagedEvent(IAliveEntity Attacker, IAliveEnt...
FILE: src/NosCore.GameObject/Messaging/Events/EntityDiedEvent.cs
type EntityDiedEvent (line 14) | public sealed record EntityDiedEvent(
type RevivalMode (line 35) | public enum RevivalMode
FILE: src/NosCore.GameObject/Messaging/Events/GuriPacketReceivedEvent.cs
type GuriPacketReceivedEvent (line 15) | public sealed record GuriPacketReceivedEvent(ClientSession ClientSession...
FILE: src/NosCore.GameObject/Messaging/Events/ItemUsedEvent.cs
type ItemUsedEvent (line 16) | public sealed record ItemUsedEvent(ClientSession ClientSession, Inventor...
FILE: src/NosCore.GameObject/Messaging/Events/MapInstanceEnteredEvent.cs
type MapInstanceEnteredEvent (line 15) | public sealed record MapInstanceEnteredEvent(ClientSession ClientSession...
FILE: src/NosCore.GameObject/Messaging/Events/MapItemPickedUpEvent.cs
type MapItemPickedUpEvent (line 17) | public sealed record MapItemPickedUpEvent(
FILE: src/NosCore.GameObject/Messaging/Events/QuestCompletedEvent.cs
type QuestCompletedEvent (line 17) | public sealed record QuestCompletedEvent(ICharacterEntity Character, Cha...
FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/DeathBCardHandler.cs
class DeathBCardHandler (line 21) | [UsedImplicitly]
method Handle (line 24) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/MonsterAggroHandler.cs
class MonsterAggroHandler (line 18) | [UsedImplicitly]
method Handle (line 21) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/MonsterRespawnHandler.cs
class MonsterRespawnHandler (line 22) | [UsedImplicitly]
method Handle (line 25) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/PlayerRevivalHandler.cs
class PlayerRevivalHandler (line 33) | [UsedImplicitly]
method Handle (line 40) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Battle/RewardDistributionHandler.cs
class RewardDistributionHandler (line 17) | [UsedImplicitly]
method Handle (line 20) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/EmoticonHandler.cs
class EmoticonHandler (line 18) | [UsedImplicitly]
method Handle (line 21) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/MfaHandler.cs
class MfaHandler (line 17) | [UsedImplicitly]
method Handle (line 20) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/SpeakerHandler.cs
class SpeakerHandler (line 25) | [UsedImplicitly]
method CraftMessage (line 32) | private static string CraftMessage(string message, string[] valueSplit)
method Handle (line 42) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Guri/TitleHandler.cs
class TitleHandler (line 22) | [UsedImplicitly]
method Handle (line 25) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Map/MinilandEntranceHandler.cs
class MinilandEntranceHandler (line 21) | [UsedImplicitly]
method Handle (line 24) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/DropHandler.cs
class DropHandler (line 23) | [UsedImplicitly]
method Handle (line 26) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/GoldDropHandler.cs
class GoldDropHandler (line 26) | [UsedImplicitly]
method Handle (line 29) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/MapItem/SpChargerHandler.cs
class SpChargerHandler (line 18) | [UsedImplicitly]
method Handle (line 21) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/BazaarHandler.cs
class BazaarHandler (line 21) | [UsedImplicitly]
method HandleAsync (line 26) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/CellonItemHandler.cs
class CellonItemHandler (line 17) | [UsedImplicitly]
method HandleAsync (line 22) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/ChangeClassHandler.cs
class ChangeClassHandler (line 28) | [UsedImplicitly]
method HandleAsync (line 40) | public async Task HandleAsync(ClientSession session, IAliveEntity? tar...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/FinishedTsDialogHandler.cs
class TsDialogAdvance (line 18) | internal static class TsDialogAdvance
method AdvanceAsync (line 20) | public static Task AdvanceAsync(IQuestService questService, ClientSess...
class FinishedTsDialogHandler (line 36) | [UsedImplicitly]
method HandleAsync (line 41) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
class FinishedTsDialog2Handler (line 45) | [UsedImplicitly]
method HandleAsync (line 50) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
class FinishedTsHandler (line 54) | [UsedImplicitly]
method HandleAsync (line 59) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
class FinishedTs2Handler (line 63) | [UsedImplicitly]
method HandleAsync (line 68) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/INrunEventHandler.cs
type INrunEventHandler (line 15) | public interface INrunEventHandler
method HandleAsync (line 19) | Task HandleAsync(ClientSession session, IAliveEntity? target, NrunPack...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/OpenProductionHandler.cs
class OpenProductionHandler (line 18) | [UsedImplicitly]
method HandleAsync (line 23) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/OpenShopHandler.cs
class OpenShopHandler (line 20) | [UsedImplicitly]
method HandleAsync (line 25) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/SetPlaceOfRevivalHandler.cs
class SetPlaceOfRevivalHandler (line 20) | [UsedImplicitly]
method HandleAsync (line 25) | public async Task HandleAsync(ClientSession session, IAliveEntity? tar...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/TeleporterHandler.cs
class TeleporterHandler (line 22) | [UsedImplicitly]
method HandleAsync (line 27) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
method RemoveGoldAndTeleportAsync (line 44) | private async Task RemoveGoldAndTeleportAsync(ClientSession session, s...
FILE: src/NosCore.GameObject/Messaging/Handlers/Nrun/UpgradeItemHandler.cs
class UpgradeItemHandler (line 18) | [UsedImplicitly]
method HandleAsync (line 23) | public Task HandleAsync(ClientSession session, IAliveEntity? target, N...
FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnCharacterMovedHandler.cs
class OnCharacterMovedHandler (line 22) | [UsedImplicitly]
method Handle (line 27) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnEntityCapturedHandler.cs
class OnEntityCapturedHandler (line 20) | [UsedImplicitly]
method Handle (line 23) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnEntityDiedHandler.cs
class OnEntityDiedHandler (line 25) | [UsedImplicitly]
method Handle (line 28) | [UsedImplicitly]
method TryFindCharacter (line 57) | private static bool TryFindCharacter(IAliveEntity victim, Entity handl...
FILE: src/NosCore.GameObject/Messaging/Handlers/Quest/OnQuestCompletedHandler.cs
class OnQuestCompletedHandler (line 15) | [UsedImplicitly]
method Handle (line 18) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BackPackHandler.cs
class BackPackHandler (line 25) | [UsedImplicitly]
method Handle (line 28) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BazaarMedalsHandler.cs
class BazaarMedalsHandler (line 23) | [UsedImplicitly]
method Handle (line 26) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/BoxEffectHandler.cs
class BoxEffectHandler (line 25) | [UsedImplicitly]
method Handle (line 30) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/ChangeGenderHandler.cs
class ChangeGenderHandler (line 20) | [UsedImplicitly]
method Handle (line 23) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/HairDieHandler.cs
class HairDieHandler (line 20) | [UsedImplicitly]
method Handle (line 23) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/MinilandBellHandler.cs
class MinilandBellHandler (line 22) | [UsedImplicitly]
method Handle (line 25) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/PetBasketHandler.cs
class PetBasketHandler (line 25) | [UsedImplicitly]
method Handle (line 28) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SealedTarotCardHandler.cs
class SealedTarotCardHandler (line 21) | [UsedImplicitly]
method Handle (line 24) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SpRechargerHandler.cs
class SpRechargerHandler (line 19) | [UsedImplicitly]
method Handle (line 22) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/SpeakerHandler.cs
class SpeakerHandler (line 16) | [UsedImplicitly]
method Handle (line 19) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/TitleHandler.cs
class TitleHandler (line 16) | [UsedImplicitly]
method Handle (line 19) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/VehicleHandler.cs
class VehicleHandler (line 21) | [UsedImplicitly]
method Handle (line 27) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/Handlers/UseItem/WearHandler.cs
class WearHandler (line 30) | [UsedImplicitly]
method Handle (line 37) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/RecurringMessagePublisher.cs
class RecurringMessagePublisher (line 18) | public sealed class RecurringMessagePublisher<TMessage>(
method ExecuteAsync (line 23) | protected override async Task ExecuteAsync(CancellationToken stoppingT...
FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/RemoveTimeoutStaticBonusesHandler.cs
class RemoveTimeoutStaticBonusesHandler (line 16) | [UsedImplicitly]
method Handle (line 21) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/RemoveTimeoutStaticBonusesMessage.cs
type RemoveTimeoutStaticBonusesMessage (line 9) | public sealed record RemoveTimeoutStaticBonusesMessage;
FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/SaveAllSessionsHandler.cs
class SaveAllSessionsHandler (line 18) | [UsedImplicitly]
method Handle (line 25) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Messaging/ScheduledJobs/SaveAllSessionsMessage.cs
type SaveAllSessionsMessage (line 9) | public sealed record SaveAllSessionsMessage;
FILE: src/NosCore.GameObject/Messaging/WolverineDependencyRegistrar.cs
class WolverineDependencyRegistrar (line 40) | public static class WolverineDependencyRegistrar
method RegisterDependencies (line 42) | public static void RegisterDependencies(IServiceCollection services)
method IsSystemInterface (line 124) | private static bool IsSystemInterface(Type iface)
FILE: src/NosCore.GameObject/Messaging/WolverineHostExtensions.cs
class WolverineHostExtensions (line 13) | public static class WolverineHostExtensions
method UseNosCoreWolverine (line 24) | public static IHostBuilder UseNosCoreWolverine(this IHostBuilder build...
FILE: src/NosCore.GameObject/Networking/Broadcaster.cs
class Broadcaster (line 17) | public class Broadcaster : IBroadcastable
method Broadcaster (line 23) | private Broadcaster(ISessionGroupFactory sessionGroupFactory)
method Initialize (line 30) | public static void Initialize(ISessionGroupFactory sessionGroupFactory)
method UnregisterSession (line 42) | public void UnregisterSession(ClientSession.ClientSession clientSession)
method RegisterSession (line 52) | public void RegisterSession(ClientSession.ClientSession clientSession)
method GetSessions (line 62) | public IEnumerable<ClientSession.ClientSession> GetSessions()
method GetSessions (line 67) | public IEnumerable<ClientSession.ClientSession> GetSessions(Func<Clien...
method GetSession (line 73) | public ClientSession.ClientSession? GetSession(Func<ClientSession.Clie...
method Reset (line 79) | public static void Reset()
method ConnectedAccounts (line 84) | public List<Subscriber> ConnectedAccounts()
FILE: src/NosCore.GameObject/Networking/ClientSession/ClientSession.cs
class ClientSession (line 32) | public class ClientSession(
method GetHandler (line 93) | public IPacketHandler? GetHandler(Type packetType)
method GetPacketAttribute (line 98) | public PacketHeaderAttribute? GetPacketAttribute(Type packetType)
method AcquirePacketLockAsync (line 103) | public ValueTask<AsyncLock.Releaser> AcquirePacketLockAsync(Cancellati...
method InitializeAccount (line 106) | public void InitializeAccount(AccountDto accountDto)
method SetPlayerEntity (line 129) | public void SetPlayerEntity(Entity entity, MapWorld world)
method ClearPlayerEntity (line 140) | public void ClearPlayerEntity()
method HandlePacketAsync (line 150) | public async Task HandlePacketAsync(NosPackageInfo package)
method OnDisconnectedAsync (line 164) | public async Task OnDisconnectedAsync()
method GetMessageFromKey (line 214) | public string GetMessageFromKey(LanguageKey languageKey)
method HandlePacketsAsync (line 224) | public Task HandlePacketsAsync(IEnumerable<IPacket> packetConcatenated...
FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/ExchangeDisconnectHandler.cs
class ExchangeDisconnectHandler (line 14) | public class ExchangeDisconnectHandler(IExchangeService exchangeService,...
method HandleDisconnectAsync (line 16) | public async Task HandleDisconnectAsync(ClientSession session)
FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/FriendNotificationDisconnectHandler.cs
class FriendNotificationDisconnectHandler (line 19) | public class FriendNotificationDisconnectHandler(IFriendHub friendHub, I...
method HandleDisconnectAsync (line 21) | public async Task HandleDisconnectAsync(ClientSession session)
FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/MapDisconnectHandler.cs
class MapDisconnectHandler (line 13) | public class MapDisconnectHandler : ISessionDisconnectHandler
method HandleDisconnectAsync (line 15) | public async Task HandleDisconnectAsync(ClientSession session)
FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/MinilandDisconnectHandler.cs
class MinilandDisconnectHandler (line 14) | public class MinilandDisconnectHandler(IMinilandService minilandService,...
method HandleDisconnectAsync (line 18) | public async Task HandleDisconnectAsync(ClientSession session)
FILE: src/NosCore.GameObject/Networking/ClientSession/DisconnectHandlers/SaveDisconnectHandler.cs
class SaveDisconnectHandler (line 12) | public class SaveDisconnectHandler(ISaveService saveService) : ISessionD...
method HandleDisconnectAsync (line 16) | public async Task HandleDisconnectAsync(ClientSession session)
FILE: src/NosCore.GameObject/Networking/ClientSession/IPacketHandlingStrategy.cs
type IPacketHandlingStrategy (line 12) | public interface IPacketHandlingStrategy
method HandlePacketAsync (line 14) | Task HandlePacketAsync(IPacket packet, ClientSession session, bool isF...
FILE: src/NosCore.GameObject/Networking/ClientSession/ISessionDisconnectHandler.cs
type ISessionDisconnectHandler (line 11) | public interface ISessionDisconnectHandler
method HandleDisconnectAsync (line 15) | Task HandleDisconnectAsync(ClientSession session);
FILE: src/NosCore.GameObject/Networking/ClientSession/LoginPacketHandlingStrategy.cs
class LoginPacketHandlingStrategy (line 16) | public class LoginPacketHandlingStrategy(ILogger<LoginPacketHandlingStra...
method HandlePacketAsync (line 19) | public async Task HandlePacketAsync(IPacket packet, ClientSession sess...
FILE: src/NosCore.GameObject/Networking/ClientSession/NpcDialogRequestSubject.cs
class NpcDialogRequestSubject (line 13) | public sealed class NpcDialogRequestSubject;
FILE: src/NosCore.GameObject/Networking/ClientSession/RequestData.cs
class RequestData (line 9) | public class RequestData<T> : RequestData
method RequestData (line 11) | public RequestData(T data)
method RequestData (line 16) | public RequestData(ClientSession clientSession, T data) : base(clientS...
method RequestData (line 26) | public RequestData() : this(null!)
class RequestData (line 24) | public class RequestData(ClientSession clientSession) : IRequestData
method RequestData (line 11) | public RequestData(T data)
method RequestData (line 16) | public RequestData(ClientSession clientSession, T data) : base(clientS...
method RequestData (line 26) | public RequestData() : this(null!)
type IRequestData (line 33) | public interface IRequestData
FILE: src/NosCore.GameObject/Networking/ClientSession/WorldPacketHandlingStrategy.cs
class WorldPacketHandlingStrategy (line 22) | public class WorldPacketHandlingStrategy(ILogger<WorldPacketHandlingStra...
method HandlePacketAsync (line 25) | public async Task HandlePacketAsync(IPacket packet, ClientSession sess...
method ValidateKeepAliveAsync (line 80) | private async Task<bool> ValidateKeepAliveAsync(IPacket packet, Client...
method HandleInitialConnectionAsync (line 100) | private Task<bool> HandleInitialConnectionAsync(IPacket packet, Client...
method HandleEntryPointSequenceAsync (line 113) | private Task<IPacket?> HandleEntryPointSequenceAsync(IPacket packet, C...
method ValidateScope (line 149) | private bool ValidateScope(IPacket packet, ClientSession session, Pack...
method ValidateAuthority (line 178) | private bool ValidateAuthority(ClientSession session, PacketHeaderAttr...
method ExecuteHandlerAsync (line 189) | private async Task ExecuteHandlerAsync(IPacketHandler handler, IPacket...
FILE: src/NosCore.GameObject/Services/AuthService/AuthCodeService.cs
class AuthCodeService (line 11) | public class AuthCodeService : IAuthCodeService
method StoreAuthCode (line 17) | public void StoreAuthCode(string authCode, string accountName)
method GetAccountByAuthCode (line 22) | public string? GetAccountByAuthCode(string authCode)
method TryRemoveAuthCode (line 27) | public bool TryRemoveAuthCode(string authCode, out string? accountName)
method MarkReadyForAuth (line 32) | public void MarkReadyForAuth(string accountName, long sessionId)
method IsReadyForAuth (line 37) | public bool IsReadyForAuth(string accountName, long sessionId)
method ClearReadyForAuth (line 42) | public void ClearReadyForAuth(string accountName)
method RegisterSessionIp (line 47) | public void RegisterSessionIp(string accountName, string ipAddress)
method UnregisterSessionIp (line 52) | public void UnregisterSessionIp(string accountName)
method GetSessionIp (line 57) | public string? GetSessionIp(string accountName)
FILE: src/NosCore.GameObject/Services/AuthService/IAuthCodeService.cs
type IAuthCodeService (line 9) | public interface IAuthCodeService
method StoreAuthCode (line 11) | void StoreAuthCode(string authCode, string accountName);
method GetAccountByAuthCode (line 12) | string? GetAccountByAuthCode(string authCode);
method TryRemoveAuthCode (line 13) | bool TryRemoveAuthCode(string authCode, out string? accountName);
method MarkReadyForAuth (line 15) | void MarkReadyForAuth(string accountName, long sessionId);
method IsReadyForAuth (line 16) | bool IsReadyForAuth(string accountName, long sessionId);
method ClearReadyForAuth (line 17) | void ClearReadyForAuth(string accountName);
method RegisterSessionIp (line 19) | void RegisterSessionIp(string accountName, string ipAddress);
method UnregisterSessionIp (line 20) | void UnregisterSessionIp(string accountName);
method GetSessionIp (line 21) | string? GetSessionIp(string accountName);
FILE: src/NosCore.GameObject/Services/BattleService/AggroService.cs
class AggroService (line 19) | public sealed class AggroService(IClock clock) : IAggroService
method Current (line 24) | public AggroSnapshot Current(IAliveEntity entity)
method AddThreat (line 39) | public void AddThreat(IAliveEntity mob, IAliveEntity attacker, int dam...
method Clear (line 76) | public void Clear(IAliveEntity mob)
method TryReadAggro (line 82) | private static bool TryReadAggro(IAliveEntity entity, out AggroCompone...
FILE: src/NosCore.GameObject/Services/BattleService/BattleService.cs
class BattleService (line 33) | public sealed class BattleService(
method Hit (line 47) | public async Task Hit(IAliveEntity origin, IAliveEntity target, HitArg...
method ProcessHitAsync (line 103) | private async Task ProcessHitAsync(IAliveEntity origin, IAliveEntity t...
method SendTargetStatAsync (line 163) | private static Task SendTargetStatAsync(IAliveEntity target)
method BroadcastTargetInfoAsync (line 177) | private static Task BroadcastTargetInfoAsync(IAliveEntity target)
method BroadcastHitAsync (line 183) | private static Task BroadcastHitAsync(IAliveEntity origin, IAliveEntit...
method ScheduleCooldownReset (line 213) | private void ScheduleCooldownReset(IAliveEntity origin, SkillInfo skill)
method TickCooldownResetsAsync (line 222) | public async Task TickCooldownResetsAsync(MapInstance mapInstance)
method UpdateAttackerPosition (line 248) | private static void UpdateAttackerPosition(IAliveEntity origin, HitArg...
method CanAttack (line 262) | private static bool CanAttack(IAliveEntity origin, IAliveEntity target)
method AreAllies (line 271) | private static bool AreAllies(IAliveEntity a, IAliveEntity b)
method CancelAsync (line 278) | private static async Task CancelAsync(IAliveEntity origin, IAliveEntit...
FILE: src/NosCore.GameObject/Services/BattleService/BattleStatsProvider.cs
class BattleStatsProvider (line 24) | public sealed class BattleStatsProvider(IBuffService buffService) : IBat...
method GetStats (line 26) | public CombatStats GetStats(IAliveEntity entity)
method ResolveBaseStats (line 34) | private static CombatStats ResolveBaseStats(IAliveEntity entity) => en...
method FromMonster (line 41) | private static CombatStats FromMonster(NpcMonsterDto mob, byte level, ...
method FromCharacter (line 74) | private static CombatStats FromCharacter(ICharacterEntity character)
method ReadCombat (line 150) | private static CombatComponent ReadCombat(IAliveEntity entity)
method ApplyBuffs (line 164) | private static CombatStats ApplyBuffs(CombatStats stats, IReadOnlyColl...
method ScaleByLevel (line 283) | private static int ScaleByLevel(BCardDto card, int level)
FILE: src/NosCore.GameObject/Services/BattleService/BuffService.cs
class BuffService (line 28) | public sealed class BuffService(IClock clock) : IBuffService
method ApplyAsync (line 33) | public async Task ApplyAsync(IAliveEntity target, CardDto card, IReadO...
method ApplySkillBuffAsync (line 74) | public Task ApplySkillBuffAsync(IAliveEntity target, short skillVnum, ...
method RemoveAsync (line 108) | public Task RemoveAsync(IAliveEntity target, short cardId)
method GetActiveBuffs (line 115) | public IReadOnlyCollection<BuffInstance> GetActiveBuffs(IAliveEntity t...
method HasBuff (line 121) | public bool HasBuff(IAliveEntity target, short cardId)
method TickAsync (line 127) | public async Task<IReadOnlyList<BuffInstance>> TickAsync(IAliveEntity ...
method ResolveState (line 167) | private static ConcurrentDictionary<short, BuffInstance>? ResolveState...
method ClassifyBuffType (line 180) | private static BuffType ClassifyBuffType(CardDto card) => card.Propabi...
FILE: src/NosCore.GameObject/Services/BattleService/CaptureService.cs
class CaptureService (line 35) | public sealed class CaptureService(IDao<MateDto, long> mateDao, IMessage...
method IsCaptureSkill (line 43) | public bool IsCaptureSkill(SkillInfo skill) =>
method TryCaptureAsync (line 46) | public async Task TryCaptureAsync(IAliveEntity caster, IAliveEntity ta...
method HasCaptureBCard (line 122) | private static bool HasCaptureBCard(SkillInfo skill) =>
FILE: src/NosCore.GameObject/Services/BattleService/CharacterSkill.cs
class CharacterSkill (line 7) | public class CharacterSkill : CharacterSkillDto
method CharacterSkill (line 9) | public CharacterSkill()
method CanBeUsed (line 21) | public bool CanBeUsed()
FILE: src/NosCore.GameObject/Services/BattleService/DamageCalculator.cs
class DamageCalculator (line 18) | public sealed class DamageCalculator(IRandomProvider random) : IDamageCa...
method Calculate (line 32) | public DamageResult Calculate(CombatStats attacker, CombatStats defend...
method SelectAttackContext (line 119) | private static AttackContext SelectAttackContext(CombatStats attacker,...
method RollBaseDamage (line 183) | private int RollBaseDamage(int min, int max)
method Chebyshev (line 189) | private static int Chebyshev(CombatStats a, CombatStats b)
method NegativeUpgradeDefenceBonus (line 201) | private static double NegativeUpgradeDefenceBonus(int upgrade) => upgr...
method PositiveUpgradeDamageBonus (line 216) | private static double PositiveUpgradeDamageBonus(int upgrade) => upgra...
method ComputeElementalDamage (line 231) | private static int ComputeElementalDamage(CombatStats attacker, Combat...
type AttackContext (line 259) | private struct AttackContext
FILE: src/NosCore.GameObject/Services/BattleService/DamageResult.cs
type DamageResult (line 11) | public record DamageResult(int Damage, SuPacketHitMode HitMode);
FILE: src/NosCore.GameObject/Services/BattleService/HitArguments.cs
type HitArguments (line 9) | public record HitArguments()
FILE: src/NosCore.GameObject/Services/BattleService/HitQueue.cs
class HitQueue (line 28) | public sealed class HitQueue(
method EnqueueAsync (line 37) | public Task<HitOutcome> EnqueueAsync(HitRequest request)
method CreateChannel (line 57) | private Channel<HitRequest> CreateChannel(IAliveEntity target)
method ProcessAsync (line 69) | private async Task ProcessAsync(IAliveEntity target, Channel<HitReques...
method TryApplyHit (line 101) | private Task TryApplyHit(HitRequest request)
method FlipIsAlive (line 179) | private static void FlipIsAlive(IAliveEntity entity, bool alive)
method DrainAsCancelled (line 189) | private static void DrainAsCancelled(Channel<HitRequest> channel)
FILE: src/NosCore.GameObject/Services/BattleService/IAggroService.cs
type IAggroService (line 15) | public interface IAggroService
method Current (line 17) | AggroSnapshot Current(IAliveEntity entity);
method AddThreat (line 19) | void AddThreat(IAliveEntity mob, IAliveEntity attacker, int damage);
method Clear (line 21) | void Clear(IAliveEntity mob);
type AggroSnapshot (line 24) | public readonly record struct AggroSnapshot(long TargetVisualId, int Thr...
FILE: src/NosCore.GameObject/Services/BattleService/IBattleService.cs
type IBattleService (line 17) | public interface IBattleService
method Hit (line 19) | Task Hit(IAliveEntity origin, IAliveEntity target, HitArguments argume...
method TickCooldownResetsAsync (line 24) | Task TickCooldownResetsAsync(MapInstance mapInstance);
FILE: src/NosCore.GameObject/Services/BattleService/IBattleStatsProvider.cs
type IBattleStatsProvider (line 15) | public interface IBattleStatsProvider
method GetStats (line 17) | CombatStats GetStats(IAliveEntity entity);
FILE: src/NosCore.GameObject/Services/BattleService/IBuffService.cs
type IBuffService (line 18) | public interface IBuffService
method ApplyAsync (line 20) | Task ApplyAsync(IAliveEntity target, CardDto card, IReadOnlyList<BCard...
method ApplySkillBuffAsync (line 26) | Task ApplySkillBuffAsync(IAliveEntity target, short skillVnum, short s...
method RemoveAsync (line 28) | Task RemoveAsync(IAliveEntity target, short cardId);
method GetActiveBuffs (line 30) | IReadOnlyCollection<BuffInstance> GetActiveBuffs(IAliveEntity target);
method HasBuff (line 32) | bool HasBuff(IAliveEntity target, short cardId);
method TickAsync (line 36) | Task<IReadOnlyList<BuffInstance>> TickAsync(IAliveEntity target);
FILE: src/NosCore.GameObject/Services/BattleService/ICaptureService.cs
type ICaptureService (line 16) | public interface ICaptureService
method IsCaptureSkill (line 20) | bool IsCaptureSkill(SkillInfo skill);
method TryCaptureAsync (line 26) | Task TryCaptureAsync(IAliveEntity caster, IAliveEntity target, SkillIn...
FILE: src/NosCore.GameObject/Services/BattleService/IDamageCalculator.cs
type IDamageCalculator (line 14) | public interface IDamageCalculator
method Calculate (line 16) | DamageResult Calculate(CombatStats attacker, CombatStats defender, Ski...
FILE: src/NosCore.GameObject/Services/BattleService/IHitQueue.cs
type IHitQueue (line 17) | public interface IHitQueue
method EnqueueAsync (line 19) | Task<HitOutcome> EnqueueAsync(HitRequest request);
FILE: src/NosCore.GameObject/Services/BattleService/IMonsterAi.cs
type IMonsterAi (line 17) | public interface IMonsterAi
method TickAsync (line 22) | Task<bool> TickAsync(INonPlayableEntity entity);
FILE: src/NosCore.GameObject/Services/BattleService/INpcCombatCatalog.cs
type INpcCombatCatalog (line 16) | public interface INpcCombatCatalog
method GetSkills (line 18) | IReadOnlyList<NpcMonsterSkillDto> GetSkills(short npcMonsterVnum);
method GetDrops (line 20) | IReadOnlyList<DropDto> GetDrops(short npcMonsterVnum);
method GetNpcBCards (line 22) | IReadOnlyList<BCardDto> GetNpcBCards(short npcMonsterVnum);
method GetDeathBCards (line 24) | IReadOnlyList<BCardDto> GetDeathBCards(short npcMonsterVnum);
method GetSkillBCards (line 26) | IReadOnlyList<BCardDto> GetSkillBCards(short skillVnum);
FILE: src/NosCore.GameObject/Services/BattleService/IRandomProvider.cs
type IRandomProvider (line 13) | public interface IRandomProvider
method Next (line 15) | int Next(int minInclusive, int maxExclusive);
method NextDouble (line 17) | double NextDouble();
class RandomProvider (line 20) | public sealed class RandomProvider : IRandomProvider
method Next (line 22) | public int Next(int minInclusive, int maxExclusive) => Random.Shared.N...
method NextDouble (line 24) | public double NextDouble() => Random.Shared.NextDouble();
FILE: src/NosCore.GameObject/Services/BattleService/IRegenerationService.cs
type IRegenerationService (line 15) | public interface IRegenerationService
method TickAsync (line 17) | Task TickAsync(MapInstance mapInstance);
method NotifyDamaged (line 23) | void NotifyDamaged(long characterId);
FILE: src/NosCore.GameObject/Services/BattleService/IRespawnService.cs
type IRespawnService (line 11) | public interface IRespawnService
method ResolveRespawnMapTypeId (line 16) | long? ResolveRespawnMapTypeId(short mapId);
method GetRespawnLocation (line 20) | (short MapId, short X, short Y) GetRespawnLocation(ICharacterEntity ch...
method SetRespawnPoint (line 24) | void SetRespawnPoint(ICharacterEntity character, short mapId, short x,...
FILE: src/NosCore.GameObject/Services/BattleService/IRewardService.cs
type IRewardService (line 14) | public interface IRewardService
method DistributeAsync (line 16) | Task DistributeAsync(IAliveEntity victim, IAliveEntity? killer, IReadO...
FILE: src/NosCore.GameObject/Services/BattleService/ISkillResolver.cs
type ISkillResolver (line 15) | public interface ISkillResolver
method Resolve (line 17) | SkillInfo? Resolve(IAliveEntity caster, long castId);
FILE: src/NosCore.GameObject/Services/BattleService/ITargetResolver.cs
type ITargetResolver (line 17) | public interface ITargetResolver
method Resolve (line 19) | IReadOnlyList<IAliveEntity> Resolve(IAliveEntity attacker, IAliveEntit...
FILE: src/NosCore.GameObject/Services/BattleService/Model/BuffInstance.cs
type BuffInstance (line 17) | public sealed record BuffInstance(
FILE: src/NosCore.GameObject/Services/BattleService/Model/CombatStats.cs
type CombatStats (line 16) | public readonly record struct CombatStats(
FILE: src/NosCore.GameObject/Services/BattleService/Model/HitOutcome.cs
type HitStatus (line 11) | public enum HitStatus
type HitOutcome (line 20) | public sealed record HitOutcome(
FILE: src/NosCore.GameObject/Services/BattleService/Model/HitRequest.cs
type HitRequest (line 15) | public sealed record HitRequest(
FILE: src/NosCore.GameObject/Services/BattleService/Model/SkillInfo.cs
type SkillInfo (line 15) | public sealed record SkillInfo(
FILE: src/NosCore.GameObject/Services/BattleService/MonsterAi.cs
class MonsterAi (line 45) | public sealed class MonsterAi : IMonsterAi, ISingletonService
method MonsterAi (line 58) | public MonsterAi(
method MonsterAi (line 74) | public MonsterAi(
method TickAsync (line 102) | public async Task<bool> TickAsync(INonPlayableEntity entity)
method DetectNearbyEnemy (line 168) | private IAliveEntity? DetectNearbyEnemy(INonPlayableEntity entity)
method ResolveTarget (line 228) | private IAliveEntity? ResolveTarget(INonPlayableEntity entity, long vi...
method PickSkill (line 254) | private ChosenSkill? PickSkill(INonPlayableEntity entity)
method AttackAsync (line 286) | private async Task AttackAsync(INonPlayableEntity entity, IAliveEntity...
method StepTowardAsync (line 312) | private async Task StepTowardAsync(INonPlayableEntity entity, IAliveEn...
method TryReturnHomeAsync (line 351) | private async Task<bool> TryReturnHomeAsync(INonPlayableEntity entity)
type CachedPath (line 383) | private sealed record CachedPath(short TargetX, short TargetY, List<(s...
type ChosenSkill (line 385) | private sealed record ChosenSkill(short SkillVnum, long CastId, int Sk...
FILE: src/NosCore.GameObject/Services/BattleService/NpcCombatCatalog.cs
class NpcCombatCatalog (line 18) | public sealed class NpcCombatCatalog : INpcCombatCatalog, ISingletonService
method NpcCombatCatalog (line 30) | public NpcCombatCatalog(
method GetSkills (line 60) | public IReadOnlyList<NpcMonsterSkillDto> GetSkills(short npcMonsterVnum)
method GetDrops (line 63) | public IReadOnlyList<DropDto> GetDrops(short npcMonsterVnum)
method GetNpcBCards (line 66) | public IReadOnlyList<BCardDto> GetNpcBCards(short npcMonsterVnum)
method GetDeathBCards (line 69) | public IReadOnlyList<BCardDto> GetDeathBCards(short npcMonsterVnum)
method GetSkillBCards (line 72) | public IReadOnlyList<BCardDto> GetSkillBCards(short skillVnum)
FILE: src/NosCore.GameObject/Services/BattleService/RegenerationService.cs
class RegenerationService (line 27) | public sealed class RegenerationService(
method NotifyDamaged (line 47) | public void NotifyDamaged(long characterId)
method TickAsync (line 52) | public async Task TickAsync(MapInstance mapInstance)
FILE: src/NosCore.GameObject/Services/BattleService/RespawnService.cs
class RespawnService (line 19) | public sealed class RespawnService(
method ResolveRespawnMapTypeId (line 26) | public long? ResolveRespawnMapTypeId(short mapId)
method GetRespawnLocation (line 35) | public (short MapId, short X, short Y) GetRespawnLocation(ICharacterEn...
method SetRespawnPoint (line 61) | public void SetRespawnPoint(ICharacterEntity character, short mapId, s...
FILE: src/NosCore.GameObject/Services/BattleService/RewardService.cs
class RewardService (line 37) | public sealed class RewardService(
method DistributeAsync (line 51) | public async Task DistributeAsync(IAliveEntity victim, IAliveEntity? k...
method AwardExperienceAsync (line 89) | private async Task AwardExperienceAsync(IAliveEntity victim, NpcMonste...
method AwardReputationAsync (line 136) | private static async Task AwardReputationAsync(PlayerComponentBundle p...
method AwardDignityAsync (line 146) | private static async Task AwardDignityAsync(PlayerComponentBundle play...
method SpawnDropsAsync (line 160) | private async Task SpawnDropsAsync(IAliveEntity victim, NpcMonsterDto ...
method SpawnGoldAsync (line 183) | private async Task SpawnGoldAsync(IAliveEntity victim, NpcMonsterDto m...
method TryFindPlayer (line 210) | private static bool TryFindPlayer(IAliveEntity victim, Entity handle, ...
FILE: src/NosCore.GameObject/Services/BattleService/SkillResolver.cs
class SkillResolver (line 20) | public sealed class SkillResolver : ISkillResolver
method SkillResolver (line 27) | public SkillResolver(List<SkillDto> skills, INpcCombatCatalog catalog)
method SkillResolver (line 32) | public SkillResolver(IReadOnlyDictionary<short, SkillDto> skillsByVnum...
method Resolve (line 38) | public SkillInfo? Resolve(IAliveEntity caster, long castId)
method ResolveCharacter (line 48) | private SkillInfo? ResolveCharacter(ICharacterEntity character, long c...
method ResolveNpc (line 66) | private SkillInfo? ResolveNpc(INonPlayableEntity npc, long castId)
method ResolveNpcSkill (line 102) | private SkillDto? ResolveNpcSkill(NpcMonsterDto mob, long castId)
method BuildInfo (line 121) | private SkillInfo BuildInfo(SkillDto main, SkillDto? upgrade, long cas...
FILE: src/NosCore.GameObject/Services/BattleService/SkillResult.cs
type SkillResult (line 9) | public record SkillResult
FILE: src/NosCore.GameObject/Services/BattleService/TargetResolver.cs
class TargetResolver (line 22) | public sealed class TargetResolver(ISessionRegistry sessionRegistry) : I...
method Resolve (line 24) | public IReadOnlyList<IAliveEntity> Resolve(IAliveEntity attacker, IAli...
method IsEnemy (line 76) | private static bool IsEnemy(IAliveEntity attacker, IAliveEntity candid...
method WithinRange (line 89) | private static bool WithinRange(short cx, short cy, short x, short y, ...
FILE: src/NosCore.GameObject/Services/BazaarService/BazaarRegistry.cs
class BazaarRegistry (line 17) | public class BazaarRegistry : IBazaarRegistry
method BazaarRegistry (line 21) | public BazaarRegistry(IDao<BazaarItemDto, long> bazaarItemDao,
method GetAll (line 39) | public IEnumerable<BazaarLink> GetAll() => _bazaarItems.Values;
method GetById (line 41) | public BazaarLink? GetById(long bazaarItemId) =>
method GetBySellerId (line 44) | public IEnumerable<BazaarLink> GetBySellerId(long sellerId) =>
method Register (line 47) | public void Register(long bazaarItemId, BazaarLink bazaarLink) =>
method Unregister (line 50) | public bool Unregister(long bazaarItemId) =>
method Update (line 53) | public void Update(long bazaarItemId, BazaarLink bazaarLink) =>
method CountBySellerId (line 56) | public int CountBySellerId(long sellerId) =>
FILE: src/NosCore.GameObject/Services/BazaarService/BazaarService.cs
class BazaarService (line 25) | public class BazaarService(IBazaarRegistry bazaarRegistry, IDao<BazaarIt...
method GetBazaar (line 29) | public List<BazaarLink> GetBazaar(long id, byte? index, byte? pageSize...
method DeleteBazaarAsync (line 155) | public async Task<bool> DeleteBazaarAsync(long id, short count, string...
method AddBazaarAsync (line 191) | public async Task<LanguageKey> AddBazaarAsync(Guid itemInstanceId, lon...
method ModifyBazaarAsync (line 244) | public async Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.J...
FILE: src/NosCore.GameObject/Services/BazaarService/IBazaarRegistry.cs
type IBazaarRegistry (line 12) | public interface IBazaarRegistry
method GetAll (line 14) | IEnumerable<BazaarLink> GetAll();
method GetById (line 15) | BazaarLink? GetById(long bazaarItemId);
method GetBySellerId (line 16) | IEnumerable<BazaarLink> GetBySellerId(long sellerId);
method Register (line 17) | void Register(long bazaarItemId, BazaarLink bazaarLink);
method Unregister (line 18) | bool Unregister(long bazaarItemId);
method Update (line 19) | void Update(long bazaarItemId, BazaarLink bazaarLink);
method CountBySellerId (line 20) | int CountBySellerId(long sellerId);
FILE: src/NosCore.GameObject/Services/BazaarService/IBazaarService.cs
type IBazaarService (line 16) | public interface IBazaarService
method GetBazaar (line 18) | List<BazaarLink> GetBazaar(long id, byte? index, byte? pageSize, Bazaa...
method DeleteBazaarAsync (line 21) | Task<bool> DeleteBazaarAsync(long id, short count, string requestChara...
method AddBazaarAsync (line 23) | Task<LanguageKey> AddBazaarAsync(Guid itemInstanceId, long characterId...
method ModifyBazaarAsync (line 25) | Task<BazaarLink?> ModifyBazaarAsync(long id, Json.Patch.JsonPatch bzMod);
FILE: src/NosCore.GameObject/Services/BlackListService/BlacklistService.cs
class BlacklistService (line 23) | public class BlacklistService(IPubSubHub pubSubHub, IChannelHub channelHub,
method BlacklistPlayerAsync (line 27) | public async Task<LanguageKey> BlacklistPlayerAsync(long characterId, ...
method GetBlacklistedListAsync (line 68) | public async Task<List<CharacterRelationStatus>> GetBlacklistedListAsy...
method UnblacklistAsync (line 98) | public async Task<bool> UnblacklistAsync(Guid id)
FILE: src/NosCore.GameObject/Services/BlackListService/IBlacklistService.cs
type IBlacklistService (line 15) | public interface IBlacklistService
method BlacklistPlayerAsync (line 17) | Task<LanguageKey> BlacklistPlayerAsync(long characterId, long secondCh...
method GetBlacklistedListAsync (line 18) | Task<List<CharacterRelationStatus>> GetBlacklistedListAsync(long id);
method UnblacklistAsync (line 19) | Task<bool> UnblacklistAsync(Guid id);
FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketBroadcaster.cs
type IPacketBroadcaster (line 13) | public interface IPacketBroadcaster
method SendToAsync (line 15) | Task SendToAsync(IPacketTarget target, IPacket packet);
method SendToAsync (line 16) | Task SendToAsync(IPacketTarget target, IEnumerable<IPacket> packets);
FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketSender.cs
type IPacketSender (line 13) | public interface IPacketSender
method SendPacketAsync (line 15) | Task SendPacketAsync(IPacket? packet);
method SendPacketsAsync (line 16) | Task SendPacketsAsync(IEnumerable<IPacket?> packets);
FILE: src/NosCore.GameObject/Services/BroadcastService/IPacketTarget.cs
type IPacketTarget (line 11) | public interface IPacketTarget { }
type SessionTarget (line 13) | public record SessionTarget(string ChannelId) : IPacketTarget;
type CharacterTarget (line 15) | public record CharacterTarget(long CharacterId) : IPacketTarget;
type MapTarget (line 17) | public record MapTarget(Guid MapInstanceId, Func<long, bool>? ExcludeFil...
type GroupTarget (line 19) | public record GroupTarget(long GroupId) : IPacketTarget;
type EveryoneTarget (line 21) | public record EveryoneTarget(Func<long, bool>? ExcludeFilter = null) : I...
class Targets (line 23) | public static class Targets
method Session (line 25) | public static SessionTarget Session(string channelId) => new(channelId);
method Character (line 26) | public static CharacterTarget Character(long characterId) => new(chara...
method Map (line 27) | public static MapTarget Map(Guid mapInstanceId, Func<long, bool>? excl...
method MapExcept (line 28) | public static MapTarget MapExcept(Guid mapInstanceId, long excludeChar...
method Group (line 29) | public static GroupTarget Group(long groupId) => new(groupId);
method Everyone (line 30) | public static EveryoneTarget Everyone(Func<long, bool>? excludeFilter ...
FILE: src/NosCore.GameObject/Services/BroadcastService/ISessionRegistry.cs
type ISessionRegistry (line 17) | public interface ISessionRegistry
method Register (line 19) | void Register(SessionInfo sessionInfo);
method Unregister (line 20) | void Unregister(string channelId);
method UpdateCharacter (line 21) | void UpdateCharacter(string channelId, long characterId, Guid? mapInst...
method GetSenderByChannelId (line 23) | IPacketSender? GetSenderByChannelId(string channelId);
method GetSenderByCharacterId (line 24) | IPacketSender? GetSenderByCharacterId(long characterId);
method GetSessionByCharacterId (line 25) | ClientSession? GetSessionByCharacterId(long characterId);
method GetSession (line 26) | ClientSession? GetSession(Func<ClientSession, bool> predicate);
method GetSessions (line 27) | IEnumerable<ClientSession> GetSessions(Func<ClientSession, bool>? pred...
method GetSessionsByMapInstance (line 28) | IEnumerable<SessionInfo> GetSessionsByMapInstance(Guid mapInstanceId);
method GetSessionsByGroup (line 29) | IEnumerable<SessionInfo> GetSessionsByGroup(long groupId);
method GetAllSessions (line 30) | IEnumerable<SessionInfo> GetAllSessions();
method GetClientSessionsByMapInstance (line 31) | IEnumerable<ClientSession> GetClientSessionsByMapInstance(Guid mapInst...
method GetCharacter (line 32) | PlayerComponentBundle GetCharacter(Func<PlayerComponentBundle, bool> p...
method TryGetCharacter (line 33) | bool TryGetCharacter(Func<PlayerComponentBundle, bool> predicate, out ...
method GetCharacters (line 34) | IEnumerable<PlayerComponentBundle> GetCharacters(Func<PlayerComponentB...
method BroadcastPacketAsync (line 36) | Task BroadcastPacketAsync(IPacket packet);
method BroadcastPacketAsync (line 37) | Task BroadcastPacketAsync(IPacket packet, string excludeChannelId);
method DisconnectByCharacterIdAsync (line 38) | Task DisconnectByCharacterIdAsync(long characterId);
method GetConnectedAccounts (line 40) | List<Subscriber> GetConnectedAccounts();
class SessionInfo (line 43) | public class SessionInfo
FILE: src/NosCore.GameObject/Services/BroadcastService/PacketBroadcaster.cs
class PacketBroadcaster (line 14) | public class PacketBroadcaster(ISessionRegistry sessionRegistry) : IPack...
method SendToAsync (line 16) | public async Task SendToAsync(IPacketTarget target, IPacket packet)
method SendToAsync (line 21) | public async Task SendToAsync(IPacketTarget target, IEnumerable<IPacke...
method GetTargetSessions (line 30) | private IEnumerable<SessionInfo> GetTargetSessions(IPacketTarget target)
method GetSessionByChannelId (line 53) | private IEnumerable<SessionInfo> GetSessionByChannelId(string channelId)
method GetSessionByCharacterId (line 66) | private IEnumerable<SessionInfo> GetSessionByCharacterId(long characte...
method FilterSessions (line 75) | private static IEnumerable<SessionInfo> FilterSessions(IEnumerable<Ses...
FILE: src/NosCore.GameObject/Services/BroadcastService/SessionRegistry.cs
class SessionRegistry (line 20) | public class SessionRegistry(ILogger<SessionRegistry> logger) : ISession...
method Register (line 25) | public void Register(SessionInfo sessionInfo)
method Unregister (line 30) | public void Unregister(string channelId)
method UpdateCharacter (line 38) | public void UpdateCharacter(string channelId, long characterId, Guid? ...
method GetSenderByChannelId (line 53) | public IPacketSender? GetSenderByChannelId(string channelId)
method GetSenderByCharacterId (line 58) | public IPacketSender? GetSenderByCharacterId(long characterId)
method GetSessionByCharacterId (line 67) | public ClientSession? GetSessionByCharacterId(long characterId)
method GetSession (line 77) | public ClientSession? GetSession(Func<ClientSession, bool> predicate)
method GetSessions (line 85) | public IEnumerable<ClientSession> GetSessions(Func<ClientSession, bool...
method GetSessionsByMapInstance (line 95) | public IEnumerable<SessionInfo> GetSessionsByMapInstance(Guid mapInsta...
method GetClientSessionsByMapInstance (line 100) | public IEnumerable<ClientSession> GetClientSessionsByMapInstance(Guid ...
method GetCharacter (line 109) | public PlayerComponentBundle GetCharacter(Func<PlayerComponentBundle, ...
method TryGetCharacter (line 118) | public bool TryGetCharacter(Func<PlayerComponentBundle, bool> predicat...
method GetCharacters (line 136) | public IEnumerable<PlayerComponentBundle> GetCharacters(Func<PlayerCom...
method GetSessionsByGroup (line 146) | public IEnumerable<SessionInfo> GetSessionsByGroup(long groupId)
method GetAllSessions (line 151) | public IEnumerable<SessionInfo> GetAllSessions()
method BroadcastPacketAsync (line 156) | public async Task BroadcastPacketAsync(IPacket packet)
method BroadcastPacketAsync (line 172) | public async Task BroadcastPacketAsync(IPacket packet, string excludeC...
method DisconnectByCharacterIdAsync (line 190) | public async Task DisconnectByCharacterIdAsync(long characterId)
method GetConnectedAccounts (line 199) | public List<Subscriber> GetConnectedAccounts()
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/ChannelCommunicationRunner.cs
class ChannelCommunicationRunner (line 23) | [UsedImplicitly]
method ChannelCommunicationRunner (line 31) | public ChannelCommunicationRunner(
method OnMessageReceived (line 47) | private void OnMessageReceived(IMessage message)
method StartAsync (line 69) | public async Task StartAsync(CancellationToken cancellationToken)
method StopAsync (line 74) | public async Task StopAsync(CancellationToken cancellationToken)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/DeleteMailDataMessageChannelCommunicationMessageHandler.cs
class DeleteMailDataMessageChannelCommunicationMessageHandler (line 14) | public class DeleteMailDataMessageChannelCommunicationMessageHandler(ISe...
method Handle (line 16) | public override async Task Handle(DeleteMailData data)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/DisconnectDataMessageChannelCommunicationMessageHandler.cs
class DisconnectDataMessageChannelCommunicationMessageHandler (line 13) | public class DisconnectDataMessageChannelCommunicationMessageHandler(ISe...
method Handle (line 15) | public override async Task Handle(DisconnectData data)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/IChannelCommunicationMessageHandler.cs
type IChannelCommunicationMessageHandler (line 12) | public interface IChannelCommunicationMessageHandler<in T> where T : IMe...
method Handle (line 14) | Task Handle(T message);
class ChannelCommunicationMessageHandler (line 17) | public abstract class ChannelCommunicationMessageHandler<T> : IChannelCo...
method Handle (line 19) | public abstract Task Handle(T message);
method Handle (line 21) | public Task Handle(IMessage message)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/MailDataMessageChannelCommunicationMessageHandler.cs
class MailDataMessageChannelCommunicationMessageHandler (line 17) | public class MailDataMessageChannelCommunicationMessageHandler(IGameLang...
method Handle (line 19) | public override async Task Handle(MailData data)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/PostedPacketMessageChannelCommunicationMessageHandler.cs
class PostedPacketMessageChannelCommunicationMessageHandler (line 19) | public class PostedPacketMessageChannelCommunicationMessageHandler(ILogg...
method Handle (line 22) | public override async Task Handle(PostedPacket postedPacket)
FILE: src/NosCore.GameObject/Services/ChannelCommunicationService/Handlers/StatDataMessageChannelCommunicationMessageHandler.cs
class StatDataMessageChannelCommunicationMessageHandler (line 30) | public class StatDataMessageChannelCommunicationMessageHandler(ILogger<S...
method Handle (line 34) | public override async Task Handle(StatData data)
FILE: src/NosCore.GameObject/Services/ChannelService/ChannelService.cs
class ChannelService (line 17) | public class ChannelService(IAuthHub authHttpClient,
method MoveChannelAsync (line 21) | public async Task MoveChannelAsync(Networking.ClientSession.ClientSess...
FILE: src/NosCore.GameObject/Services/ChannelService/IChannelService.cs
type IChannelService (line 11) | public interface IChannelService
method MoveChannelAsync (line 13) | Task MoveChannelAsync(Networking.ClientSession.ClientSession clientSes...
FILE: src/NosCore.GameObject/Services/CharacterService/CharacterInitializationService.cs
class CharacterInitializationService (line 14) | public class CharacterInitializationService : ICharacterInitializationSe...
method CharacterInitializationService (line 19) | public CharacterInitializationService(
method InitializeAsync (line 27) | public Task InitializeAsync(PlayerComponentBundle player)
FILE: src/NosCore.GameObject/Services/CharacterService/ICharacterInitializationService.cs
type ICharacterInitializationService (line 12) | public interface ICharacterInitializationService
method InitializeAsync (line 14) | Task InitializeAsync(PlayerComponentBundle player);
FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeData.cs
class ExchangeData (line 12) | public class ExchangeData
FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeRequestRegistry.cs
class ExchangeRequestRegistry (line 12) | public class ExchangeRequestRegistry : IExchangeRequestRegistry
method GetExchangeData (line 18) | public ExchangeData? GetExchangeData(long characterId) =>
method SetExchangeData (line 21) | public void SetExchangeData(long characterId, ExchangeData data) =>
method RemoveExchangeData (line 24) | public bool RemoveExchangeData(long characterId) =>
method GetExchangeRequest (line 27) | public long? GetExchangeRequest(long characterId) =>
method GetExchangeRequestPair (line 30) | public KeyValuePair<long, long>? GetExchangeRequestPair(long characterId)
method SetExchangeRequest (line 45) | public void SetExchangeRequest(long characterId, long targetCharacterId)
method RemoveExchangeRequest (line 51) | public bool RemoveExchangeRequest(long characterId)
method HasExchange (line 68) | public bool HasExchange(long characterId) =>
FILE: src/NosCore.GameObject/Services/ExchangeService/ExchangeService.cs
class ExchangeService (line 29) | public class ExchangeService(IItemGenerationService itemBuilderService,
method SetGold (line 34) | public void SetGold(long visualId, long gold, long bankGold)
method ValidateExchange (line 44) | public Tuple<ExchangeResultType, Dictionary<long, IPacket>?> ValidateE...
method ConfirmExchange (line 131) | public void ConfirmExchange(long visualId)
method IsExchangeConfirmed (line 140) | public bool IsExchangeConfirmed(long visualId)
method GetData (line 145) | public ExchangeData GetData(long visualId)
method AddItems (line 150) | public void AddItems(long visualId, InventoryItemInstance item, short ...
method CheckExchange (line 163) | public bool CheckExchange(long visualId)
method GetTargetId (line 168) | public long? GetTargetId(long visualId)
method CheckExchange (line 179) | public bool CheckExchange(long visualId, long targetId)
method CloseExchange (line 187) | public ExcClosePacket? CloseExchange(long visualId, ExchangeResultType...
method OpenExchange (line 213) | public bool OpenExchange(long visualId, long targetVisualId)
method ProcessExchange (line 228) | public List<KeyValuePair<long, IvnPacket>> ProcessExchange(long firstU...
FILE: src/NosCore.GameObject/Services/ExchangeService/IExchangeRequestRegistry.cs
type IExchangeRequestRegistry (line 11) | public interface IExchangeRequestRegistry
method GetExchangeData (line 13) | ExchangeData? GetExchangeData(long characterId);
method SetExchangeData (line 14) | void SetExchangeData(long characterId, ExchangeData data);
method RemoveExchangeData (line 15) | bool RemoveExchangeData(long characterId);
method GetExchangeRequest (line 17) | long? GetExchangeRequest(long characterId);
method GetExchangeRequestPair (line 18) | KeyValuePair<long, long>? GetExchangeRequestPair(long characterId);
method SetExchangeRequest (line 19) | void SetExchangeRequest(long characterId, long targetCharacterId);
method RemoveExchangeRequest (line 20) | bool RemoveExchangeRequest(long characterId);
method HasExchange (line 21) | bool HasExchange(long characterId);
FILE: src/NosCore.GameObject/Services/ExchangeService/IExchangeService.cs
type IExchangeService (line 19) | public interface IExchangeService
method SetGold (line 21) | void SetGold(long visualId, long gold, long bankGold);
method ValidateExchange (line 23) | Tuple<ExchangeResultType, Dictionary<long, IPacket>?> ValidateExchange...
method ConfirmExchange (line 26) | void ConfirmExchange(long visualId);
method IsExchangeConfirmed (line 27) | bool IsExchangeConfirmed(long visualId);
method GetData (line 28) | ExchangeData GetData(long visualId);
method AddItems (line 29) | void AddItems(long visualId, InventoryItemInstance item, short amount);
method CheckExchange (line 30) | bool CheckExchange(long visualId);
method GetTargetId (line 31) | long? GetTargetId(long visualId);
method CheckExchange (line 32) | bool CheckExchange(long visualId, long targetId);
method CloseExchange (line 33) | ExcClosePacket? CloseExchange(long visualId, ExchangeResultType result...
method OpenExchange (line 34) | bool OpenExchange(long visualId, long targetVisualId);
method ProcessExchange (line 36) | List<KeyValuePair<long, IvnPacket>> ProcessExchange(long firstUser, lo...
FILE: src/NosCore.GameObject/Services/ExperienceService/ExperienceProgressionService.cs
class ExperienceProgressionService (line 36) | public sealed class ExperienceProgressionService(
method AddExperienceAsync (line 50) | public async Task AddExperienceAsync(PlayerComponentBundle player,
FILE: src/NosCore.GameObject/Services/ExperienceService/IExperienceProgressionService.cs
type IExperienceProgressionService (line 12) | public interface IExperienceProgressionService
method AddExperienceAsync (line 14) | Task AddExperienceAsync(PlayerComponentBundle player,
FILE: src/NosCore.GameObject/Services/FriendService/CharacterRelation.cs
class CharacterRelation (line 11) | public class CharacterRelation : CharacterRelationDto
FILE: src/NosCore.GameObject/Services/FriendService/FriendRequestRegistry.cs
class FriendRequestRegistry (line 14) | public class FriendRequestRegistry : IFriendRequestRegistry
method GetRequestsForCharacter (line 18) | public IEnumerable<KeyValuePair<Guid, (long SenderId, long ReceiverId)...
method RegisterRequest (line 21) | public void RegisterRequest(Guid requestId, long senderId, long receiv...
method UnregisterRequest (line 24) | public bool UnregisterRequest(Guid requestId) =>
FILE: src/NosCore.GameObject/Services/FriendService/FriendService.cs
class FriendService (line 25) | public class FriendService(ILogger<FriendService> logger, IDao<Character...
method AddFriendAsync (line 30) | public async Task<LanguageKey> AddFriendAsync(long characterId, long s...
method GetFriendsAsync (line 116) | public async Task<List<CharacterRelationStatus>> GetFriendsAsync(long id)
method DeleteAsync (line 144) | public async Task<bool> DeleteAsync(Guid id)
FILE: src/NosCore.GameObject/Services/FriendService/IFriendRequestRegistry.cs
type IFriendRequestRegistry (line 12) | public interface IFriendRequestRegistry
method GetRequestsForCharacter (line 14) | IEnumerable<KeyValuePair<Guid, (long SenderId, long ReceiverId)>> GetR...
method RegisterRequest (line 15) | void RegisterRequest(Guid requestId, long senderId, long receiverId);
method UnregisterRequest (line 16) | bool UnregisterRequest(Guid requestId);
FILE: src/NosCore.GameObject/Services/FriendService/IFriendService.cs
type IFriendService (line 16) | public interface IFriendService
method AddFriendAsync (line 18) | Task<LanguageKey> AddFriendAsync(long characterId, long secondCharacte...
method GetFriendsAsync (line 20) | Task<List<CharacterRelationStatus>> GetFriendsAsync(long id);
method DeleteAsync (line 22) | Task<bool> DeleteAsync(Guid id);
FILE: src/NosCore.GameObject/Services/GroupService/Group.cs
class Group (line 24) | public class Group(GroupType type, ISessionGroupFactory sessionGroupFact...
method GeneratePinit (line 45) | public PinitPacket GeneratePinit()
method GeneratePst (line 56) | public List<PstPacket> GeneratePst()
method IsGroupLeader (line 76) | public bool IsGroupLeader(long visualId)
method JoinGroup (line 82) | public void JoinGroup(INamedEntity namedEntity)
method LeaveGroup (line 93) | public void LeaveGroup(INamedEntity namedEntity)
FILE: src/NosCore.GameObject/Services/GroupService/GroupRegistry.cs
class GroupRegistry (line 12) | public class GroupRegistry : IGroupRegistry
method GetById (line 18) | public Group? GetById(long groupId)
method Register (line 24) | public void Register(Group group)
method Unregister (line 29) | public void Unregister(long groupId)
method RegisterMember (line 34) | public void RegisterMember(long characterId, long groupId)
method UnregisterMember (line 39) | public void UnregisterMember(long characterId)
method GetNextGroupId (line 44) | public long GetNextGroupId()
FILE: src/NosCore.GameObject/Services/GroupService/IGroupRegistry.cs
type IGroupRegistry (line 9) | public interface IGroupRegistry
method GetById (line 11) | Group? GetById(long groupId);
method Register (line 12) | void Register(Group group);
method Unregister (line 13) | void Unregister(long groupId);
method RegisterMember (line 14) | void RegisterMember(long characterId, long groupId);
method UnregisterMember (line 15) | void UnregisterMember(long characterId);
method GetNextGroupId (line 16) | long GetNextGroupId();
FILE: src/NosCore.GameObject/Services/InventoryService/IInventoryService.cs
type IInventoryService (line 14) | public interface IInventoryService : IDictionary<Guid, InventoryItemInst...
method AddItemToPocket (line 19) | List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance new...
method AddItemToPocket (line 20) | List<InventoryItemInstance>? AddItemToPocket(InventoryItemInstance new...
method AddItemToPocket (line 22) | List<InventoryItemInstance>?
method CanAddItem (line 25) | bool CanAddItem(short itemVnum);
method CountItemInAnPocket (line 26) | int CountItemInAnPocket(NoscorePocketType inv);
method DeleteById (line 27) | InventoryItemInstance? DeleteById(Guid id);
method DeleteFromTypeAndSlot (line 28) | InventoryItemInstance? DeleteFromTypeAndSlot(NoscorePocketType type, s...
method LoadByItemInstanceId (line 29) | InventoryItemInstance? LoadByItemInstanceId(Guid id);
method LoadBySlotAndType (line 30) | InventoryItemInstance? LoadBySlotAndType(short slot, NoscorePocketType...
method MoveInPocket (line 32) | InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketTyp...
method MoveInPocket (line 35) | InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePocketTyp...
method RemoveItemAmountFromInventory (line 38) | InventoryItemInstance? RemoveItemAmountFromInventory(short amount, Gui...
FILE: src/NosCore.GameObject/Services/InventoryService/InventoryItemInstance.cs
class InventoryItemInstance (line 15) | public class InventoryItemInstance : InventoryItemInstanceDto, ISlotItem...
method InventoryItemInstance (line 17) | public InventoryItemInstance(IItemInstance itemInstance)
method Create (line 33) | public static InventoryItemInstance Create(IItemInstance it, long char...
method Create (line 38) | public static InventoryItemInstance Create(IItemInstance it, long char...
FILE: src/NosCore.GameObject/Services/InventoryService/InventoryService.cs
class InventoryService (line 22) | public class InventoryService(List<ItemDto> items, IOptions<WorldConfigu...
method GetMaxSlots (line 25) | public int GetMaxSlots(NoscorePocketType pocket)
method LoadBySlotAndType (line 53) | public InventoryItemInstance? LoadBySlotAndType(short slot, NoscorePoc...
method CanAddItem (line 69) | public bool CanAddItem(short itemVnum)
method CountItem (line 75) | public int CountItem(int itemVNum)
method CountItemInAnPocket (line 81) | public int CountItemInAnPocket(NoscorePocketType inv)
method AddItemToPocket (line 86) | public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInsta...
method AddItemToPocket (line 91) | public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInsta...
method AddItemToPocket (line 96) | public List<InventoryItemInstance>? AddItemToPocket(InventoryItemInsta...
method DeleteById (line 190) | public InventoryItemInstance? DeleteById(Guid id)
method LoadByItemInstanceId (line 208) | public InventoryItemInstance LoadByItemInstanceId(Guid id)
method DeleteFromTypeAndSlot (line 213) | public InventoryItemInstance? DeleteFromTypeAndSlot(NoscorePocketType ...
method MoveInPocket (line 232) | public InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePo...
method MoveInPocket (line 238) | public InventoryItemInstance? MoveInPocket(short sourceSlot, NoscorePo...
method TryMoveItem (line 329) | public bool TryMoveItem(NoscorePocketType sourcetype, short sourceSlot...
method EnoughPlace (line 428) | public bool EnoughPlace(List<IItemInstance> itemInstances, NoscorePock...
method RemoveItemAmountFromInventory (line 455) | public InventoryItemInstance? RemoveItemAmountFromInventory(short amou...
method GetFreeSlot (line 479) | public short? GetFreeSlot(NoscorePocketType type)
method HasFreeSlot (line 496) | public bool HasFreeSlot(NoscorePocketType slotType) => GetFreeSlot(slo...
method GetAllBySlotType (line 498) | public IEnumerable<InventoryItemInstance> GetAllBySlotType(NoscorePock...
method GetAll (line 501) | public IEnumerable<InventoryItemInstance> GetAll() => this.Select(s =>...
method GetBySlot (line 503) | InventoryItemInstance? ISlotBasedStorage<InventoryItemInstance, Noscor...
method GetById (line 506) | InventoryItemInstance? ISlotBasedStorage<InventoryItemInstance, Noscor...
method CountBySlotType (line 509) | int ISlotBasedStorage<InventoryItemInstance, NoscorePocketType>.CountB...
method AddItem (line 512) | List<InventoryItemInstance>? IMutableSlotBasedStorage<InventoryItemIns...
method RemoveBySlot (line 516) | InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance,...
method RemoveById (line 520) | InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance,...
method RemoveItemAmount (line 523) | InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance,...
method MoveItem (line 527) | InventoryItemInstance? IMutableSlotBasedStorage<InventoryItemInstance,...
method TakeItem (line 531) | private InventoryItemInstance? TakeItem(short slot, NoscorePocketType ...
FILE: src/NosCore.GameObject/Services/ItemGenerationService/IItemGenerationService.cs
type IItemGenerationService (line 12) | public interface IItemGenerationService
method Create (line 14) | IItemInstance Create(short itemToCreateVNum);
method Create (line 15) | IItemInstance Create(short itemToCreateVNum, short amount);
method Create (line 16) | IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare);
method Create (line 17) | IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare,...
method Create (line 19) | IItemInstance Create(short itemToCreateVNum, short amount, sbyte rare,...
method Convert (line 21) | IItemInstance Convert(IItemInstanceDto k);
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/BoxInstance.cs
class BoxInstance (line 12) | public class BoxInstance : BoxInstanceDto, IItemInstance
method BoxInstance (line 14) | public BoxInstance(Item item)
method BoxInstance (line 21) | [Obsolete]
method Clone (line 28) | public object Clone()
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/IItemInstance.cs
type IItemInstance (line 11) | public interface IItemInstance : IItemInstanceDto
method Clone (line 14) | object Clone();
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/Item.cs
class Item (line 11) | public class Item : ItemDto
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/ItemInstance.cs
class ItemInstance (line 12) | public class ItemInstance : ItemInstanceDto, IItemInstance
method ItemInstance (line 14) | public ItemInstance(Item item)
method ItemInstance (line 21) | [Obsolete]
method Clone (line 28) | public object Clone()
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/SpecialistInstance.cs
class SpecialistInstance (line 12) | public class SpecialistInstance : SpecialistInstanceDto, IItemInstance
method SpecialistInstance (line 14) | public SpecialistInstance(Item item)
method SpecialistInstance (line 21) | [Obsolete]
method Clone (line 28) | public object Clone()
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/UsableInstance.cs
class UsableInstance (line 12) | public class UsableInstance : UsableInstanceDto, IItemInstance
method UsableInstance (line 14) | public UsableInstance(Item item)
method UsableInstance (line 20) | [Obsolete]
method Clone (line 26) | public object Clone()
FILE: src/NosCore.GameObject/Services/ItemGenerationService/Item/WearableInstance.cs
class WearableInstance (line 18) | public class WearableInstance : WearableInstanceDto, IItemInstance
method WearableInstance (line 23) | public WearableInstance(Item item, ILogger<WearableInstance> logger, I...
method WearableInstance (line 32) | [Obsolete]
method Clone (line 41) | public object Clone()
method SetRarityPoint (line 46) | public void SetRarityPoint()
FILE: src/NosCore.GameObject/Services/ItemGenerationService/ItemGenerationService.cs
class ItemGenerationService (line 22) | public class ItemGenerationService(
method Convert (line 27) | public IItemInstance Convert(IItemInstanceDto k)
method Create (line 46) | public IItemInstance Create(short itemToCreateVNum) => Create(itemToCr...
method Create (line 48) | public IItemInstance Create(short itemToCreateVNum, short amount) => C...
method Create (line 50) | public IItemInstance Create(short itemToCreateVNum, short amount, sbyt...
method Create (line 52) | public IItemInstance Create(short itemToCreateVNum, short amount, sbyt...
method Create (line 55) | public IItemInstance Create(short itemToCreateVNum, short amount, sbyt...
method Generate (line 58) | public IItemInstance Generate(short itemToCreateVNum, short amount, sb...
FILE: src/NosCore.GameObject/Services/ItemStorage/ISlotBasedStorage.cs
type ISlotBasedStorage (line 13) | public interface ISlotBasedStorage<TItem, TSlotType>
method GetMaxSlots (line 17) | int GetMaxSlots(TSlotType slotType);
method GetBySlot (line 19) | TItem? GetBySlot(short slot, TSlotType slotType);
method GetById (line 21) | TItem? GetById(Guid id);
method GetAllBySlotType (line 23) | IEnumerable<TItem> GetAllBySlotType(TSlotType slotType);
method GetAll (line 25) | IEnumerable<TItem> GetAll();
method GetFreeSlot (line 27) | short? GetFreeSlot(TSlotType slotType);
method HasFreeSlot (line 29) | bool HasFreeSlot(TSlotType slotType);
method CountBySlotType (line 31) | int CountBySlotType(TSlotType slotType);
method CountItem (line 33) | int CountItem(int itemVNum);
type IMutableSlotBasedStorage (line 36) | public interface IMutableSlotBasedStorage<TItem, TSlotType> : ISlotBased...
method AddItem (line 40) | List<TItem>? AddItem(TItem item, TSlotType? slotType = null, short? sl...
method RemoveBySlot (line 42) | TItem? RemoveBySlot(short slot, TSlotType slotType);
method RemoveById (line 44) | TItem? RemoveById(Guid id);
method RemoveItemAmount (line 46) | TItem? RemoveItemAmount(short amount, Guid id);
method MoveItem (line 48) | TItem? MoveItem(short sourceSlot, TSlotType sourceType, TSlotType targ...
method TryMoveItem (line 50) | bool TryMoveItem(TSlotType slotType, short sourceSlot, short amount, s...
method EnoughPlace (line 53) | bool EnoughPlace(List<IItemInstance> items, TSlotType slotType);
FILE: src/NosCore.GameObject/Services/ItemStorage/ISlotItem.cs
type ISlotItem (line 12) | public interface ISlotItem
type ISlotItem (line 19) | public interface ISlotItem<TSlotType> : ISlotItem
FILE: src/NosCore.GameObject/Services/ItemStorage/SlotStorageHelper.cs
class SlotStorageHelper (line 14) | public static class SlotStorageHelper
method FindFreeSlot (line 16) | public static short? FindFreeSlot<TItem>(
method StackItems (line 40) | public static List<TItem> StackItems<TItem>(
method CanStack (line 98) | public static bool CanStack(IItemInstance? itemInstance)
method ValidateEnoughPlace (line 110) | public static bool ValidateEnoughPlace<TItem>(
method SwapItems (line 154) | public static (TItem? Source, TItem? Destination) SwapItems<TItem>(
method SplitItem (line 169) | public static TItem? SplitItem<TItem>(
method TryStackOntoExisting (line 190) | public static bool TryStackOntoExisting<TItem>(
FILE: src/NosCore.GameObject/Services/LoginService/ILoginService.cs
type ILoginService (line 13) | public interface ILoginService
method LoginAsync (line 15) | Task LoginAsync(string? username, string md5String, ClientVersionSubPa...
FILE: src/NosCore.GameObject/Services/LoginService/LoginService.cs
class LoginService (line 28) | public class LoginService(IOptions<LoginConfiguration> loginConfiguratio...
method LoginAsync (line 34) | public async Task LoginAsync(string? username, string md5String, Clien...
FILE: src/NosCore.GameObject/Services/MailService/Gift.cs
class Gift (line 9) | public class Gift
method Gift (line 11) | public Gift()
method Gift (line 15) | public Gift(short vnum, byte amount, short design = 0, bool isRareRand...
FILE: src/NosCore.GameObject/Services/MailService/GiftHelper.cs
class GiftHelper (line 15) | public static class GiftHelper
method GenerateMailRequest (line 17) | public static MailRequest GenerateMailRequest(IClock clock, ICharacter...
FILE: src/NosCore.GameObject/Services/MailService/IMailService.cs
type IMailService (line 15) | public interface IMailService
method GetMails (line 17) | List<MailData> GetMails(long id, long characterId, bool senderCopy);
method DeleteMailAsync (line 19) | Task<bool> DeleteMailAsync(long id, long characterId, bool senderCopy);
method EditMailAsync (line 21) | Task<MailData?> EditMailAsync(long id, JsonPatch mailData);
method SendMailAsync (line 23) | Task<bool> SendMailAsync(MailDto mail, short? vNum, short? amount, sby...
FILE: src/NosCore.GameObject/Services/MailService/IParcelRegistry.cs
type IParcelRegistry (line 12) | public interface IParcelRegistry
method GetMails (line 14) | ConcurrentDictionary<long, MailData> GetMails(long characterId, bool i...
method GetMail (line 15) | MailData? GetMail(long characterId, bool isSenderCopy, long mailId);
method AddMail (line 16) | void AddMail(long characterId, bool isSenderCopy, long mailId, MailDat...
method RemoveMail (line 17) | bool RemoveMail(long characterId, bool isSenderCopy, long mailId, out ...
method UpdateMail (line 18) | void UpdateMail(long characterId, bool isSenderCopy, long mailId, Mail...
method GetNextMailId (line 19) | long GetNextMailId(long characterId, bool isSenderCopy);
FILE: src/NosCore.GameObject/Services/MailService/MailService.cs
class MailService (line 30) | public class MailService(IDao<MailDto, long> mailDao, IDao<IItemInstance...
method GetMails (line 37) | public List<MailData> GetMails(long id, long characterId, bool senderC...
method DeleteMailAsync (line 58) | public async Task<bool> DeleteMailAsync(long id, long characterId, boo...
method EditMailAsync (line 84) | public async Task<MailData?> EditMailAsync(long id, JsonPatch mailData)
method SendMailAsync (line 110) | public async Task<bool> SendMailAsync(MailDto mail, short? vNum, short...
method GenerateMailDataAsync (line 198) | private async Task<MailData> GenerateMailDataAsync(MailDto mailref, sh...
method NotifyAsync (line 215) | private async Task NotifyAsync(byte notifyType, Subscriber? receiver, ...
FILE: src/NosCore.GameObject/Services/MailService/ParcelRegistry.cs
class ParcelRegistry (line 19) | public class ParcelRegistry : IParcelRegistry
method ParcelRegistry (line 27) | public ParcelRegistry(IDao<CharacterDto, long> characterDao, IDao<Mail...
method GetMails (line 37) | public ConcurrentDictionary<long, MailData> GetMails(long characterId,...
method GetMail (line 43) | public MailData? GetMail(long characterId, bool isSenderCopy, long mai...
method AddMail (line 49) | public void AddMail(long characterId, bool isSenderCopy, long mailId, ...
method RemoveMail (line 55) | public bool RemoveMail(long characterId, bool isSenderCopy, long mailI...
method UpdateMail (line 61) | public void UpdateMail(long characterId, bool isSenderCopy, long mailI...
method GetNextMailId (line 67) | public long GetNextMailId(long characterId, bool isSenderCopy)
method EnsureCharacterExists (line 73) | private void EnsureCharacterExists(long characterId)
method InitializeAsync (line 85) | private async Task InitializeAsync()
FILE: src/NosCore.GameObject/Services/MapChangeService/IMapChangeService.cs
type IMapChangeService (line 7) | public interface IMapChangeService
method ChangeMapInstanceAsync (line 9) | Task ChangeMapInstanceAsync(ClientSession session, Guid mapInstanceId,...
method ChangeMapAsync (line 10) | Task ChangeMapAsync(ClientSession session, short? mapId = null, short?...
method ChangeMapByCharacterIdAsync (line 11) | Task ChangeMapByCharacterIdAsync(long characterId, short mapId, short ...
FILE: src/NosCore.GameObject/Services/MapChangeService/MapChangeService.cs
class MapChangeService (line 33) | public class MapChangeService(IExperienceService experienceService, IJob...
method ChangeMapAsync (line 41) | public async Task ChangeMapAsync(ClientSession session, short? mapId =...
method ChangeMapInstanceAsync (line 70) | public async Task ChangeMapInstanceAsync(ClientSession session, Guid m...
method ChangeMapByCharacterIdAsync (line 267) | public async Task ChangeMapByCharacterIdAsync(long characterId, short ...
method LeaveMapAsync (line 276) | private async Task LeaveMapAsync(ClientSession session)
FILE: src/NosCore.GameObject/Services/MapInstanceAccessService/IMapInstanceAccessService.cs
type IMapInstanceAccessorService (line 12) | public interface IMapInstanceAccessorService
method GetMapInstance (line 14) | MapInstance? GetMapInstance(Guid id);
method GetBaseMapById (line 16) | MapInstance? GetBaseMapById(short mapId);
FILE: src/NosCore.GameObject/Services/MapInstanceAccessService/MapInstanceAccessService.cs
class MapInstanceAccessorService (line 12) | public class MapInstanceAccessorService(IMapInstanceRegistry mapInstance...
method GetMapInstance (line 14) | public MapInstance? GetMapInstance(Guid id) => mapInstanceRegistry.Get...
method GetBaseMapById (line 16) | public MapInstance? GetBaseMapById(short mapId) => mapInstanceRegistry...
FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/IMapInstanceGenerationService.cs
type IMapInstanceGeneratorService (line 13) | public interface IMapInstanceGeneratorService
method AddMapInstanceAsync (line 15) | Task AddMapInstanceAsync(MapInstance mapInstance);
method InitializeAsync (line 16) | Task InitializeAsync();
method RemoveMapAsync (line 17) | Task RemoveMapAsync(Guid guid);
method CreateMapInstance (line 18) | MapInstance CreateMapInstance(Map.Map map, Guid guid, bool shopAllowed...
FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/IMapInstanceRegistry.cs
type IMapInstanceRegistry (line 12) | public interface IMapInstanceRegistry
method GetById (line 14) | MapInstance? GetById(Guid mapInstanceId);
method GetBaseMapById (line 15) | MapInstance? GetBaseMapById(short mapId);
method GetAll (line 16) | IEnumerable<MapInstance> GetAll();
method Register (line 17) | void Register(Guid mapInstanceId, MapInstance mapInstance);
method Unregister (line 18) | bool Unregister(Guid mapInstanceId, out MapInstance? mapInstance);
method SetAll (line 19) | void SetAll(IDictionary<Guid, MapInstance> mapInstances);
FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstance.cs
class MapInstance (line 43) | public class MapInstance : IBroadcastable, IDisposable
method MapInstance (line 71) | public MapInstance(Map.Map map, Guid guid, bool shopAllowed, MapInstan...
method GetMapItemBundles (line 108) | public IEnumerable<MapItemComponentBundle> GetMapItemBundles()
method TryGetMapItem (line 114) | public MapItemComponentBundle? TryGetMapItem(long visualId)
method TryRemoveMapItem (line 126) | public bool TryRemoveMapItem(long visualId)
method Dispose (line 200) | public void Dispose()
method KickAsync (line 206) | public Task KickAsync()
method KickAsync (line 211) | public async Task KickAsync(Func<ClientSession, bool> filter)
method PutItem (line 224) | public MapItemComponentBundle? PutItem(short amount, IItemInstance inv...
method LoadMonsters (line 276) | public void LoadMonsters(List<MapMonsterDto> monsters, List<NpcMonster...
method LoadNpcs (line 299) | public void LoadNpcs(List<MapNpcDto> npcs, List<NpcMonsterDto> npcMons...
method GetNpcById (line 323) | public NpcComponentBundle? GetNpcById(int mapNpcId) =>
method GetMonsterById (line 326) | public MonsterComponentBundle? GetMonsterById(int mapMonsterId) =>
method FindNpc (line 329) | public NpcComponentBundle? FindNpc(Func<NpcComponentBundle, bool> pred...
method FindMonster (line 338) | public MonsterComponentBundle? FindMonster(Func<MonsterComponentBundle...
method GetMapItems (line 347) | public List<IPacket> GetMapItems(RegionType language)
method GenerateCMap (line 385) | public CMapPacket GenerateCMap(bool enter)
method StartLifeAsync (line 395) | public Task StartLifeAsync()
method ScheduleRespawn (line 452) | public void ScheduleRespawn(MonsterComponentBundle monster, Instant re...
method SweepPendingRespawnsAsync (line 457) | private async Task SweepPendingRespawnsAsync()
method Dispose (line 479) | protected virtual void Dispose(bool disposing)
FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstanceGenerationService.cs
class MapInstanceGeneratorService (line 33) | public class MapInstanceGeneratorService(List<MapDto> maps, List<NpcMons...
method AddMapInstanceAsync (line 47) | public Task AddMapInstanceAsync(MapInstance mapInstance)
method RemoveMapAsync (line 53) | public async Task RemoveMapAsync(Guid mapInstanceId)
method InitializeAsync (line 63) | public async Task InitializeAsync()
method CreateMapInstance (line 128) | public MapInstance CreateMapInstance(Map.Map map, Guid guid, bool shop...
method LoadPortalsAsync (line 135) | private async Task LoadPortalsAsync(MapInstance mapInstance, List<Port...
FILE: src/NosCore.GameObject/Services/MapInstanceGenerationService/MapInstanceRegistry.cs
class MapInstanceRegistry (line 15) | public class MapInstanceRegistry : IMapInstanceRegistry
method GetById (line 19) | public MapInstance? GetById(Guid mapInstanceId) =>
method GetBaseMapById (line 22) | public MapInstance? GetBaseMapById(short mapId) =>
method GetAll (line 25) | public IEnumerable<MapInstance> GetAll() => _mapInstances.Values;
method Register (line 27) | public void Register(Guid mapInstanceId, MapInstance mapInstance) =>
method Unregister (line 30) | public bool Unregister(Guid mapInstanceId, out MapInstance? mapInstanc...
method SetAll (line 33) | public void SetAll(IDictionary<Guid, MapInstance> mapInstances) =>
FILE: src/NosCore.GameObject/Services/MapItemGenerationService/IMapItemGenerationService.cs
type IMapItemGenerationService (line 13) | public interface IMapItemGenerationService
method Create (line 15) | MapItemComponentBundle Create(MapInstance mapInstance, IItemInstance i...
FILE: src/NosCore.GameObject/Services/MapItemGenerationService/MapItemGenerationService.cs
class MapItemGenerationService (line 15) | public class MapItemGenerationService(IIdService<MapItemComponentBundle>...
method Create (line 18) | public MapItemComponentBundle Create(MapInstance mapInstance, IItemIns...
FILE: src/NosCore.GameObject/Services/MinilandService/IMinilandRegistry.cs
type IMinilandRegistry (line 12) | public interface IMinilandRegistry
method GetByCharacterId (line 14) | Miniland? GetByCharacterId(long characterId);
method GetByMapInstanceId (line 15) | Miniland? GetByMapInstanceId(Guid mapInstanceId);
method GetAll (line 16) | IEnumerable<Miniland> GetAll();
method ContainsCharacter (line 17) | bool ContainsCharacter(long characterId);
method Register (line 18) | void Register(long characterId, Miniland miniland);
method Unregister (line 19) | bool Unregister(long characterId, out Miniland? miniland);
FILE: src/NosCore.GameObject/Services/MinilandService/IMinilandService.cs
type IMinilandService (line 18) | public interface IMinilandService
method GetMiniland (line 20) | Miniland GetMiniland(long character);
method DeleteMinilandAsync (line 21) | Task<Guid?> DeleteMinilandAsync(long characterId);
method InitializeAsync (line 22) | Task<Miniland> InitializeAsync(PlayerComponentBundle player, IMapInsta...
method GetMinilandPortals (line 23) | List<Portal> GetMinilandPortals(long characterId);
method GetMinilandFromMapInstanceId (line 24) | Miniland? GetMinilandFromMapInstanceId(Guid mapInstanceId);
method AddMinilandObject (line 25) | void AddMinilandObject(MapDesignObject mapObject, long characterId, In...
method SetStateAsync (line 26) | Task SetStateAsync(long characterId, MinilandState state);
FILE: src/NosCore.GameObject/Services/MinilandService/MapDesignObject.cs
class MapDesignObject (line 14) | public class MapDesignObject : MinilandObjectDto
method GenerateEffect (line 30) | public GroundEffectPacket GenerateEffect()
method GenerateEffect (line 35) | public GroundEffectPacket GenerateEffect(bool isRemoval)
method GenerateMapDesignObject (line 47) | public MlobjPacket GenerateMapDesignObject()
method GenerateMapDesignObject (line 52) | public MlobjPacket GenerateMapDesignObject(bool isRemoval)
FILE: src/NosCore.GameObject/Services/MinilandService/Miniland.cs
class Miniland (line 13) | public class Miniland : MinilandDto
method GenerateMlinfobr (line 20) | public MlInfoBrPacket GenerateMlinfobr()
method GenerateMlinfo (line 33) | public MlinfoPacket GenerateMlinfo()
FILE: src/NosCore.GameObject/Services/MinilandService/MinilandHelper.cs
class MinilandHelper (line 14) | public sealed class MinilandHelper
method MinilandHelper (line 240) | private MinilandHelper()
method GetMinilandGift (line 246) | public Gift? GetMinilandGift(short game, int point)
FILE: src/NosCore.GameObject/Services/MinilandService/MinilandRegistry.cs
class MinilandRegistry (line 14) | public class MinilandRegistry : IMinilandRegistry
method GetByCharacterId (line 18) | public Miniland? GetByCharacterId(long characterId) =>
method GetByMapInstanceId (line 21) | public Miniland? GetByMapInstanceId(Guid mapInstanceId) =>
method GetAll (line 24) | public IEnumerable<Miniland> GetAll() => _minilands.Values;
method ContainsCharacter (line 26) | public bool ContainsCharacter(long characterId) => _minilands.Contains...
method Register (line 28) | public void Register(long characterId, Miniland miniland) =>
method Unregister (line 31) | public bool Unregister(long characterId, out Miniland? miniland) =>
FILE: src/NosCore.GameObject/Services/MinilandService/MinilandService.cs
class MinilandService (line 28) | public class MinilandService(IMapInstanceAccessorService mapInstanceAcce...
method GetMinilandPortals (line 34) | public List<Portal> GetMinilandPortals(long characterId)
method GetMiniland (line 69) | public Miniland GetMiniland(long characterId)
method DeleteMinilandAsync (line 81) | public async Task<Guid?> DeleteMinilandAsync(long characterId)
method InitializeAsync (line 103) | public async Task<Miniland> InitializeAsync(PlayerComponentBundle play...
method SetStateAsync (line 150) | public async Task SetStateAsync(long characterId, MinilandState state)
method GetMinilandFromMapInstanceId (line 179) | public Miniland? GetMinilandFromMapInstanceId(Guid mapInstanceId)
method AddMinilandObject (line 184) | public void AddMinilandObject(MapDesignObject mapObject, long characte...
FILE: src/NosCore.GameObject/Services/PacketHandlerService/IPacketHandlerRegistry.cs
type IPacketHandlerRegistry (line 13) | public interface IPacketHandlerRegistry
method GetHandler (line 15) | IPacketHandler? GetHandler(Type packetType);
method GetPacketAttribute (line 16) | PacketHeaderAttribute? GetPacketAttribute(Type packetType);
FILE: src/NosCore.GameObject/Services/PacketHandlerService/PacketHandlerRegistry.cs
class PacketHandlerRegistry (line 15) | public class PacketHandlerRegistry : IPacketHandlerRegistry
method PacketHandlerRegistry (line 20) | public PacketHandlerRegistry(IEnumerable<IPacketHandler> packetsHandlers)
method GetHandler (line 46) | public IPacketHandler? GetHandler(Type packetType)
method GetPacketAttribute (line 52) | public PacketHeaderAttribute? GetPacketAttribute(Type packetType)
FILE: src/NosCore.GameObject/Services/PathfindingService/IPathfindingService.cs
type IPathfindingService (line 14) | public interface IPathfindingService
method ForMap (line 16) | IPathfinder ForMap(Map.Map map);
FILE: src/NosCore.GameObject/Services/PathfindingService/PathfindingService.cs
class PathfindingService (line 17) | public sealed class PathfindingService(IHeuristic heuristic) : IPathfind...
method ForMap (line 21) | public IPathfinder ForMap(Map.Map map)
FILE: src/NosCore.GameObject/Services/QuestService/Handlers/GoToQuestHandler.cs
class GoToQuestHandler (line 14) | [UsedImplicitly]
method ValidateAsync (line 19) | public async Task<bool> ValidateAsync(ICharacterEntity character, Char...
FILE: src/NosCore.GameObject/Services/QuestService/Handlers/HuntQuestHandler.cs
class HuntQuestHandler (line 13) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Services/QuestService/Handlers/KillQuestHandlerBase.cs
class KillQuestHandlerBase (line 21) | public abstract class KillQuestHandlerBase(ILogger logger) : IQuestTypeH...
method OnMonsterKilledAsync (line 25) | public async Task OnMonsterKilledAsync(ICharacterEntity character, Npc...
FILE: src/NosCore.GameObject/Services/QuestService/Handlers/NumberOfKillQuestHandler.cs
class NumberOfKillQuestHandler (line 13) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Services/QuestService/IQuestService.cs
type IQuestService (line 15) | public interface IQuestService
method RunScriptAsync (line 17) | Task RunScriptAsync(ICharacterEntity character);
method RunScriptAsync (line 18) | Task RunScriptAsync(ICharacterEntity character, ScriptClientPacket? pa...
method OnMonsterKilledAsync (line 19) | Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mob);
method OnMonsterCapturedAsync (line 24) | Task OnMonsterCapturedAsync(ICharacterEntity character, NpcMonsterDto ...
method AddQuestAsync (line 26) | Task<bool> AddQuestAsync(ICharacterEntity character, QuestActionType t...
method CompleteQuestAsync (line 33) | Task CompleteQuestAsync(ICharacterEntity character, CharacterQuest que...
FILE: src/NosCore.GameObject/Services/QuestService/IQuestTypeHandler.cs
type IQuestTypeHandler (line 14) | public interface IQuestTypeHandler
method ValidateAsync (line 18) | Task<bool> ValidateAsync(ICharacterEntity character, CharacterQuest qu...
method OnMonsterKilledAsync (line 20) | Task OnMonsterKilledAsync(ICharacterEntity character, NpcMonsterDto mo...
FILE: src/NosCore.GameObject/Services/QuestService/Quest.cs
class CharacterQuest (line 16) | public class CharacterQuest : CharacterQuestDto
method GenerateQstiPacket (line 24) | public QstiPacket GenerateQstiPacket(bool showDialog)
method AreObjectivesComplete (line 29) | public bool AreObjectivesComplete()
method GenerateQuestSubPacket (line 43) | public QuestSubPacket GenerateQuestSubPacket(bool showDialog)
method IsCountableObjective (line 78) | private static bool IsCountableObjective(Packets.Enumerations.QuestTyp...
class Quest (line 96) | public class Quest : QuestDto
method GenerateTargetPacket (line 98) | public TargetPacket GenerateTargetPacket()
method GenerateTargetOffPacket (line 107) | public TargetOffPacket GenerateTargetOffPacket()
FILE: src/NosCore.GameObject/Services/QuestService/QuestService.cs
class QuestService (line 33) | public class QuestService(List<ScriptDto> scripts,
method RunScriptAsync (line 45) | public Task RunScriptAsync(ICharacterEntity character) => RunScriptAsy...
method RunScriptAsync (line 46) | public async Task RunScriptAsync(ICharacterEntity character, ScriptCli...
method CheckScriptStateAsync (line 87) | private async Task<bool> CheckScriptStateAsync(ScriptClientPacket pack...
method IsValidScriptAsync (line 120) | private async Task<bool> IsValidScriptAsync(ICharacterEntity character...
method QPayAsync (line 147) | private async Task<bool> QPayAsync(ICharacterEntity character, short q...
method ApplyRewardAsync (line 201) | private async Task ApplyRewardAsync(ICharacterEntity character, QuestR...
method TimeAsync (line 263) | private async Task<bool> TimeAsync(short delay)
method TargetOffPacketAsync (line 269) | private async Task<bool> TargetOffPacketAsync(short questId, ICharacte...
method AddQuestAsync (line 281) | public async Task<bool> AddQuestAsync(ICharacterEntity character, Ques...
method ValidateQuestAsync (line 375) | public Task<bool> ValidateQuestAsync(ICharacterEntity character, short...
method OnMonsterKilledAsync (line 387) | public async Task OnMonsterKilledAsync(ICharacterEntity character, Npc...
method OnMonsterCapturedAsync (line 410) | public Task OnMonsterCapturedAsync(ICharacterEntity character, NpcMons...
method CompleteQuestAsync (line 415) | public async Task CompleteQuestAsync(ICharacterEntity character, Chara...
FILE: src/NosCore.GameObject/Services/SaveService/ISaveService.cs
type ISaveService (line 12) | public interface ISaveService
method SaveAsync (line 14) | Task SaveAsync(ClientSession session);
FILE: src/NosCore.GameObject/Services/SaveService/SaveService.cs
class SaveService (line 22) | public class SaveService(IDao<CharacterDto, long> characterDao, IDao<IIt...
method SaveAsync (line 33) | public async Task SaveAsync(ClientSession session)
FILE: src/NosCore.GameObject/Services/ShopService/IShopRegistry.cs
type IShopRegistry (line 11) | public interface IShopRegistry
method RegisterPlayerShop (line 13) | void RegisterPlayerShop(long characterId, Shop shop);
method UnregisterPlayerShop (line 14) | void UnregisterPlayerShop(long characterId);
method GetPlayerShop (line 15) | Shop? GetPlayerShop(long characterId);
method GetAllPlayerShops (line 16) | IEnumerable<Shop> GetAllPlayerShops();
FILE: src/NosCore.GameObject/Services/ShopService/Shop.cs
class Shop (line 15) | public class Shop : ShopDto
FILE: src/NosCore.GameObject/Services/ShopService/ShopItem.cs
class ShopItem (line 12) | public class ShopItem : ShopItemDto
FILE: src/NosCore.GameObject/Services/ShopService/ShopRegistry.cs
class ShopRegistry (line 12) | public class ShopRegistry : IShopRegistry
method RegisterPlayerShop (line 16) | public void RegisterPlayerShop(long characterId, Shop shop)
method UnregisterPlayerShop (line 21) | public void UnregisterPlayerShop(long characterId)
method GetPlayerShop (line 26) | public Shop? GetPlayerShop(long characterId)
method GetAllPlayerShops (line 32) | public IEnumerable<Shop> GetAllPlayerShops()
FILE: src/NosCore.GameObject/Services/SkillService/ISkillService.cs
type ISkillService (line 6) | public interface ISkillService
method LoadSkill (line 8) | Task LoadSkill(ICharacterEntity character);
method LearnClassSkillsAsync (line 10) | Task<bool> LearnClassSkillsAsync(ICharacterEntity character);
FILE: src/NosCore.GameObject/Services/SkillService/SkillService.cs
class SkillService (line 17) | public class SkillService(IDao<CharacterSkillDto, Guid> characterSkillDa...
method LoadSkill (line 19) | public async Task LoadSkill(ICharacterEntity character)
method LearnClassSkillsAsync (line 51) | public async Task<bool> LearnClassSkillsAsync(ICharacterEntity character)
FILE: src/NosCore.GameObject/Services/SpeedCalculationService/ISpeedCalculationService.cs
type ISpeedCalculationService (line 11) | public interface ISpeedCalculationService
method CalculateSpeed (line 13) | byte CalculateSpeed(INonPlayableEntity nonPlayableEntity);
method CalculateSpeed (line 15) | byte CalculateSpeed(ICharacterEntity visualEntity);
FILE: src/NosCore.GameObject/Services/SpeedCalculationService/SpeedCalculationService.cs
class SpeedCalculationService (line 12) | public class SpeedCalculationService(ISpeedService speedService) : ISpee...
method CalculateSpeed (line 14) | private byte CalculateSpeed(IAliveEntity aliveEntity, byte defaultSpeed)
method CalculateSpeed (line 31) | public byte CalculateSpeed(INonPlayableEntity nonPlayableEntity)
method CalculateSpeed (line 36) | public byte CalculateSpeed(ICharacterEntity characterEntity)
FILE: src/NosCore.GameObject/Services/TransformationService/ITransformationService.cs
type ITransformationService (line 13) | public interface ITransformationService
method RemoveSpAsync (line 15) | Task RemoveSpAsync(ClientSession session);
method ChangeSpAsync (line 17) | Task ChangeSpAsync(ClientSession session);
method ChangeVehicleAsync (line 19) | Task ChangeVehicleAsync(ClientSession session, Item item);
method RemoveVehicleAsync (line 21) | Task RemoveVehicleAsync(ClientSession session);
FILE: src/NosCore.GameObject/Services/TransformationService/TransformationService.cs
class TransformationService (line 32) | public class TransformationService(IClock clock, IExperienceService expe...
method RemoveSpAsync (line 37) | public async Task RemoveSpAsync(ClientSession session)
method ChangeSpAsync (line 90) | public async Task ChangeSpAsync(ClientSession session)
method ChangeVehicleAsync (line 157) | public async Task ChangeVehicleAsync(ClientSession session, Item item)
method RemoveVehicleAsync (line 180) | public async Task RemoveVehicleAsync(ClientSession session)
FILE: src/NosCore.GameObject/Services/UpgradeService/EquipmentUpgradeOperationBase.cs
class EquipmentUpgradeOperationBase (line 46) | public abstract class EquipmentUpgradeOperationBase(IRandomNumberSource ...
method SayMessageFor (line 89) | protected override Game18NConstString SayMessageFor(UpgradeOutcome out...
method TryReject (line 96) | protected override IReadOnlyList<IPacket>? TryReject(ClientSession ses...
method TryPrepareContext (line 117) | protected override UpgradeContext? TryPrepareContext(ClientSession ses...
method DetermineOutcome (line 163) | protected override UpgradeOutcome DetermineOutcome(double roll, Upgrad...
method ApplySuccess (line 193) | protected override void ApplySuccess(UpgradeContext ctx)
method ApplyFailure (line 199) | protected override void ApplyFailure(ClientSession session, UpgradeCon...
method ApplyFixed (line 205) | protected override void ApplyFixed(ClientSession session, UpgradeConte...
method EmitOutcomeEffectsAsync (line 216) | protected override async Task EmitOutcomeEffectsAsync(ClientSession se...
method BuildPocketRefresh (line 234) | protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeCont...
type EquipmentUpgradeRollData (line 247) | private sealed record EquipmentUpgradeRollData(int Level, bool IsHighR...
FILE: src/NosCore.GameObject/Services/UpgradeService/IRandomNumberSource.cs
type IRandomNumberSource (line 11) | public interface IRandomNumberSource
method NextDouble (line 13) | double NextDouble();
class RandomNumberSource (line 16) | public sealed class RandomNumberSource : IRandomNumberSource
method NextDouble (line 18) | public double NextDouble() => System.Random.Shared.NextDouble();
FILE: src/NosCore.GameObject/Services/UpgradeService/IUpgradeOperation.cs
type IUpgradeOperation (line 16) | public interface IUpgradeOperation
method ExecuteAsync (line 20) | Task<IReadOnlyList<IPacket>> ExecuteAsync(ClientSession session, Upgra...
FILE: src/NosCore.GameObject/Services/UpgradeService/RarifyOperation.cs
class RarifyOperation (line 13) | [UsedImplicitly]
class RarifyProtectedOperation (line 22) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Services/UpgradeService/RarifyOperationBase.cs
class RarifyOperationBase (line 38) | public abstract class RarifyOperationBase(IRandomNumberSource random, IG...
method SayMessageFor (line 84) | protected override Game18NConstString SayMessageFor(UpgradeOutcome out...
method TryPrepareContext (line 89) | protected override UpgradeContext? TryPrepareContext(ClientSession ses...
method DetermineOutcome (line 123) | protected override UpgradeOutcome DetermineOutcome(double roll, Upgrad...
method ApplySuccess (line 146) | protected override void ApplySuccess(UpgradeContext ctx)
method ApplyFailure (line 155) | protected override void ApplyFailure(ClientSession session, UpgradeCon...
method BuildPocketRefresh (line 161) | protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeCont...
method EmitOutcomeEffectsAsync (line 176) | protected override async Task EmitOutcomeEffectsAsync(ClientSession se...
method BuildMsgi (line 195) | protected override MsgiPacket BuildMsgi(UpgradeContext ctx, UpgradeOut...
class RarifyRollState (line 211) | private sealed class RarifyRollState
method RarifyRollState (line 213) | public RarifyRollState(sbyte originalRare) => OriginalRare = origina...
FILE: src/NosCore.GameObject/Services/UpgradeService/SumUpgradeOperation.cs
class SumUpgradeOperation (line 42) | [UsedImplicitly]
method TryPrepareContext (line 58) | protected override UpgradeContext? TryPrepareContext(ClientSession ses...
method GetSuccessRate (line 106) | protected override double GetSuccessRate(UpgradeContext ctx) =>
method ApplySuccess (line 112) | protected override void ApplySuccess(UpgradeContext ctx)
method ApplyFailure (line 124) | protected override void ApplyFailure(ClientSession session, UpgradeCon...
method ConsumeFixedSlots (line 129) | protected override void ConsumeFixedSlots(ClientSession session, Upgra...
method EmitOutcomeEffectsAsync (line 138) | protected override async Task EmitOutcomeEffectsAsync(ClientSession se...
method BuildPocketRefresh (line 158) | protected override IEnumerable<IPacket> BuildPocketRefresh(UpgradeCont...
FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeContext.cs
type UpgradeContext (line 14) | public sealed record UpgradeContext(
type MaterialCost (line 21) | public sealed record MaterialCost(short VNum, short Amount);
FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeItemOperation.cs
class UpgradeItemOperation (line 13) | [UsedImplicitly]
class UpgradeItemProtectedOperation (line 22) | [UsedImplicitly]
FILE: src/NosCore.GameObject/Services/UpgradeService/UpgradeOperation.cs
class UpgradeOperation (line 41) | public abstract class UpgradeOperation(IRandomNumberSource random, IGame...
method ExecuteAsync (line 46) | public async Task<IReadOnlyList<IPacket>> ExecuteAsync(ClientSession s...
method TryReject (line 104) | protected virtual IReadOnlyList<IPacket>? TryReject(ClientSession sess...
method TryPrepareContext (line 106) | protected abstract UpgradeContext? TryPrepareContext(ClientSession ses...
method ApplySuccess (line 108) | protected abstract void ApplySuccess(UpgradeContext ctx);
method ApplyFailure (line 110) | protected ab
Condensed preview — 976 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,968K chars).
[
{
"path": ".coderabbit.yaml",
"chars": 394,
"preview": "language: \"en\"\nearly_access: false\nreviews:\n profile: \"chill\"\n request_changes_workflow: false\n high_level_summary: t"
},
{
"path": ".editorconfig",
"chars": 2276,
"preview": "\n[*.proto]\nindent_style=tab\nindent_size=tab\ntab_width=4\n\n[*.{asax,ascx,aspx,cs,cshtml,css,htm,html,js,jsx,master,razor,s"
},
{
"path": ".github/FUNDING.yml",
"chars": 99,
"preview": "# These are supported funding model platforms\n\ngithub: 0Lucifer0\npatreon: NosCore\nko_fi: noscoreio\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 500,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\n\n---\n\n**Describe the bug**\nA clear and concise descriptio"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 560,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\n\n---\n\n**Is your feature request related to a problem? "
},
{
"path": ".github/dependabot.yml",
"chars": 127,
"preview": "version: 2\nupdates:\n- package-ecosystem: nuget\n directory: \"/\"\n schedule:\n interval: daily\n open-pull-requests-lim"
},
{
"path": ".github/workflows/dotnet.yml",
"chars": 4626,
"preview": "name: .NET\n\non:\n push:\n branches: [ master ]\n pull_request:\n branches: [ master ]\n\njobs:\n build:\n runs-on: u"
},
{
"path": ".gitignore",
"chars": 9481,
"preview": "\n### Csharp ###\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio "
},
{
"path": "CONTRIBUTING.md",
"chars": 3862,
"preview": "# Contributing to NosCore\n\n## Concurrency & locking\n\nNosCore intentionally uses **per-resource locks** rather than a glo"
},
{
"path": "Directory.Build.props",
"chars": 399,
"preview": "<Project>\n <PropertyGroup>\n <LangVersion>latest</LangVersion>\n <Nullable>enable</Nullable>\n <TreatWarningsAsEr"
},
{
"path": "Directory.Packages.props",
"chars": 5110,
"preview": "<Project>\n <PropertyGroup>\n <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>\n </PropertyGroup>"
},
{
"path": "LICENSE",
"chars": 1066,
"preview": "MIT License\n\nCopyright (c) 2026 NosCoreIO\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "NosCore.sln",
"chars": 24403,
"preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 18\nVisualStudioVersion = 18.2.1140"
},
{
"path": "NosCore.sln.DotSettings",
"chars": 2455,
"preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
},
{
"path": "NosCore.sln.startup.json",
"chars": 1537,
"preview": "/*\n This is a configuration file for the SwitchStartupProject Visual Studio Extension\n See https://bitbucket.org/t"
},
{
"path": "NuGet.config",
"chars": 209,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration>\n <packageSources>\n <clear />\n <add key=\"nuget.or"
},
{
"path": "README.md",
"chars": 3991,
"preview": "<p align=\"center\">\n <img src=\"https://github.com/NosCoreIO/NosCore.Packets/blob/15.0.1/icon.png\"/>\n</p>\n\n# NosCore #\n[!"
},
{
"path": "build/.gitkeep",
"chars": 1,
"preview": ""
},
{
"path": "build-exe.cmd",
"chars": 237,
"preview": "dotnet build -r win-x64 || exit /b 1\ndotnet build -r linux-x64 || exit /b 1\ndotnet build -r linux-musl-x64 || exit /b 1\n"
},
{
"path": "build.cmd",
"chars": 12,
"preview": "dotnet build"
},
{
"path": "codecov.yml",
"chars": 297,
"preview": "coverage:\n range: 35..100 #upgrade when code coverage is up\n round: down\n precision: 2\nignore:\n - \"src/NosCore.World"
},
{
"path": "configuration/api.yml",
"chars": 276,
"preview": "MasterCommunication:\n Password: NosCorePassword\n Host: ${MASTER_HOST,http://localhost}\n Port: 5000\nHost: ${HOST,127.0"
},
{
"path": "configuration/database.yml",
"chars": 83,
"preview": "Host: localhost\nPort: 5432\nDatabase: noscore\nUsername: postgres\nPassword: password\n"
},
{
"path": "configuration/logger.yml",
"chars": 313,
"preview": "Serilog:\n MinimumLevel:\n Default: Debug\n Override:\n Microsoft: Warning\n WriteTo:\n - Name: Console\n Arg"
},
{
"path": "configuration/login.yml",
"chars": 278,
"preview": "MasterCommunication:\n Password: NosCorePassword\n Host: ${MASTER_HOST,http://localhost}\n Port: 5000\nHost: ${HOST,127.0"
},
{
"path": "configuration/master.yml",
"chars": 215,
"preview": "WebApi:\n Host: ${WEBAPI_HOST,http://localhost}\n Port: 5000\n Password: NosCorePassword\nLanguage: en\nDatabase:\n Host: "
},
{
"path": "configuration/parser.yml",
"chars": 116,
"preview": "Language: en\nDatabase:\n Host: 127.0.0.1\n Port: 5432\n Database: noscore\n Username: postgres\n Password: password\n"
},
{
"path": "configuration/world.yml",
"chars": 5805,
"preview": "MasterCommunication:\n Password: NosCorePassword\n Host: ${MASTER_HOST,http://localhost}\n Port: 5000\nServerName: S1-Nos"
},
{
"path": "deploy/Dockerfile-login",
"chars": 1342,
"preview": "# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile\n\nARG REPO=mcr.microso"
},
{
"path": "deploy/Dockerfile-master",
"chars": 1348,
"preview": "# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile\n\nARG REPO=mcr.microso"
},
{
"path": "deploy/Dockerfile-world",
"chars": 1366,
"preview": "# cf https://github.com/dotnet/dotnet-docker/blob/main/src/aspnet/10.0/alpine3.21/amd64/Dockerfile\n\nARG REPO=mcr.microso"
},
{
"path": "docker-compose.yml",
"chars": 2361,
"preview": "services:\n db:\n container_name: noscore-db\n image: postgres:17.2-alpine3.21\n restart: unless-stopped\n envir"
},
{
"path": "documentation/PostmanCollection/NosCore.postman_collection.json",
"chars": 2612,
"preview": "{\n\t\"info\": {\n\t\t\"_postman_id\": \"2a1742ee-c773-4210-90b1-2f6f07ceec39\",\n\t\t\"name\": \"NosCore\",\n\t\t\"schema\": \"https://schema.g"
},
{
"path": "documentation/dat/Card.dat.md",
"chars": 1553,
"preview": "# Card.dat\n\n```text\n\tEFFECT\t{EffectId}\n\tGROUP\t0\t{Level}\n\tLAST\t{TimeoutBuff}\t{TimeoutBuffChance}\n\tNAME\t{NameI18NKey}\n\tSTY"
},
{
"path": "documentation/dat/Item.dat.md",
"chars": 5725,
"preview": "# Item.dat\n\n```text\n\tFLAG\t0\t0\t0\t{IsSoldable}\t{IsDroppable}\t{IsTradable}\t{IsMinilandActionable}\t{IsWarehouse}\t{Flag9}\t{Fl"
},
{
"path": "documentation/dat/Skill.dat.md",
"chars": 996,
"preview": "# Skill.dat\n\n```text\n```\n\n## Computed / multi-section fields\n\n| DTO property | Type | Source | Description |\n|---|---|--"
},
{
"path": "documentation/dat/monster.dat.md",
"chars": 30450,
"preview": "# monster.dat\n\n```text\n\tAINFO\t{ainfoDefType}\t{DefenceUpgrade}\n\tARMOR\t{CloseDefence}\t{meleeDef}\t{rangedDef}\t{magicDef}\t{d"
},
{
"path": "documentation/dat/quest.dat.md",
"chars": 717,
"preview": "# quest.dat\n\n```text\n```\n\n## Computed / multi-section fields\n\n| DTO property | Type | Source | Description |\n|---|---|--"
},
{
"path": "lgtm.yml",
"chars": 74,
"preview": "extraction:\n csharp:\n index:\n dotnet:\n version: \"8.0.100\"\n"
},
{
"path": "scripts/Docker - All.cmd",
"chars": 125,
"preview": "cd ..\n\ndotnet build --nologo -p:TargetArch=linux-musl-x64\ndocker-compose up --force-recreate --build login master world\n"
},
{
"path": "scripts/Docker - LoginServer.cmd",
"chars": 112,
"preview": "cd ..\n\ndotnet build --nologo -p:TargetArch=linux-musl-x64\ndocker-compose up --force-recreate --build login\nPAUSE"
},
{
"path": "scripts/Docker - MasterServer.cmd",
"chars": 113,
"preview": "cd ..\n\ndotnet build --nologo -p:TargetArch=linux-musl-x64\ndocker-compose up --force-recreate --build master\nPAUSE"
},
{
"path": "scripts/Docker - Postgres.cmd",
"chars": 33,
"preview": "cd ..\n\ndocker-compose up db\nPAUSE"
},
{
"path": "scripts/Docker - ReverseProxy.cmd",
"chars": 140,
"preview": "cd ..\n\ndocker-compose pull\ndotnet build --nologo -p:TargetArch=linux-musl-x64\ndocker-compose up --force-recreate --build"
},
{
"path": "scripts/Docker - Shutdown.cmd",
"chars": 32,
"preview": "cd ..\n\ndocker-compose down\nPAUSE"
},
{
"path": "scripts/Docker - WorldServer.cmd",
"chars": 112,
"preview": "cd ..\n\ndotnet build --nologo -p:TargetArch=linux-musl-x64\ndocker-compose up --force-recreate --build world\nPAUSE"
},
{
"path": "scripts/LoginServer.cmd",
"chars": 63,
"preview": "cd ..\\build\\net8.0\\\nstart /d \".\" dotnet NosCore.LoginServer.dll"
},
{
"path": "scripts/MasterServer.cmd",
"chars": 64,
"preview": "cd ..\\build\\net8.0\\\nstart /d \".\" dotnet NosCore.MasterServer.dll"
},
{
"path": "scripts/Parser.cmd",
"chars": 58,
"preview": "cd ..\\build\\net8.0\\\nstart /d \".\" dotnet NosCore.Parser.dll"
},
{
"path": "scripts/WorldServer.cmd",
"chars": 63,
"preview": "cd ..\\build\\net8.0\\\nstart /d \".\" dotnet NosCore.WorldServer.dll"
},
{
"path": "scripts/docker-publish.sh",
"chars": 1057,
"preview": "#!/usr/bin/env bash\n\necho \"$DOCKER_PASSWORD\" | docker login -u \"$DOCKER_USERNAME\" --password-stdin\ndotnet test --runtime"
},
{
"path": "src/NosCore.Core/AuthorizeRoleAttribute.cs",
"chars": 649,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Channel.cs",
"chars": 862,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/ChannelInfo.cs",
"chars": 785,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Concurrency/AsyncLock.cs",
"chars": 1102,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Configuration/LoginConfiguration.cs",
"chars": 749,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Configuration/WorldConfiguration.cs",
"chars": 2421,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/ConfigureJwtBearerOptions.cs",
"chars": 1691,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/ConnectionInfo.cs",
"chars": 322,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Encryption/BcryptEncryption.cs",
"chars": 530,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Encryption/Pbkdf2Hasher.cs",
"chars": 1020,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Encryption/Sha512Hasher.cs",
"chars": 765,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Extensions/TypeExtension.cs",
"chars": 2662,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/I18N/GameLanguageLocalizer.cs",
"chars": 1890,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/I18N/IGameLanguageLocalizer.cs",
"chars": 565,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/NosCore.Core.csproj",
"chars": 2715,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net10.0</TargetFramework>\n <TieredCompilati"
},
{
"path": "src/NosCore.Core/Observability/NosCoreTelemetry.cs",
"chars": 2038,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Services/IdService/IIdService.cs",
"chars": 369,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/Services/IdService/IdService.cs",
"chars": 466,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Core/SessionFactory.cs",
"chars": 778,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ChangeChannelPacket.cs",
"chars": 579,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ChangeClassPacket.cs",
"chars": 663,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ChangeGenderPacket.cs",
"chars": 463,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ClearInventoryPacket.cs",
"chars": 468,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/CommandPacketHeaderAttribute.cs",
"chars": 527,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/CreateItemPacket.cs",
"chars": 735,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/EffectCommandPacket.cs",
"chars": 563,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/EntryPointPacket.cs",
"chars": 559,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/FlCommandPacket.cs",
"chars": 565,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/GiftPacket.cs",
"chars": 858,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/HelpPacket.cs",
"chars": 439,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ICommandPacket.cs",
"chars": 514,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/InvisibleCommandPacket.cs",
"chars": 461,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/KickPacket.cs",
"chars": 547,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/KillPacket.cs",
"chars": 439,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/PositionPacket.cs",
"chars": 451,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetBankGoldPacket.cs",
"chars": 570,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetGoldCommandPacket.cs",
"chars": 740,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetHairColorPacket.cs",
"chars": 569,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetHairStylePacket.cs",
"chars": 569,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetHeroLevelCommandPacket.cs",
"chars": 766,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetHeroXpPacket.cs",
"chars": 562,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetJobLevelCommandPacket.cs",
"chars": 760,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetJobLevelXpPacket.cs",
"chars": 578,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetLevelCommandPacket.cs",
"chars": 750,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetMaintenancePacket.cs",
"chars": 673,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetReputationPacket.cs",
"chars": 775,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetSpAdditionPointPacket.cs",
"chars": 596,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SetSpPointPacket.cs",
"chars": 564,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ShoutHerePacket.cs",
"chars": 566,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/ShoutPacket.cs",
"chars": 554,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SizePacket.cs",
"chars": 709,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/SpeedPacket.cs",
"chars": 548,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/CommandPackets/TeleportPacket.cs",
"chars": 724,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/DataAttributes/StaticMetaDataAttribute.cs",
"chars": 434,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/I18NFromAttribute.cs",
"chars": 321,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/I18NString.cs",
"chars": 758,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/IDTO.cs",
"chars": 227,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/II18NDto.cs",
"chars": 385,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/IItemInstanceDto.cs",
"chars": 682,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/IStaticDto.cs",
"chars": 240,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Dto/StaticDtoExtension.cs",
"chars": 2253,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Audit/AuditLogType.cs",
"chars": 317,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Battle/TargetHitType.cs",
"chars": 423,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Bazaar/BazaarEquipmentType.cs",
"chars": 375,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Bazaar/BazaarJeweleryType.cs",
"chars": 369,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Bazaar/BazaarMainType.cs",
"chars": 370,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Bazaar/BazaarUsableType.cs",
"chars": 364,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/AdditionalTypes.cs",
"chars": 37861,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/BCardType.cs",
"chars": 3753,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/BuffType.cs",
"chars": 302,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/MedalType.cs",
"chars": 303,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/ShellOptionType.cs",
"chars": 4038,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Buff/StaticBonusType.cs",
"chars": 419,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Character/CharacterOption.cs",
"chars": 746,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Character/CharacterState.cs",
"chars": 299,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Character/FactionType.cs",
"chars": 411,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Character/MateType.cs",
"chars": 387,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Event/EventActionType.cs",
"chars": 1044,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Event/EventType.cs",
"chars": 519,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Family/FamilyAuthority.cs",
"chars": 435,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Family/FamilyLogType.cs",
"chars": 691,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Family/FamilyMemberRank.cs",
"chars": 926,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Group/GroupSharingType.cs",
"chars": 298,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Group/GroupType.cs",
"chars": 332,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/HashingType.cs",
"chars": 419,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/I18N/LanguageKey.cs",
"chars": 5091,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/Act4RaidType.cs",
"chars": 321,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/ArenaTeamType.cs",
"chars": 297,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/ChatType.cs",
"chars": 375,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/GeneralLogType.cs",
"chars": 309,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/InRespawnType.cs",
"chars": 338,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/PenaltyType.cs",
"chars": 383,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/ReceiverType.cs",
"chars": 493,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/RespawnType.cs",
"chars": 554,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/ScriptedInstanceType.cs",
"chars": 426,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/TalentArenaOptionType.cs",
"chars": 448,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Interaction/TeleporterType.cs",
"chars": 312,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/CellonType.cs",
"chars": 368,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/ItemEffectType.cs",
"chars": 1352,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/ItemType.cs",
"chars": 852,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/JewelOptionType.cs",
"chars": 455,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/RarifyMode.cs",
"chars": 418,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/RarifyProtection.cs",
"chars": 317,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/UpgradeMode.cs",
"chars": 290,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Items/UpgradeProtection.cs",
"chars": 380,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Map/MapInstanceEventType.cs",
"chars": 268,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Map/MapInstanceType.cs",
"chars": 626,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Map/MapTypeType.cs",
"chars": 805,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Map/MonsterType.cs",
"chars": 449,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Miniland/WarehouseType.cs",
"chars": 333,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/NoscorePocketType.cs",
"chars": 570,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/Quest/QuestRewardType.cs",
"chars": 791,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/SaveResult.cs",
"chars": 302,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/Enumerations/UpdateStatActionType.cs",
"chars": 390,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/GameObjectMapper.cs",
"chars": 536,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/NosCore.Data.csproj",
"chars": 2976,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net10.0</TargetFramework>\n <TieredCompilati"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.Designer.cs",
"chars": 40573,
"preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n// This code w"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.cs.resx",
"chars": 21061,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.de.resx",
"chars": 22807,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.es.resx",
"chars": 19810,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.fr.resx",
"chars": 22154,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prima"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.it.resx",
"chars": 23628,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.pl.resx",
"chars": 19936,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.resx",
"chars": 24218,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.ru.resx",
"chars": 23170,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/Resource/LocalizedResources.tr.resx",
"chars": 22410,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!-- \n Microsoft ResX Schema \n \n Version 2.0\n \n The prim"
},
{
"path": "src/NosCore.Data/WebApi/AuthIntent.cs",
"chars": 333,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/BazaarLink.cs",
"chars": 488,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/BazaarRequest.cs",
"chars": 609,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/BlacklistRequest.cs",
"chars": 386,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/Character.cs",
"chars": 366,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/CharacterRelationStatus.cs",
"chars": 557,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/FriendShipRequest.cs",
"chars": 385,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/MailRequest.cs",
"chars": 533,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/Subscriber.cs",
"chars": 499,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/WareHouseDepositRequest.cs",
"chars": 510,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Data/WebApi/WarehouseLink.cs",
"chars": 482,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/DesignTimeDbContextFactory.cs",
"chars": 983,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Account.cs",
"chars": 1604,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Act.cs",
"chars": 859,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/ActPart.cs",
"chars": 915,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/AuditLog.cs",
"chars": 800,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/BCard.cs",
"chars": 1188,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Base/I18NStringAttribute.cs",
"chars": 337,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Base/IEntity.cs",
"chars": 244,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Base/IStaticEntity.cs",
"chars": 260,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/Base/SynchronizableBaseEntity.cs",
"chars": 497,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/BazaarItem.cs",
"chars": 921,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
},
{
"path": "src/NosCore.Database/Entities/BoxInstance.cs",
"chars": 308,
"preview": "// __ _ __ __ ___ __ ___ ___\n// | \\| |/__\\ /' _/ / _//__\\| _ \\ __|\n// | | ' | \\/ |`._`.| \\_| \\/ | v / _|\n// |_"
}
]
// ... and 776 more files (download for full content)
About this extraction
This page contains the full source code of the NosCoreIO/NosCore GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 976 files (8.7 MB), approximately 2.3M tokens, and a symbol index with 5347 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.