rodecomp/Source/Contents/Items/ItemNaming.cpp
ragnarok-clanker 20ae1c861d Maintenance: Source reorganisation, part 1 of 3: Source/Contents into feature folders (375 units/headers moved). Path-only; includes
Batch #16619 by ragnarok-clanker: forced by an admin (1 lower score(s), 13 changed function(s)); checked with 460 compiled unit(s), including every includer of Source/Client/Mode/CGameMode.h, Source/Contents/Achievement/AchievementMgr.h, Source/Contents/Actors/ActorNameCard.h, Source/Contents/Actors/GameActor.h, Source/Contents/Actors/GndRiser.h, Source/Contents/Actors/GroundScope.h, Source/Contents/Actors/Item.h, Source/Contents/Actors/PlayerNameDictionary.h, Source/Contents/Actors/Resources/EquipmentResourceMgr.h, Source/Contents/AdventureGuide/AdventureGuideMgr.h, Source/Contents/CashEmotion/CashEmotionMgr.h, Source/Contents/Clan/ClanInfo.h, Source/Contents/CombatTypes.h, Source/Contents/Configuration/ConfigMgr.h, Source/Contents/Effects/Core/CellRangeEffect.h, Source/Contents/Effects/Core/ChangeSizeEffect.h, Source/Contents/Effects/Core/DummyEffectLauncher.h, Source/Contents/Effects/Core/Effect.h, Source/Contents/Effects/Core/EffectActor.h, Source/Contents/Effects/Core/EffectLists.h, Source/Contents/Effects/Core/EffectMaker.h, Source/Contents/Effects/Core/EffectMemoryMgr.h, Source/Contents/Effects/Core/EffectMessageId.h, Source/Contents/Effects/Core/EffectPoint.h, Source/Contents/Effects/Core/EffectPrimId.h, Source/Contents/Effects/Core/EffectTypes.h, Source/Contents/Effects/Core/MsgEffect.h, Source/Contents/Effects/Core/RagEffect.h, Source/Contents/Effects/Core/RagEffectState.h, Source/Contents/Effects/Core/ShowEffect.h, Source/Contents/Effects/Core/SquareRangeEffect.h, Source/Contents/Effects/EffectResourceSwitcher.h, Source/Contents/Effects/Particles/AnimatedEmitterEffect.h, Source/Contents/Effects/Particles/CharacterParticleBundle.h, Source/Contents/Effects/Particles/EZ2STREffect.h, Source/Contents/Effects/Particles/EZ2STREffectEx.h, Source/Contents/Effects/Particles/EffectEmitter.h, Source/Contents/Effects/Particles/EmitterEffect.h, Source/Contents/Effects/Particles/Particle.h, Source/Contents/Effects/Particles/ParticlePool.h, Source/Contents/Effects/Particles/SpriteEffect.h, Source/Contents/Effects/Particles/SpriteParticle.h, Source/Contents/Effects/Primitives/EffectPrim.h, Source/Contents/Effects/Primitives/EffectPrimitiveMotion.h, Source/Contents/Effects/Primitives/EffectPrimitiveState.h, Source/Contents/Effects/RDamageVar.h, Source/Contents/Effects/Skills/AMachineEffect.h, Source/Contents/Effects/Skills/AcidifiedThrow.h, Source/Contents/Effects/Skills/ArrowEffect.h, Source/Contents/Effects/Skills/AstralStrikeEffect.h, Source/Contents/Effects/Skills/AxeBoomerang.h, Source/Contents/Effects/Skills/Bash.h, Source/Contents/Effects/Skills/BezierArcThrowEffect.h, Source/Contents/Effects/Skills/BindTrapEffect.h, Source/Contents/Effects/Skills/BlastForge.h, Source/Contents/Effects/Skills/CaneOfEvilEyeEffect.h, Source/Contents/Effects/Skills/CartCannon.h, Source/Contents/Effects/Skills/ChargingPierceEffect.h, Source/Contents/Effects/Skills/CherryBlossomEffect.h, Source/Contents/Effects/Skills/ClimaxEffect.h, Source/Contents/Effects/Skills/CloudEffect.h, Source/Contents/Effects/Skills/CloudKillEffect.h, Source/Contents/Effects/Skills/CommonFloorEffect.h, Source/Contents/Effects/Skills/Competentia.h, Source/Contents/Effects/Skills/CresciveBolt.h, Source/Contents/Effects/Skills/ElectricEffect.h, Source/Contents/Effects/Skills/EnergyOrbEffect.h, Source/Contents/Effects/Skills/EvilLandEffect.h, Source/Contents/Effects/Skills/EvilsPawEffect.h, Source/Contents/Effects/Skills/FlowerCastingEffect.h, Source/Contents/Effects/Skills/FortuneKissEffect.h, Source/Contents/Effects/Skills/FriggSongEffect.h, Source/Contents/Effects/Skills/FuumaShouakuEffect.h, Source/Contents/Effects/Skills/GlassWallEffect.h, Source/Contents/Effects/Skills/GravityControlEffect.h, Source/Contents/Effects/Skills/HealEffect.h, Source/Contents/Effects/Skills/HealSpEffect.h, Source/Contents/Effects/Skills/HitLineEffect.h, Source/Contents/Effects/Skills/JupitelThunderStormEffect.h, Source/Contents/Effects/Skills/Level150Effect.h, Source/Contents/Effects/Skills/Level99Effect.h, Source/Contents/Effects/Skills/Level99Orb1Effect.h, Source/Contents/Effects/Skills/Level99Orb2Effect.h, Source/Contents/Effects/Skills/LightSphereEffect.h, Source/Contents/Effects/Skills/MagicFloorEffect.h, Source/Contents/Effects/Skills/MagnumBreak.h, Source/Contents/Effects/Skills/MandraAttackEffect.h, Source/Contents/Effects/Skills/MapChainEffect.h, Source/Contents/Effects/Skills/MapMagicZoneEffect.h, Source/Contents/Effects/Skills/MappillarEffect.h, Source/Contents/Effects/Skills/MonsterSkillEffects.h, Source/Contents/Effects/Skills/NyanggrassEffect.h, Source/Contents/Effects/Skills/PartyMemberEffects.h, Source/Contents/Effects/Skills/PokJukEffect.h, Source/Contents/Effects/Skills/PowderingEffect.h, Source/Contents/Effects/Skills/RainbowEffect.h, Source/Contents/Effects/Skills/RectUpEffect.h, Source/Contents/Effects/Skills/RedLineEffect.h, Source/Contents/Effects/Skills/RichManKim.h, Source/Contents/Effects/Skills/RotateBgEffect.h, Source/Contents/Effects/Skills/RotateItemEffect.h, Source/Contents/Effects/Skills/RotateLineEffect.h, Source/Contents/Effects/Skills/SaintCastingEffect.h, Source/Contents/Effects/Skills/ScatterEffect.h, Source/Contents/Effects/Skills/ShadowExceedEffect.h, Source/Contents/Effects/Skills/SkillEffects.h, Source/Contents/Effects/Skills/SmokeEffect.h, Source/Contents/Effects/Skills/SoulCollectEffect.h, Source/Contents/Effects/Skills/SoulUnityEffect.h, Source/Contents/Effects/Skills/SphereWind2Effect.h, Source/Contents/Effects/Skills/SphereWindEffect.h, Source/Contents/Effects/Skills/StarEffect.h, Source/Contents/Effects/Skills/StarEmperorEffect.h, Source/Contents/Effects/Skills/StealEffect.h, Source/Contents/Effects/Skills/StormCannonEffect.h, Source/Contents/Effects/Skills/StormGustEffect.h, Source/Contents/Effects/Skills/StormKickEffect.h, Source/Contents/Effects/Skills/SunStanceEffect.h, Source/Contents/Effects/Skills/TalismanMarkEffect.h, Source/Contents/Effects/Skills/TetraBallEffect.h, Source/Contents/Effects/Skills/ThrowEffects.h, Source/Contents/Effects/Skills/TriangleShotArrow.h, Source/Contents/Effects/Skills/ViolentQuakeEffect.h, Source/Contents/Effects/Skills/WhirlwindEffect.h, Source/Contents/Effects/Skills/WindEffect.h, Source/Contents/EntryQueue/EntryQueueMgr.h, Source/Contents/Events/CheckAttendanceMgr.h, Source/Contents/Events/RouletteMgr.h, Source/Contents/Events/ShowRankingScheduler.h, Source/Contents/Events/SpecialPopupMgr.h, Source/Contents/Guild/GuildInfo.h, Source/Contents/Guild/GuildMgr.h, Source/Contents/Guild/GuildTip.h, Source/Contents/Items/ClientItemLists.h, Source/Contents/Items/EnchantMgr.h, Source/Contents/Items/ItemDBToIDMgr.h, Source/Contents/Items/JobCodeForItem.h, Source/Contents/Map/FlyingShipRouteInfo.h, Source/Contents/Map/MapInfoMgr.h, Source/Contents/Map/MapPropertyMgr.h, Source/Contents/Map/MapSkyMgr.h, Source/Contents/Map/PrivateAirplaneMgr.h, Source/Contents/Map/TownInfoMgr.h, Source/Contents/Monster/ChampionMonsterMgr.h, Source/Contents/Movement/MovementRouteInterpolation.h, Source/Contents/Movement/TerrainPathSearch.h, Source/Contents/Navigation/NavigationManager.h, Source/Contents/Pet/PetEnums.h, Source/Contents/Pet/PetEvolutionMgr.h, Source/Contents/Quest/RenewQuestMgr.h, Source/Contents/Repute/ReputeMgr.h, Source/Contents/Repute/ReputeRecords.h, Source/Contents/Rodex/RodexMailStore.h, Source/Contents/RuneSystem/RuneSystem.h, Source/Contents/Skills/GraffiSkill.h, Source/Contents/Skin/SkinMgr.h, Source/Contents/Sprites/SpriteLayerDrawing.h, Source/Contents/Sprites/SpriteLayerOrder.h, Source/Contents/Sprites/SpriteRidingOffset.h, Source/Contents/Sprites/SpriteRidingPolicy.h, Source/Contents/Tables/ForbiddenWords.h, Source/Contents/Tables/MessageTable.h, Source/Contents/Tables/SimpleStringMgr.h, Source/Contents/Tables/TableMng.h, Source/Contents/Tables/TipBoxTitles.h, Source/Contents/Tables/TipOfTheDay.h, Source/Contents/Time/ServerTimeManager.h, Source/Contents/World/WorldViewData.h, Source/UI/Guild/UIGuildWnd.h, Source/UI/Lists/UIScrollBarVariants.h, Source/UI/Rodex/UIRodexInboxWnd.h, Source/UI/RuneSystem/UIRuneSystemWindows.h, Source/UI/RuneSystem/UIRuneSystemWnd.h, Source/UI/Text/UIAchWnd.h, Source/UI/UIReputeWnd.h, Source/UI/Window/UINewMakeCharWnd.h, Source/UI/Window/UIRoMapWnd.h, Source/Utility/JsonCppLoader.h, Source/Contents/AchievementMgr.h, Source/Contents/ActorNameCard.h, Source/Contents/Actors/GraffiSkill.h, Source/Contents/Actors/PetEnums.h, Source/Contents/AdventureGuideMgr.h, Source/Contents/CashEmotionMgr.h, Source/Contents/ChampionMonsterMgr.h, Source/Contents/CheckAttendanceMgr.h, Source/Contents/ClanInfo.h, Source/Contents/ClientItemLists.h, Source/Contents/Combat/CombatTypes.h, Source/Contents/ConfigMgr.h, Source/Contents/EffectResourceSwitcher.h, Source/Contents/Effects/AMachineEffect.h, Source/Contents/Effects/AcidifiedThrow.h, Source/Contents/Effects/AnimatedEmitterEffect.h, Source/Contents/Effects/ArrowEffect.h, Source/Contents/Effects/AstralStrikeEffect.h, Source/Contents/Effects/AxeBoomerang.h, Source/Contents/Effects/Bash.h, Source/Contents/Effects/BezierArcThrowEffect.h, Source/Contents/Effects/BindTrapEffect.h, Source/Contents/Effects/BlastForge.h, Source/Contents/Effects/CaneOfEvilEyeEffect.h, Source/Contents/Effects/CartCannon.h, Source/Contents/Effects/CellRangeEffect.h, Source/Contents/Effects/ChangeSizeEffect.h, Source/Contents/Effects/CharacterParticleBundle.h, Source/Contents/Effects/ChargingPierceEffect.h, Source/Contents/Effects/CherryBlossomEffect.h, Source/Contents/Effects/ClimaxEffect.h, Source/Contents/Effects/CloudEffect.h, Source/Contents/Effects/CloudKillEffect.h, Source/Contents/Effects/CommonFloorEffect.h, Source/Contents/Effects/Competentia.h, Source/Contents/Effects/CresciveBolt.h, Source/Contents/Effects/DummyEffectLauncher.h, Source/Contents/Effects/EZ2STREffect.h, Source/Contents/Effects/EZ2STREffectEx.h, Source/Contents/Effects/Effect.h, Source/Contents/Effects/EffectActor.h, Source/Contents/Effects/EffectEmitter.h, Source/Contents/Effects/EffectLists.h, Source/Contents/Effects/EffectMaker.h, Source/Contents/Effects/EffectMemoryMgr.h, Source/Contents/Effects/EffectMessageId.h, Source/Contents/Effects/EffectPoint.h, Source/Contents/Effects/EffectPrim.h, Source/Contents/Effects/EffectPrimId.h, Source/Contents/Effects/EffectPrimitiveMotion.h, Source/Contents/Effects/EffectPrimitiveState.h, Source/Contents/Effects/EffectTypes.h, Source/Contents/Effects/ElectricEffect.h, Source/Contents/Effects/EmitterEffect.h, Source/Contents/Effects/EnergyOrbEffect.h, Source/Contents/Effects/EvilLandEffect.h, Source/Contents/Effects/EvilsPawEffect.h, Source/Contents/Effects/FlowerCastingEffect.h, Source/Contents/Effects/FortuneKissEffect.h, Source/Contents/Effects/FriggSongEffect.h, Source/Contents/Effects/FuumaShouakuEffect.h, Source/Contents/Effects/GlassWallEffect.h, Source/Contents/Effects/GravityControlEffect.h, Source/Contents/Effects/HealEffect.h, Source/Contents/Effects/HealSpEffect.h, Source/Contents/Effects/HitLineEffect.h, Source/Contents/Effects/JupitelThunderStormEffect.h, Source/Contents/Effects/Level150Effect.h, Source/Contents/Effects/Level99Effect.h, Source/Contents/Effects/Level99Orb1Effect.h, Source/Contents/Effects/Level99Orb2Effect.h, Source/Contents/Effects/LightSphereEffect.h, Source/Contents/Effects/MagicFloorEffect.h, Source/Contents/Effects/MagnumBreak.h, Source/Contents/Effects/MandraAttackEffect.h, Source/Contents/Effects/MapChainEffect.h, Source/Contents/Effects/MapMagicZoneEffect.h, Source/Contents/Effects/MappillarEffect.h, Source/Contents/Effects/MonsterSkillEffects.h, Source/Contents/Effects/MsgEffect.h, Source/Contents/Effects/NyanggrassEffect.h, Source/Contents/Effects/Particle.h, Source/Contents/Effects/ParticlePool.h, Source/Contents/Effects/PartyMemberEffects.h, Source/Contents/Effects/PokJukEffect.h, Source/Contents/Effects/PowderingEffect.h, Source/Contents/Effects/RagEffect.h, Source/Contents/Effects/RagEffectState.h, Source/Contents/Effects/RainbowEffect.h, Source/Contents/Effects/RectUpEffect.h, Source/Contents/Effects/RedLineEffect.h, Source/Contents/Effects/RichManKim.h, Source/Contents/Effects/RotateBgEffect.h, Source/Contents/Effects/RotateItemEffect.h, Source/Contents/Effects/RotateLineEffect.h, Source/Contents/Effects/SaintCastingEffect.h, Source/Contents/Effects/ScatterEffect.h, Source/Contents/Effects/ShadowExceedEffect.h, Source/Contents/Effects/ShowEffect.h, Source/Contents/Effects/SkillEffects.h, Source/Contents/Effects/SmokeEffect.h, Source/Contents/Effects/SoulCollectEffect.h, Source/Contents/Effects/SoulUnityEffect.h, Source/Contents/Effects/SphereWind2Effect.h, Source/Contents/Effects/SphereWindEffect.h, Source/Contents/Effects/SpriteEffect.h, Source/Contents/Effects/SpriteParticle.h, Source/Contents/Effects/SquareRangeEffect.h, Source/Contents/Effects/StarEffect.h, Source/Contents/Effects/StarEmperorEffect.h, Source/Contents/Effects/StealEffect.h, Source/Contents/Effects/StormCannonEffect.h, Source/Contents/Effects/StormGustEffect.h, Source/Contents/Effects/StormKickEffect.h, Source/Contents/Effects/SunStanceEffect.h, Source/Contents/Effects/TalismanMarkEffect.h, Source/Contents/Effects/TetraBallEffect.h, Source/Contents/Effects/ThrowEffects.h, Source/Contents/Effects/TriangleShotArrow.h, Source/Contents/Effects/ViolentQuakeEffect.h, Source/Contents/Effects/WhirlwindEffect.h, Source/Contents/Effects/WindEffect.h, Source/Contents/EnchantMgr.h, Source/Contents/EntryQueueMgr.h, Source/Contents/EquipmentResourceMgr.h, Source/Contents/FlyingShipRouteInfo.h, Source/Contents/ForbiddenWords.h, Source/Contents/GuildInfo.h, Source/Contents/GuildMgr.h, Source/Contents/GuildTip.h, Source/Contents/ItemDBToIDMgr.h, Source/Contents/Items/RuneSystem.h, Source/Contents/JobCodeForItem.h, Source/Contents/MapInfoMgr.h, Source/Contents/MapPropertyMgr.h, Source/Contents/MapSkyMgr.h, Source/Contents/MessageTable.h, Source/Contents/MovementRouteInterpolation.h, Source/Contents/NavigationManager.h, Source/Contents/PetEvolutionMgr.h, Source/Contents/PlayerNameDictionary.h, Source/Contents/PrivateAirplaneMgr.h, Source/Contents/RDamageVar.h, Source/Contents/RenewQuestMgr.h, Source/Contents/ReputeMgr.h, Source/Contents/ReputeRecords.h, Source/Contents/RodexMailStore.h, Source/Contents/RouletteMgr.h, Source/Contents/ServerTimeManager.h, Source/Contents/ShowRankingScheduler.h, Source/Contents/SimpleStringMgr.h, Source/Contents/SkinMgr.h, Source/Contents/SpecialPopupMgr.h, Source/Contents/SpriteLayerDrawing.h, Source/Contents/SpriteLayerOrder.h, Source/Contents/SpriteRidingOffset.h, Source/Contents/SpriteRidingPolicy.h, Source/Contents/TableMng.h, Source/Contents/TerrainPathSearch.h, Source/Contents/TipBoxTitles.h, Source/Contents/TipOfTheDay.h, Source/Contents/TownInfoMgr.h, Source/Contents/WorldView/WorldViewData.h.
Adds to the build: Source/Contents/Achievement/AchievementMgr.cpp, Source/Contents/Actors/ActorGeometry.cpp, Source/Contents/Actors/ActorNameCache.cpp, Source/Contents/Actors/ActorNameCard.cpp, Source/Contents/Actors/ActorNameDirectory.cpp, Source/Contents/Actors/ActorNameRequests.cpp, Source/Contents/Actors/PlayerNameDictionary.cpp, Source/Contents/Actors/Resources/BodyResources.cpp, Source/Contents/Actors/Resources/EquipmentResources.cpp, Source/Contents/Actors/Resources/HeadResources.cpp, Source/Contents/Actors/Resources/MonsterResources.cpp, Source/Contents/Actors/Resources/RobeResources.cpp, Source/Contents/Actors/Resources/StatusIconImages.cpp, Source/Contents/AdventureGuide/AdventureGuideMgr.cpp, Source/Contents/CashEmotion/CashEmotionMgr.cpp, Source/Contents/Clan/ClanInfo.cpp, Source/Contents/Configuration/ConfigMgr.cpp, Source/Contents/Effects/Core/CellRangeEffect.cpp, Source/Contents/Effects/Core/ChangeSizeEffect.cpp, Source/Contents/Effects/Core/DummyEffectLauncher.cpp, Source/Contents/Effects/Core/Effect.cpp, Source/Contents/Effects/Core/EffectActor.cpp, Source/Contents/Effects/Core/EffectAttachments.cpp, Source/Contents/Effects/Core/EffectForceRender.cpp, Source/Contents/Effects/Core/EffectLists.cpp, Source/Contents/Effects/Core/EffectMaker.cpp, Source/Contents/Effects/Core/EffectMemoryMgr.cpp, Source/Contents/Effects/Core/EffectTypes.cpp, Source/Contents/Effects/Core/EffectVisibility.cpp, Source/Contents/Effects/Core/MsgEffect.cpp, Source/Contents/Effects/Core/RagEffect.cpp, Source/Contents/Effects/Core/RagEffectInitialization.cpp, Source/Contents/Effects/Core/ShowEffect.cpp, Source/Contents/Effects/Core/SquareRangeEffect.cpp, Source/Contents/Effects/EffectResourceSwitcher.cpp, Source/Contents/Effects/Particles/AnimatedEmitterEffect.cpp, Source/Contents/Effects/Particles/CharacterParticleBundle.cpp, Source/Contents/Effects/Particles/EZ2STREffect.cpp, Source/Contents/Effects/Particles/EZ2STREffectEx.cpp, Source/Contents/Effects/Particles/EmitterEffect.cpp, Source/Contents/Effects/Particles/Particle.cpp, Source/Contents/Effects/Particles/ParticlePool.cpp, Source/Contents/Effects/Particles/SpriteEffect.cpp, Source/Contents/Effects/Particles/SpriteParticle.cpp, Source/Contents/Effects/Primitives/EffectPrim.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveArcs.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveColor.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveGlowSquares.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveMotion.cpp, Source/Contents/Effects/Primitives/EffectPrimitivePanels.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveRecords.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveRendering.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveSprites.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveState.cpp, Source/Contents/Effects/Primitives/EffectPrimitiveSweeps.cpp, Source/Contents/Effects/RDamageVar.cpp, Source/Contents/Effects/Skills/AMachineEffect.cpp, Source/Contents/Effects/Skills/AcidifiedThrow.cpp, Source/Contents/Effects/Skills/ArrowEffect.cpp, Source/Contents/Effects/Skills/AstralStrikeEffect.cpp, Source/Contents/Effects/Skills/AxeBoomerang.cpp, Source/Contents/Effects/Skills/Bash.cpp, Source/Contents/Effects/Skills/BezierArcThrowEffect.cpp, Source/Contents/Effects/Skills/BindTrapEffect.cpp, Source/Contents/Effects/Skills/BlastForge.cpp, Source/Contents/Effects/Skills/CaneOfEvilEyeEffect.cpp, Source/Contents/Effects/Skills/CartCannon.cpp, Source/Contents/Effects/Skills/ChargingPierceEffect.cpp, Source/Contents/Effects/Skills/CherryBlossomEffect.cpp, Source/Contents/Effects/Skills/ClimaxEffect.cpp, Source/Contents/Effects/Skills/CloudEffect.cpp, Source/Contents/Effects/Skills/CloudKillEffect.cpp, Source/Contents/Effects/Skills/CommonFloorEffect.cpp, Source/Contents/Effects/Skills/Competentia.cpp, Source/Contents/Effects/Skills/CresciveBolt.cpp, Source/Contents/Effects/Skills/ElectricEffect.cpp, Source/Contents/Effects/Skills/EnergyOrbEffect.cpp, Source/Contents/Effects/Skills/EvilLandEffect.cpp, Source/Contents/Effects/Skills/EvilsPawEffect.cpp, Source/Contents/Effects/Skills/FlowerCastingEffect.cpp, Source/Contents/Effects/Skills/FortuneKissEffect.cpp, Source/Contents/Effects/Skills/FriggSongEffect.cpp, Source/Contents/Effects/Skills/FuumaShouakuEffect.cpp, Source/Contents/Effects/Skills/GlassWallEffect.cpp, Source/Contents/Effects/Skills/HealEffect.cpp, Source/Contents/Effects/Skills/HealSpEffect.cpp, Source/Contents/Effects/Skills/HitLineEffect.cpp, Source/Contents/Effects/Skills/JupitelThunderStormEffect.cpp, Source/Contents/Effects/Skills/Level150Effect.cpp, Source/Contents/Effects/Skills/Level99Effect.cpp, Source/Contents/Effects/Skills/Level99Orb1Effect.cpp, Source/Contents/Effects/Skills/Level99Orb2Effect.cpp, Source/Contents/Effects/Skills/LightSphereEffect.cpp, Source/Contents/Effects/Skills/MagicFloorEffect.cpp, Source/Contents/Effects/Skills/MagnumBreak.cpp, Source/Contents/Effects/Skills/MandraAttackEffect.cpp, Source/Contents/Effects/Skills/MapChainEffect.cpp, Source/Contents/Effects/Skills/MapMagicZoneEffect.cpp, Source/Contents/Effects/Skills/MappillarEffect.cpp, Source/Contents/Effects/Skills/MeteorEffect.cpp, Source/Contents/Effects/Skills/MonsterSkillEffects.cpp, Source/Contents/Effects/Skills/NyanggrassEffect.cpp, Source/Contents/Effects/Skills/PartyMemberEffects.cpp, Source/Contents/Effects/Skills/PokJukEffect.cpp, Source/Contents/Effects/Skills/PowderingEffect.cpp, Source/Contents/Effects/Skills/RainbowEffect.cpp, Source/Contents/Effects/Skills/RectUpEffect.cpp, Source/Contents/Effects/Skills/RedLineEffect.cpp, Source/Contents/Effects/Skills/RichManKim.cpp, Source/Contents/Effects/Skills/RotateBgEffect.cpp, Source/Contents/Effects/Skills/RotateItemEffect.cpp, Source/Contents/Effects/Skills/RotateLineEffect.cpp, Source/Contents/Effects/Skills/SaintCastingEffect.cpp, Source/Contents/Effects/Skills/ScatterEffect.cpp, Source/Contents/Effects/Skills/ShadowExceedEffect.cpp, Source/Contents/Effects/Skills/ShadowExceedNewEffect.cpp, Source/Contents/Effects/Skills/SmokeEffect.cpp, Source/Contents/Effects/Skills/SoulCollectEffect.cpp, Source/Contents/Effects/Skills/SoulUnityEffect.cpp, Source/Contents/Effects/Skills/SphereWind2Effect.cpp, Source/Contents/Effects/Skills/SphereWindEffect.cpp, Source/Contents/Effects/Skills/StarEffect.cpp, Source/Contents/Effects/Skills/StarEmperorEffect.cpp, Source/Contents/Effects/Skills/StealEffect.cpp, Source/Contents/Effects/Skills/StormCannonEffect.cpp, Source/Contents/Effects/Skills/StormGustEffect.cpp, Source/Contents/Effects/Skills/StormKickEffect.cpp, Source/Contents/Effects/Skills/SunStanceEffect.cpp, Source/Contents/Effects/Skills/TalismanMarkEffect.cpp, Source/Contents/Effects/Skills/TetraBallEffect.cpp, Source/Contents/Effects/Skills/ThrowEffects.cpp, Source/Contents/Effects/Skills/TriangleShotArrow.cpp, Source/Contents/Effects/Skills/ViolentQuakeEffect.cpp, Source/Contents/Effects/Skills/WindEffect.cpp, Source/Contents/Emblems/EmblemCacheRaw.cpp, Source/Contents/Emblems/GuildEmblemLookup.cpp, Source/Contents/Emblems/GuildEmblemState.cpp, Source/Contents/EntryQueue/EntryQueueMgr.cpp, Source/Contents/Events/CheckAttendanceMgr.cpp, Source/Contents/Events/RouletteMgr.cpp, Source/Contents/Events/ShowRankingScheduler.cpp, Source/Contents/Events/SpecialPopupMgr.cpp, Source/Contents/Guild/GuildInfo.cpp, Source/Contents/Guild/GuildMgr.cpp, Source/Contents/Guild/GuildTip.cpp, Source/Contents/Items/ClientItemLists.cpp, Source/Contents/Items/EnchantMgr.cpp, Source/Contents/Items/ItemDBToIDMgr.cpp, Source/Contents/Items/JobCodeForItem.cpp, Source/Contents/Map/FlyingShipRouteInfo.cpp, Source/Contents/Map/MapInfoMgr.cpp, Source/Contents/Map/MapNameTable.cpp, Source/Contents/Map/MapPropertyMgr.cpp, Source/Contents/Map/MapSkyMgr.cpp, Source/Contents/Map/PrivateAirplaneMgr.cpp, Source/Contents/Map/TownInfoMgr.cpp, Source/Contents/Models/ModelKeyframes.cpp, Source/Contents/Monster/ChampionMonsterMgr.cpp, Source/Contents/Monster/EnemyMonsterTalk.cpp, Source/Contents/Monster/MonsterSpeech.cpp, Source/Contents/Monster/MonsterXmlActions.cpp, Source/Contents/Movement/ActorMovementRoute.cpp, Source/Contents/Movement/MovementRoute.cpp, Source/Contents/Movement/MovementRouteInterpolation.cpp, Source/Contents/Movement/MovementTraversal.cpp, Source/Contents/Movement/Pathfinding.cpp, Source/Contents/Movement/TerrainPathSearch.cpp, Source/Contents/Navigation/NavigationCandidates.cpp, Source/Contents/Navigation/NavigationDestinations.cpp, Source/Contents/Navigation/NavigationGraph.cpp, Source/Contents/Navigation/NavigationLink.cpp, Source/Contents/Navigation/NavigationRequest.cpp, Source/Contents/Navigation/NavigationRoute.cpp, Source/Contents/Navigation/NavigationSource.cpp, Source/Contents/Navigation/NpcLocationRadius.cpp, Source/Contents/Navigation/WorldNavigation.cpp, Source/Contents/Pet/PetEvolutionMgr.cpp, Source/Contents/Pet/PetStatus.cpp, Source/Contents/Pet/PetStrings.cpp, Source/Contents/Pet/PetTalk.cpp, Source/Contents/Pet/PetTalkNames.cpp, Source/Contents/Quest/RenewQuestMgr.cpp, Source/Contents/Repute/ReputeMgr.cpp, Source/Contents/Rodex/RodexMailStore.cpp, Source/Contents/RuneSystem/RuneSystem.cpp, Source/Contents/Skills/GraffiSkill.cpp, Source/Contents/Skin/SkinCatalog.cpp, Source/Contents/Skin/SkinInfo.cpp, Source/Contents/Skin/SkinMgr.cpp, Source/Contents/Sound/HitSounds.cpp, Source/Contents/Sprites/RobeOpacity.cpp, Source/Contents/Sprites/RobeTopLayer.cpp, Source/Contents/Sprites/SpriteFrameSynchronization.cpp, Source/Contents/Sprites/SpriteJob.cpp, Source/Contents/Sprites/SpriteLayerDepth.cpp, Source/Contents/Sprites/SpriteLayerDrawing.cpp, Source/Contents/Sprites/SpriteLayerOrder.cpp, Source/Contents/Sprites/SpriteRidingOffset.cpp, Source/Contents/Sprites/SpriteRidingPolicy.cpp, Source/Contents/Sprites/SpriteRobe.cpp, Source/Contents/Sprites/SpriteRobeCommands.cpp, Source/Contents/Sprites/SpriteShadow.cpp, Source/Contents/Tables/ClientXmlTables.cpp, Source/Contents/Tables/ForbiddenWords.cpp, Source/Contents/Tables/MessageTable.cpp, Source/Contents/Tables/SimpleStringMgr.cpp, Source/Contents/Tables/TableMng.cpp, Source/Contents/Tables/TipBoxTitles.cpp, Source/Contents/Tables/TipOfTheDay.cpp, Source/Contents/Time/ClientTiming.cpp, Source/Contents/Time/ServerTimeManager.cpp, Source/Contents/World/WorldViewData.cpp
Deletes: Source/Contents/AchievementMgr.cpp, Source/Contents/AchievementMgr.h, Source/Contents/ActorGeometry.cpp, Source/Contents/ActorMovementRoute.cpp, Source/Contents/ActorNameCache.cpp, Source/Contents/ActorNameCard.cpp, Source/Contents/ActorNameCard.h, Source/Contents/ActorNameDirectory.cpp, Source/Contents/ActorNameRequests.cpp, Source/Contents/Actors/GraffiSkill.cpp, Source/Contents/Actors/GraffiSkill.h, Source/Contents/Actors/PetEnums.h, Source/Contents/AdventureGuideMgr.cpp, Source/Contents/AdventureGuideMgr.h, Source/Contents/BodyResources.cpp, Source/Contents/CashEmotionMgr.cpp, Source/Contents/CashEmotionMgr.h, Source/Contents/ChampionMonsterMgr.cpp, Source/Contents/ChampionMonsterMgr.h, Source/Contents/CheckAttendanceMgr.cpp, Source/Contents/CheckAttendanceMgr.h, Source/Contents/ClanInfo.cpp, Source/Contents/ClanInfo.h, Source/Contents/ClientItemLists.cpp, Source/Contents/ClientItemLists.h, Source/Contents/ClientTiming.cpp, Source/Contents/ClientXmlTables.cpp, Source/Contents/Combat/CombatTypes.h, Source/Contents/ConfigMgr.cpp, Source/Contents/ConfigMgr.h, Source/Contents/EffectResourceSwitcher.cpp, Source/Contents/EffectResourceSwitcher.h, Source/Contents/Effects/AMachineEffect.cpp, Source/Contents/Effects/AMachineEffect.h, Source/Contents/Effects/AcidifiedThrow.cpp, Source/Contents/Effects/AcidifiedThrow.h, Source/Contents/Effects/AnimatedEmitterEffect.cpp, Source/Contents/Effects/AnimatedEmitterEffect.h, Source/Contents/Effects/ArrowEffect.cpp, Source/Contents/Effects/ArrowEffect.h, Source/Contents/Effects/AstralStrikeEffect.cpp, Source/Contents/Effects/AstralStrikeEffect.h, Source/Contents/Effects/AxeBoomerang.cpp, Source/Contents/Effects/AxeBoomerang.h, Source/Contents/Effects/Bash.cpp, Source/Contents/Effects/Bash.h, Source/Contents/Effects/BezierArcThrowEffect.cpp, Source/Contents/Effects/BezierArcThrowEffect.h, Source/Contents/Effects/BindTrapEffect.cpp, Source/Contents/Effects/BindTrapEffect.h, Source/Contents/Effects/BlastForge.cpp, Source/Contents/Effects/BlastForge.h, Source/Contents/Effects/CaneOfEvilEyeEffect.cpp, Source/Contents/Effects/CaneOfEvilEyeEffect.h, Source/Contents/Effects/CartCannon.cpp, Source/Contents/Effects/CartCannon.h, Source/Contents/Effects/CellRangeEffect.cpp, Source/Contents/Effects/CellRangeEffect.h, Source/Contents/Effects/ChangeSizeEffect.cpp, Source/Contents/Effects/ChangeSizeEffect.h, Source/Contents/Effects/CharacterParticleBundle.cpp, Source/Contents/Effects/CharacterParticleBundle.h, Source/Contents/Effects/ChargingPierceEffect.cpp, Source/Contents/Effects/ChargingPierceEffect.h, Source/Contents/Effects/CherryBlossomEffect.cpp, Source/Contents/Effects/CherryBlossomEffect.h, Source/Contents/Effects/ClimaxEffect.cpp, Source/Contents/Effects/ClimaxEffect.h, Source/Contents/Effects/CloudEffect.cpp, Source/Contents/Effects/CloudEffect.h, Source/Contents/Effects/CloudKillEffect.cpp, Source/Contents/Effects/CloudKillEffect.h, Source/Contents/Effects/CommonFloorEffect.cpp, Source/Contents/Effects/CommonFloorEffect.h, Source/Contents/Effects/Competentia.cpp, Source/Contents/Effects/Competentia.h, Source/Contents/Effects/CresciveBolt.cpp, Source/Contents/Effects/CresciveBolt.h, Source/Contents/Effects/DummyEffectLauncher.cpp, Source/Contents/Effects/DummyEffectLauncher.h, Source/Contents/Effects/EZ2STREffect.cpp, Source/Contents/Effects/EZ2STREffect.h, Source/Contents/Effects/EZ2STREffectEx.cpp, Source/Contents/Effects/EZ2STREffectEx.h, Source/Contents/Effects/Effect.cpp, Source/Contents/Effects/Effect.h, Source/Contents/Effects/EffectActor.cpp, Source/Contents/Effects/EffectActor.h, Source/Contents/Effects/EffectAttachments.cpp, Source/Contents/Effects/EffectEmitter.h, Source/Contents/Effects/EffectForceRender.cpp, Source/Contents/Effects/EffectLists.cpp, Source/Contents/Effects/EffectLists.h, Source/Contents/Effects/EffectMaker.cpp, Source/Contents/Effects/EffectMaker.h, Source/Contents/Effects/EffectMemoryMgr.cpp, Source/Contents/Effects/EffectMemoryMgr.h, Source/Contents/Effects/EffectMessageId.h, Source/Contents/Effects/EffectPoint.h, Source/Contents/Effects/EffectPrim.cpp, Source/Contents/Effects/EffectPrim.h, Source/Contents/Effects/EffectPrimId.h, Source/Contents/Effects/EffectPrimitiveArcs.cpp, Source/Contents/Effects/EffectPrimitiveColor.cpp, Source/Contents/Effects/EffectPrimitiveGlowSquares.cpp, Source/Contents/Effects/EffectPrimitiveMotion.cpp, Source/Contents/Effects/EffectPrimitiveMotion.h, Source/Contents/Effects/EffectPrimitivePanels.cpp, Source/Contents/Effects/EffectPrimitiveRecords.cpp, Source/Contents/Effects/EffectPrimitiveRendering.cpp, Source/Contents/Effects/EffectPrimitiveSprites.cpp, Source/Contents/Effects/EffectPrimitiveState.cpp, Source/Contents/Effects/EffectPrimitiveState.h, Source/Contents/Effects/EffectPrimitiveSweeps.cpp, Source/Contents/Effects/EffectTypes.cpp, Source/Contents/Effects/EffectTypes.h, Source/Contents/Effects/EffectVisibility.cpp, Source/Contents/Effects/ElectricEffect.cpp, Source/Contents/Effects/ElectricEffect.h, Source/Contents/Effects/EmitterEffect.cpp, Source/Contents/Effects/EmitterEffect.h, Source/Contents/Effects/EnergyOrbEffect.cpp, Source/Contents/Effects/EnergyOrbEffect.h, Source/Contents/Effects/EvilLandEffect.cpp, Source/Contents/Effects/EvilLandEffect.h, Source/Contents/Effects/EvilsPawEffect.cpp, Source/Contents/Effects/EvilsPawEffect.h, Source/Contents/Effects/FlowerCastingEffect.cpp, Source/Contents/Effects/FlowerCastingEffect.h, Source/Contents/Effects/FortuneKissEffect.cpp, Source/Contents/Effects/FortuneKissEffect.h, Source/Contents/Effects/FriggSongEffect.cpp, Source/Contents/Effects/FriggSongEffect.h, Source/Contents/Effects/FuumaShouakuEffect.cpp, Source/Contents/Effects/FuumaShouakuEffect.h, Source/Contents/Effects/GlassWallEffect.cpp, Source/Contents/Effects/GlassWallEffect.h, Source/Contents/Effects/GravityControlEffect.h, Source/Contents/Effects/HealEffect.cpp, Source/Contents/Effects/HealEffect.h, Source/Contents/Effects/HealSpEffect.cpp, Source/Contents/Effects/HealSpEffect.h, Source/Contents/Effects/HitLineEffect.cpp, Source/Contents/Effects/HitLineEffect.h, Source/Contents/Effects/JupitelThunderStormEffect.cpp, Source/Contents/Effects/JupitelThunderStormEffect.h, Source/Contents/Effects/Level150Effect.cpp, Source/Contents/Effects/Level150Effect.h, Source/Contents/Effects/Level99Effect.cpp, Source/Contents/Effects/Level99Effect.h, Source/Contents/Effects/Level99Orb1Effect.cpp, Source/Contents/Effects/Level99Orb1Effect.h, Source/Contents/Effects/Level99Orb2Effect.cpp, Source/Contents/Effects/Level99Orb2Effect.h, Source/Contents/Effects/LightSphereEffect.cpp, Source/Contents/Effects/LightSphereEffect.h, Source/Contents/Effects/MagicFloorEffect.cpp, Source/Contents/Effects/MagicFloorEffect.h, Source/Contents/Effects/MagnumBreak.cpp, Source/Contents/Effects/MagnumBreak.h, Source/Contents/Effects/MandraAttackEffect.cpp, Source/Contents/Effects/MandraAttackEffect.h, Source/Contents/Effects/MapChainEffect.cpp, Source/Contents/Effects/MapChainEffect.h, Source/Contents/Effects/MapMagicZoneEffect.cpp, Source/Contents/Effects/MapMagicZoneEffect.h, Source/Contents/Effects/MappillarEffect.cpp, Source/Contents/Effects/MappillarEffect.h, Source/Contents/Effects/MeteorEffect.cpp, Source/Contents/Effects/MonsterSkillEffects.cpp, Source/Contents/Effects/MonsterSkillEffects.h, Source/Contents/Effects/MsgEffect.cpp, Source/Contents/Effects/MsgEffect.h, Source/Contents/Effects/NyanggrassEffect.cpp, Source/Contents/Effects/NyanggrassEffect.h, Source/Contents/Effects/Particle.cpp, Source/Contents/Effects/Particle.h, Source/Contents/Effects/ParticlePool.cpp, Source/Contents/Effects/ParticlePool.h, Source/Contents/Effects/PartyMemberEffects.cpp, Source/Contents/Effects/PartyMemberEffects.h, Source/Contents/Effects/PokJukEffect.cpp, Source/Contents/Effects/PokJukEffect.h, Source/Contents/Effects/PowderingEffect.cpp, Source/Contents/Effects/PowderingEffect.h, Source/Contents/Effects/RagEffect.cpp, Source/Contents/Effects/RagEffect.h, Source/Contents/Effects/RagEffectInitialization.cpp, Source/Contents/Effects/RagEffectState.h, Source/Contents/Effects/RainbowEffect.cpp, Source/Contents/Effects/RainbowEffect.h, Source/Contents/Effects/RectUpEffect.cpp, Source/Contents/Effects/RectUpEffect.h, Source/Contents/Effects/RedLineEffect.cpp, Source/Contents/Effects/RedLineEffect.h, Source/Contents/Effects/RichManKim.cpp, Source/Contents/Effects/RichManKim.h, Source/Contents/Effects/RotateBgEffect.cpp, Source/Contents/Effects/RotateBgEffect.h, Source/Contents/Effects/RotateItemEffect.cpp, Source/Contents/Effects/RotateItemEffect.h, Source/Contents/Effects/RotateLineEffect.cpp, Source/Contents/Effects/RotateLineEffect.h, Source/Contents/Effects/SaintCastingEffect.cpp, Source/Contents/Effects/SaintCastingEffect.h, Source/Contents/Effects/ScatterEffect.cpp, Source/Contents/Effects/ScatterEffect.h, Source/Contents/Effects/ShadowExceedEffect.cpp, Source/Contents/Effects/ShadowExceedEffect.h, Source/Contents/Effects/ShadowExceedNewEffect.cpp, Source/Contents/Effects/ShowEffect.cpp, Source/Contents/Effects/ShowEffect.h, Source/Contents/Effects/SkillEffects.h, Source/Contents/Effects/SmokeEffect.cpp, Source/Contents/Effects/SmokeEffect.h, Source/Contents/Effects/SoulCollectEffect.cpp, Source/Contents/Effects/SoulCollectEffect.h, Source/Contents/Effects/SoulUnityEffect.cpp, Source/Contents/Effects/SoulUnityEffect.h, Source/Contents/Effects/SphereWind2Effect.cpp, Source/Contents/Effects/SphereWind2Effect.h, Source/Contents/Effects/SphereWindEffect.cpp, Source/Contents/Effects/SphereWindEffect.h, Source/Contents/Effects/SpriteEffect.cpp, Source/Contents/Effects/SpriteEffect.h, Source/Contents/Effects/SpriteParticle.cpp, Source/Contents/Effects/SpriteParticle.h, Source/Contents/Effects/SquareRangeEffect.cpp, Source/Contents/Effects/SquareRangeEffect.h, Source/Contents/Effects/StarEffect.cpp, Source/Contents/Effects/StarEffect.h, Source/Contents/Effects/StarEmperorEffect.cpp, Source/Contents/Effects/StarEmperorEffect.h, Source/Contents/Effects/StealEffect.cpp, Source/Contents/Effects/StealEffect.h, Source/Contents/Effects/StormCannonEffect.cpp, Source/Contents/Effects/StormCannonEffect.h, Source/Contents/Effects/StormGustEffect.cpp, Source/Contents/Effects/StormGustEffect.h, Source/Contents/Effects/StormKickEffect.cpp, Source/Contents/Effects/StormKickEffect.h, Source/Contents/Effects/SunStanceEffect.cpp, Source/Contents/Effects/SunStanceEffect.h, Source/Contents/Effects/TalismanMarkEffect.cpp, Source/Contents/Effects/TalismanMarkEffect.h, Source/Contents/Effects/TetraBallEffect.cpp, Source/Contents/Effects/TetraBallEffect.h, Source/Contents/Effects/ThrowEffects.cpp, Source/Contents/Effects/ThrowEffects.h, Source/Contents/Effects/TriangleShotArrow.cpp, Source/Contents/Effects/TriangleShotArrow.h, Source/Contents/Effects/ViolentQuakeEffect.cpp, Source/Contents/Effects/ViolentQuakeEffect.h, Source/Contents/Effects/WhirlwindEffect.h, Source/Contents/Effects/WindEffect.cpp, Source/Contents/Effects/WindEffect.h, Source/Contents/EmblemCacheRaw.cpp, Source/Contents/EnchantMgr.cpp, Source/Contents/EnchantMgr.h, Source/Contents/EnemyMonsterTalk.cpp, Source/Contents/EntryQueueMgr.cpp, Source/Contents/EntryQueueMgr.h, Source/Contents/EquipmentResourceMgr.h, Source/Contents/EquipmentResources.cpp, Source/Contents/FlyingShipRouteInfo.cpp, Source/Contents/FlyingShipRouteInfo.h, Source/Contents/ForbiddenWords.cpp, Source/Contents/ForbiddenWords.h, Source/Contents/GuildEmblemLookup.cpp, Source/Contents/GuildEmblemState.cpp, Source/Contents/GuildInfo.cpp, Source/Contents/GuildInfo.h, Source/Contents/GuildMgr.cpp, Source/Contents/GuildMgr.h, Source/Contents/GuildTip.cpp, Source/Contents/GuildTip.h, Source/Contents/HeadResources.cpp, Source/Contents/HitSounds.cpp, Source/Contents/ItemDBToIDMgr.cpp, Source/Contents/ItemDBToIDMgr.h, Source/Contents/Items/RuneSystem.cpp, Source/Contents/Items/RuneSystem.h, Source/Contents/JobCodeForItem.cpp, Source/Contents/JobCodeForItem.h, Source/Contents/MapInfoMgr.cpp, Source/Contents/MapInfoMgr.h, Source/Contents/MapNameTable.cpp, Source/Contents/MapPropertyMgr.cpp, Source/Contents/MapPropertyMgr.h, Source/Contents/MapSkyMgr.cpp, Source/Contents/MapSkyMgr.h, Source/Contents/MessageTable.cpp, Source/Contents/MessageTable.h, Source/Contents/ModelKeyframes.cpp, Source/Contents/MonsterResources.cpp, Source/Contents/MonsterSpeech.cpp, Source/Contents/MonsterXmlActions.cpp, Source/Contents/MovementRoute.cpp, Source/Contents/MovementRouteInterpolation.cpp, Source/Contents/MovementRouteInterpolation.h, Source/Contents/MovementTraversal.cpp, Source/Contents/NavigationCandidates.cpp, Source/Contents/NavigationDestinations.cpp, Source/Contents/NavigationGraph.cpp, Source/Contents/NavigationLink.cpp, Source/Contents/NavigationManager.h, Source/Contents/NavigationRequest.cpp, Source/Contents/NavigationRoute.cpp, Source/Contents/NavigationSource.cpp, Source/Contents/NpcLocationRadius.cpp, Source/Contents/Pathfinding.cpp, Source/Contents/PetEvolutionMgr.cpp, Source/Contents/PetEvolutionMgr.h, Source/Contents/PetStatus.cpp, Source/Contents/PetStrings.cpp, Source/Contents/PetTalk.cpp, Source/Contents/PetTalkNames.cpp, Source/Contents/PlayerNameDictionary.cpp, Source/Contents/PlayerNameDictionary.h, Source/Contents/PrivateAirplaneMgr.cpp, Source/Contents/PrivateAirplaneMgr.h, Source/Contents/RDamageVar.cpp, Source/Contents/RDamageVar.h, Source/Contents/RenewQuestMgr.cpp, Source/Contents/RenewQuestMgr.h, Source/Contents/ReputeMgr.cpp, Source/Contents/ReputeMgr.h, Source/Contents/ReputeRecords.h, Source/Contents/RobeOpacity.cpp, Source/Contents/RobeResources.cpp, Source/Contents/RobeTopLayer.cpp, Source/Contents/RodexMailStore.cpp, Source/Contents/RodexMailStore.h, Source/Contents/RouletteMgr.cpp, Source/Contents/RouletteMgr.h, Source/Contents/ServerTimeManager.cpp, Source/Contents/ServerTimeManager.h, Source/Contents/ShowRankingScheduler.cpp, Source/Contents/ShowRankingScheduler.h, Source/Contents/SimpleStringMgr.cpp, Source/Contents/SimpleStringMgr.h, Source/Contents/SkinCatalog.cpp, Source/Contents/SkinInfo.cpp, Source/Contents/SkinMgr.cpp, Source/Contents/SkinMgr.h, Source/Contents/SpecialPopupMgr.cpp, Source/Contents/SpecialPopupMgr.h, Source/Contents/SpriteFrameSynchronization.cpp, Source/Contents/SpriteJob.cpp, Source/Contents/SpriteLayerDepth.cpp, Source/Contents/SpriteLayerDrawing.cpp, Source/Contents/SpriteLayerDrawing.h, Source/Contents/SpriteLayerOrder.cpp, Source/Contents/SpriteLayerOrder.h, Source/Contents/SpriteRidingOffset.cpp, Source/Contents/SpriteRidingOffset.h, Source/Contents/SpriteRidingPolicy.cpp, Source/Contents/SpriteRidingPolicy.h, Source/Contents/SpriteRobe.cpp, Source/Contents/SpriteRobeCommands.cpp, Source/Contents/SpriteShadow.cpp, Source/Contents/StatusIconImages.cpp, Source/Contents/TableMng.cpp, Source/Contents/TableMng.h, Source/Contents/TerrainPathSearch.cpp, Source/Contents/TerrainPathSearch.h, Source/Contents/TipBoxTitles.cpp, Source/Contents/TipBoxTitles.h, Source/Contents/TipOfTheDay.cpp, Source/Contents/TipOfTheDay.h, Source/Contents/TownInfoMgr.cpp, Source/Contents/TownInfoMgr.h, Source/Contents/WorldNavigation.cpp, Source/Contents/WorldView/WorldViewData.cpp, Source/Contents/WorldView/WorldViewData.h
2026-11-10 23:40:35 +00:00

903 lines
28 KiB
C++

#include "Client/Replay.h"
#include "Contents/Items/ItemType.h"
#include "Contents/Items/ItemInfo.h"
#include "Contents/Items/ItemNaming.h"
#include "Contents/Configuration/ServiceConfiguration.h"
#include "Utility/Text/FormatString.h"
#include "Contents/Tables/MessageTable.h"
#include "Contents/Actors/PlayerNameDictionary.h"
#include <cstdlib>
#include <cstring>
#include <vector>
#include "Resource/MSGSTRINGID.h"
// GLOBAL: gl_24725
std::map<int, ItemMoveInfo> g_itemMoveInfo;
// GLOBAL: gl_24726
std::map<int, std::vector<const char*>> g_metalProcessItems;
// GLOBAL: gl_24675
std::map<int, ItemCardName> g_itemCardNames;
// GLOBAL: gl_24727
std::map<int, std::vector<const char*>> g_bookItemNames;
// OFFSET: 0x006D8810
// FUNCTION: fn_06597
bool Equipment(const ITEM_INFO& item) {
switch (item.identity[0]) {
case TYPE_ARMOR:
case TYPE_WEAPON:
case TYPE_BOW:
case TYPE_BOTHHAND:
case TYPE_ARMORTM:
case TYPE_ARMORTB:
case TYPE_ARMORMB:
case TYPE_ARMORTMB:
case TYPE_GUN:
case 21:
return true;
default:
return false;
}
}
namespace {
// INLINED
void CardIds(const ITEM_INFO& item, int (&ids)[4]) {
std::memcpy(ids, item.cards, sizeof(ids));
}
// INLINED
int CardId(const ITEM_INFO& item, int index) {
int id;
std::memcpy(&id, &item.cards[index * sizeof(id)], sizeof(id));
return id;
}
// INLINED
int Copy(char* output, int capacity, const char* text) {
const int error = strncpy_s(output, capacity, text ? text : " ", _TRUNCATE);
return error == 0 || error == 80 ? (output ? static_cast<int>(strnlen(output, capacity)) : 0) : 0;
}
// INLINED
ItemCardName MakeEmptyItemCardName() {
return ItemCardName{nullptr, nullptr, nullptr};
}
// INLINED
ItemMoveInfo MakeEmptyItemMoveInfo() {
return ItemMoveInfo{};
}
// INLINED
__forceinline int CopyText(char* output, int& capacity, unsigned char consume, const char* text) {
const int error = strncpy_s(output, capacity, text, _TRUNCATE);
if (error != 0 && error != 80) {
return 0;
}
const int written = !output ? 0 : static_cast<int>(strnlen(output, capacity));
if (consume) {
capacity -= written;
}
return written;
}
}
// OFFSET: 0x006D77E0
// FUNCTION: fn_06595
bool ITEM_INFO::HasCards() const {
const bool first = g_itemCardNames.contains(CardId(*this, 0));
const unsigned id = static_cast<unsigned>(std::atoi(this->itemId.c_str()));
if (id - 9001u <= 498 || id - 10000u <= 999 || CardId(*this, 0) == 254 || CardId(*this, 0) == 255 || !Equipment(*this)) {
return first;
}
return first || IsItemCard(CardId(*this, 1)) || IsItemCard(CardId(*this, 2)) || IsItemCard(CardId(*this, 3));
}
// OFFSET: 0x006D5780
// FUNCTION: fn_06577
__declspec(noinline) int ITEM_INFO::Grade(char* output, int& capacity, unsigned char consume) const {
char grade[2] = {};
if (1 == this->grade) {
grade[0] = 'D';
} else if (2 == this->grade) {
grade[0] = 'C';
} else if (3 == this->grade) {
grade[0] = 'B';
} else if (4 == this->grade) {
grade[0] = 'A';
}
const int bytes = StringFormat(output, capacity, _TRUNCATE, "[%s] ", grade);
if (bytes > 0) {
if (consume) {
capacity -= bytes;
}
return bytes;
}
return 0;
}
// OFFSET: 0x006D6C10
// FUNCTION: fn_06585
int ITEM_INFO::Creator(char* output, int& capacity, unsigned char consume) const {
std::string name = LookupPlayerName(static_cast<unsigned>(CardId(*this, 2)) + (static_cast<unsigned>(CardId(*this, 3)) << 16));
if (name.empty()) {
name = LookupMessage(MSI_NAMELESS_USER);
}
return CopyText(output, capacity, consume, name.c_str());
}
// OFFSET: 0x006D6F50
// FUNCTION: fn_06588
__declspec(noinline) int ITEM_INFO::Prefixes(char* output, int& capacity, unsigned char consume) const {
int ids[4] = {CardId(*this, 0), CardId(*this, 1), CardId(*this, 2), CardId(*this, 3)};
int remaining = capacity;
char* cursor = output;
for (int index = 0; index < 4; ++index) {
if (ids[index] <= 0) {
continue;
}
const char* prefix = FindItemCardName(ids[index], g_itemCardNames).prefix;
if (!prefix || !*prefix) {
continue;
}
int count = 1;
for (int next = index + 1; next < 4; ++next) {
if (ids[next] == ids[index]) {
ids[next] = 0;
++count;
}
}
int bytes = 0;
switch (count) {
case 2:
bytes = StringFormat(cursor, remaining, _TRUNCATE, "%s ", LookupMessage(MSI_DOUBLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
case 3:
bytes = StringFormat(cursor, remaining, _TRUNCATE, "%s ", LookupMessage(MSI_TRIPLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
case 4:
bytes = StringFormat(cursor, remaining, _TRUNCATE, "%s ", LookupMessage(MSI_QUADROPLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
}
bytes = StringFormat(cursor, remaining, _TRUNCATE, "%s ", FindItemCardName(ids[index], g_itemCardNames).prefix);
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
}
const int bytes = static_cast<int>(cursor - output);
if (consume) {
capacity -= bytes;
}
return bytes;
}
// OFFSET: 0x006D6DB0
// FUNCTION: fn_06587
int ITEM_INFO::Suffixes(char* output, int& capacity, unsigned char consume) const {
int ids[4] = {CardId(*this, 0), CardId(*this, 1), CardId(*this, 2), CardId(*this, 3)};
int remaining = capacity;
char* cursor = output;
for (int index = 0; index < 4; ++index) {
if (ids[index] <= 0) {
continue;
}
const char* suffix = FindItemCardName(ids[index], g_itemCardNames).suffix;
if (!suffix || !*suffix) {
continue;
}
int count = 1;
for (int next = index + 1; next < 4; ++next) {
if (ids[next] == ids[index]) {
ids[next] = 0;
++count;
}
}
int bytes = StringFormat(cursor, remaining, _TRUNCATE, " %s", FindItemCardName(ids[index], g_itemCardNames).suffix);
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
switch (count) {
case 2:
bytes = StringFormat(cursor, remaining, _TRUNCATE, " %s", LookupMessage(MSI_DOUBLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
case 3:
bytes = StringFormat(cursor, remaining, _TRUNCATE, " %s", LookupMessage(MSI_TRIPLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
case 4:
bytes = StringFormat(cursor, remaining, _TRUNCATE, " %s", LookupMessage(MSI_QUADROPLE));
if (bytes > 0) {
cursor += bytes;
remaining -= bytes;
}
break;
}
}
const int bytes = static_cast<int>(cursor - output);
if (consume) {
capacity -= bytes;
}
return bytes;
}
// OFFSET: 0x006D76E0
// FUNCTION: fn_06593
int ITEM_INFO::Slots(char* output, int& capacity, unsigned char consume) const {
const int slots = FindItemDescription(std::atoi(this->itemId.c_str()), g_itemDescriptions).slots;
if (slots == 0) {
return 0;
}
const int bytes = StringFormat(output, capacity, _TRUNCATE, " [%d]", slots);
if (bytes <= 0) {
return 0;
}
if (consume) {
capacity -= bytes;
}
return bytes;
}
namespace {
// INLINED
__forceinline void AppendText(std::string& result, const char* text, int bytes) {
result += bytes > 0 ? text : "";
}
// INLINED
__forceinline void AppendName(const ITEM_INFO& item, std::string& result, char (&text)[128], int& capacity) {
AppendText(result, text, Copy(text, capacity, FindItemDescription(std::atoi(item.itemId.c_str())).identifiedName));
}
}
// OFFSET: 0x006D59A0
// FUNCTION: fn_06581
std::string ITEM_INFO::DisplayName(unsigned char detailed) const {
char text[128] = {};
std::string result;
int capacity = 128;
result.reserve(150);
if (this->identified == 1) {
const int id = std::atoi(this->itemId.c_str());
int cards[4];
CardIds(*this, cards);
if ((static_cast<unsigned>(id) - 9001u <= 498 || static_cast<unsigned>(id) - 10000u <= 999) && cards[3] == 1) {
AppendText(result, text, this->Apprentice(text, capacity, 0));
AppendName(*this, result, text, capacity);
} else if (cards[0] == 254 && cards[1] == 0) {
if (this->refiningLevel > 0) {
AppendText(result, text, this->Refine(text, capacity, 0));
}
if (this->grade > 0) {
AppendText(result, text, this->Grade(text, capacity, 0));
}
if (g_serviceType == 12 || g_serviceType == 14) {
AppendName(*this, result, text, capacity);
AppendText(result, text, this->Element(text, capacity, 0));
AppendText(result, text, this->Creator(text, capacity, 0));
} else {
AppendText(result, text, this->Creator(text, capacity, 0));
AppendText(result, text, this->Element(text, capacity, 0));
AppendName(*this, result, text, capacity);
}
} else {
if (!Equipment(*this) && detailed == 0) {
AppendName(*this, result, text, capacity);
} else {
if (this->refiningLevel > 0) {
AppendText(result, text, this->Refine(text, capacity, 0));
}
if (this->grade > 0) {
AppendText(result, text, this->Grade(text, capacity, 0));
}
if (this->HasCards() == true) {
AppendText(result, text, this->Prefixes(text, capacity, 0));
AppendName(*this, result, text, capacity);
AppendText(result, text, this->Suffixes(text, capacity, 0));
AppendText(result, text, this->Slots(text, capacity, 0));
} else if (cards[0] != 254 && cards[0] != 255) {
AppendName(*this, result, text, capacity);
AppendText(result, text, this->Slots(text, capacity, 0));
} else if (g_serviceType == 12) {
AppendName(*this, result, text, capacity);
AppendText(result, text, this->Element(text, capacity, 0));
AppendText(result, text, this->Star(text, capacity, 0));
AppendText(result, text, this->Creator(text, capacity, 0));
} else if (g_serviceType == 14) {
AppendText(result, text, this->Star(text, capacity, 0));
AppendName(*this, result, text, capacity);
AppendText(result, text, this->Element(text, capacity, 0));
AppendText(result, text, this->Creator(text, capacity, 0));
} else {
AppendText(result, text, this->Star(text, capacity, 0));
AppendText(result, text, this->Creator(text, capacity, 0));
AppendText(result, text, this->Element(text, capacity, 0));
AppendName(*this, result, text, capacity);
}
}
}
} else {
AppendText(result, text, ItemUnidentifiedName(*this, text, capacity, 0));
}
return result;
}
#include "Client/Input/InputCharset.h"
#include "Client/Session.h"
#include "Client/Application/ErrorDialog.h"
#include "Contents/Configuration/ServiceConfiguration.h"
#include "File/CommonObject.h"
#include "File/File.h"
#include "File/ResourcePath.h"
#include "Resource/Bitmap/BitmapResource.h"
#include "Contents/Items/ItemInfoMgr.h"
// GLOBAL: gl_24730
CCommonObject g_tableStorage;
// OFFSET: 0x005E11E0
// FUNCTION: fn_03873
std::string ItemDisplayName(int id) {
ITEM_INFO item;
item.SetItemId(id);
item.identified = 1;
return item.DisplayName(0);
}
// OFFSET: 0x006D69C0
// FUNCTION: fn_06582
const std::vector<const char*>& FindMetalProcessItems(int id) {
// GLOBAL: gl_24728
static std::vector<const char*> missing;
const auto entry = g_metalProcessItems.find(id);
return entry == g_metalProcessItems.end() ? missing : entry->second;
}
// OFFSET: 0x006D70E0
// FUNCTION: fn_06590
std::vector<unsigned char> ITEM_INFO::Serialize() const {
std::vector<unsigned char> result;
const auto append = [&result](std::uint16_t id, const void* data, std::uint32_t bytes) {
const auto record = BuildReplayTaggedRecord(id, data, bytes);
result.insert(result.end(), record.begin(), record.end());
};
append(281, nullptr, 0);
append(283, &this->identity[0], 4);
append(285, &this->identity[1], 4);
append(284, &this->identity[2], 4);
append(286, &this->identity[3], 4);
append(287, &this->quantity, 4);
append(288, &this->prices[0], 4);
append(289, &this->prices[1], 4);
append(290, this->cards, 16);
const int id = std::atoi(this->itemId.c_str());
append(291, &id, 4);
append(292, this->displayName.c_str(), static_cast<std::uint32_t>(this->displayName.size()));
append(293, &this->identified, 1);
append(294, &this->damaged, 1);
append(295, &this->refiningLevel, 4);
append(296, &this->bindOnEquip, 2);
append(297, &this->expireTime, 4);
append(298, &this->sprite, 4);
append(299, &this->grade, 2);
append(300, &this->optionCount, 4);
append(301, this->options, 25);
append(282, nullptr, 0);
return result;
}
#pragma inline_depth(0)
// OFFSET: 0x006D8850
// FUNCTION: fn_06598
bool IsBookItem(int id) {
return g_bookItemNames.find(id) != g_bookItemNames.end();
}
#pragma inline_depth()
// OFFSET: 0x006D8890
// FUNCTION: fn_06599
bool IsItemCard(int id) {
return g_itemCardNames.find(id) != g_itemCardNames.end();
}
// OFFSET: 0x006D7660
// FUNCTION: fn_06591
const char* ItemResourcePath(const ITEM_INFO& item) {
if (item.identified == 1) {
return FindItemDescription(std::atoi(item.itemId.c_str())).identifiedResource;
}
return FindItemDescription(std::atoi(item.itemId.c_str())).unidentifiedResource;
}
// OFFSET: 0x006D76B0
// FUNCTION: fn_06592
int ItemSlotsCount(const ITEM_INFO& item) {
int id = std::atoi(item.itemId.c_str());
return FindItemDescription(id).slots;
}
// OFFSET: 0x006D7760
// FUNCTION: fn_06594
int ItemUnidentifiedName(const ITEM_INFO& item, char* output, int& capacity, unsigned char consume) {
const char* name = FindItemDescription(std::atoi(item.itemId.c_str())).unidentifiedName;
return CopyText(output, capacity, consume, name ? name : " ");
}
// OFFSET: 0x006D3770
// FUNCTION: fn_06544
__declspec(noinline) ItemCardName& FindItemCardName(int id, std::map<int, ItemCardName>& values) {
// GLOBAL: gl_24676
static ItemCardName missing = MakeEmptyItemCardName();
const auto entry = values.find(id);
return entry == values.end() ? missing : entry->second;
}
// OFFSET: 0x006D3850
// FUNCTION: fn_45456
ItemMoveInfo& FindItemMoveInfo(int id, std::map<int, ItemMoveInfo>& values) {
// GLOBAL: gl_24789
static ItemMoveInfo missingMoveInfo = MakeEmptyItemMoveInfo();
const auto entry = values.find(id);
return entry == values.end() ? missingMoveInfo : entry->second;
}
// OFFSET: 0x006D5630
// FUNCTION: fn_06574
ItemCardName& FindItemCardName(int id) {
return FindItemCardName(id, g_itemCardNames);
}
// OFFSET: 0x006D58B0
// FUNCTION: fn_06580
ItemMoveInfo& FindItemMoveInfo(int id) {
return FindItemMoveInfo(id, g_itemMoveInfo);
}
// OFFSET: 0x006D5150
// FUNCTION: fn_06567
void __fastcall DestroyReplayTaggedRecordHeader(std::uint16_t* value) {
*value = 0;
*reinterpret_cast<std::uint32_t*>(value + 1) = 0;
}
__declspec(noinline) bool LoadItemMoveInfoTable(std::vector<int>& values, const char* name) {
values.clear();
CFile file;
if (g_serverLanguage != nullptr) {
name = g_serverLanguage->ServiceName(name);
}
if (!file.Open(name, 0, true, false)) {
MessageBoxA(nullptr, "Can't open file", "ErrorMessage", 0);
return false;
}
const int size = static_cast<int>(file.GetSize());
if (values.capacity() < static_cast<size_t>(size)) {
values.reserve(static_cast<size_t>(size));
}
char* buffer = new char[static_cast<size_t>(size) + 1];
file.Read(buffer, static_cast<std::uint32_t>(size));
buffer[size] = '\0';
file.Close();
char* token = buffer;
for (int index = 0; index < size; ++index) {
char value = buffer[index];
if (value == '/' && buffer[index + 1] == '/') {
do {
if (value == '\r' || index >= size) {
break;
}
value = buffer[index + 1];
++index;
} while (value != '\n');
token = buffer + index + 1;
}
switch (value) {
case '\t':
case ' ':
buffer[index] = '\0';
values.push_back(std::atoi(token));
token = buffer + index + 1;
break;
case '\n':
case '\r':
token = buffer + index + 1;
break;
}
}
delete[] buffer;
return true;
}
// OFFSET: 0x006D78C0
// FUNCTION: fn_06596
__declspec(noinline) void LoadItemNameTables() {
g_itemDescriptions.clear();
g_itemCardNames.clear();
g_metalProcessItems.clear();
g_tableStorage.Clear();
g_bookItemNames.clear();
std::vector<char*> tokens;
if (tokens.capacity() < 20000) {
tokens.reserve(20000);
}
unsigned char loaded = 0;
const char* itemFiles[2] = {"item.txt", "eventItem.txt"};
for (int index = 0; index < 2; ++index) {
if (!ResourceExists(itemFiles[index], 0)) {
continue;
}
g_tableStorage.LoadTokens(tokens, itemFiles[index], 2);
char** cursor = tokens.empty() ? nullptr : &tokens[0];
char** end = cursor + tokens.size();
while (cursor < end) {
ITEM_DESC& desc = EnsureItemDescription(std::atoi(*cursor), g_itemDescriptions);
cursor += 2;
if (cursor >= end) {
ShowErrorDialog("item.txt \xbd\xba\xc5\xa9\xb8\xb3\xc6\xae\xb8\xa6 \xc8\xae\xc0\xce\xc7\xd8\xc1\xd6\xbc\xbc\xbf\xe4.", 0);
}
char* name = *cursor;
if (name != nullptr) {
g_session.ConvertTooltipText(name, name);
name = *cursor;
}
desc.identifiedName = name;
cursor += 2;
if (cursor >= end) {
ShowErrorDialog("item.txt \xbd\xba\xc5\xa9\xb8\xb3\xc6\xae\xb8\xa6 \xc8\xae\xc0\xce\xc7\xd8\xc1\xd6\xbc\xbc\xbf\xe4.", 0);
}
while (*cursor != nullptr) {
desc.identifiedDescription.push_back(*cursor);
++cursor;
}
++cursor;
if (cursor >= end) {
ShowErrorDialog("item.txt \xbd\xba\xc5\xa9\xb8\xb3\xc6\xae\xb8\xa6 \xc8\xae\xc0\xce\xc7\xd8\xc1\xd6\xbc\xbc\xbf\xe4.", 0);
}
char* unidentified = *cursor;
if (unidentified == nullptr || std::strstr(unidentified, "idenitfied equal unidentified") != nullptr) {
desc.unidentifiedName = desc.identifiedName;
desc.unidentifiedDescription = desc.identifiedDescription;
cursor += 2;
} else {
g_session.ConvertTooltipText(unidentified, unidentified);
unidentified = *cursor;
cursor += 2;
desc.unidentifiedName = unidentified;
if (cursor >= end) {
ShowErrorDialog("item.txt \xbd\xba\xc5\xa9\xb8\xb3\xc6\xae\xb8\xa6 \xc8\xae\xc0\xce\xc7\xd8\xc1\xd6\xbc\xbc\xbf\xe4.", 0);
}
if (*cursor == nullptr) {
++cursor;
} else {
do {
desc.unidentifiedDescription.push_back(*cursor);
++cursor;
} while (*cursor != nullptr);
++cursor;
}
}
}
loaded = 1;
}
if (loaded == 0) {
if (ResourceExists("EventNum2ItemDisplayNameTable.txt", 0)) {
g_tableStorage.LoadTokens(tokens, "EventNum2ItemDisplayNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
g_session.ConvertTooltipText(token[1], token[1]);
EnsureItemDescription(std::atoi(*token), g_itemDescriptions).unidentifiedName = token[1];
}
}
if (ResourceExists("EventNum2itemDescTable.txt", 0)) {
int id = 0;
g_tableStorage.LoadTokens(tokens, "EventNum2itemDescTable.txt", 1);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
char* text = *token;
if (text == nullptr || *text == '\0') {
continue;
}
if (!IsNumericText(text)) {
DecodeMessageRot(text);
EnsureItemDescription(id, g_itemDescriptions).unidentifiedDescription.push_back(text);
} else {
id = std::atoi(text);
}
}
}
if (ResourceExists("EventIdNum2ItemDisplayNameTable.txt", 0)) {
g_tableStorage.LoadTokens(tokens, "EventIdNum2ItemDisplayNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
g_session.ConvertTooltipText(token[1], token[1]);
EnsureItemDescription(std::atoi(*token), g_itemDescriptions).identifiedName = token[1];
}
}
if (ResourceExists("EventIdNum2itemDescTable.txt", 0)) {
int id = 0;
g_tableStorage.LoadTokens(tokens, "EventIdNum2itemDescTable.txt", 1);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
char* text = *token;
if (text == nullptr || *text == '\0') {
continue;
}
if (!IsNumericText(text)) {
DecodeMessageRot(text);
EnsureItemDescription(id, g_itemDescriptions).identifiedDescription.push_back(text);
} else {
id = std::atoi(text);
}
}
}
g_itemInfoMgr->SetItemInfo(g_itemDescriptions);
}
if (ResourceExists("EventNum2ItemResNameTable.txt", 0)) {
g_tableStorage.LoadTokens(tokens, "EventNum2ItemResNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
EnsureItemDescription(std::atoi(*token), g_itemDescriptions).unidentifiedResource = token[1];
}
}
if (ResourceExists("EventIdNum2ItemResNameTable.txt", 0)) {
g_tableStorage.LoadTokens(tokens, "EventIdNum2ItemResNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
EnsureItemDescription(std::atoi(*token), g_itemDescriptions).identifiedResource = token[1];
}
}
g_tableStorage.LoadTokens(tokens, "itemSlotTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
EnsureItemDescription(std::atoi(*token), g_itemDescriptions).descriptionFlags = std::atoi(token[1]);
}
g_tableStorage.LoadTokens(tokens, "itemParamTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 3) {
ITEM_DESC& desc = EnsureItemDescription(std::atoi(*token), g_itemDescriptions);
desc.descriptionValues.push_back(std::atoi(token[1]));
desc.descriptionValues.push_back(std::atoi(token[2]));
}
g_tableStorage.LoadTokens(tokens, "CardItemNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
EnsureItemCardName(std::atoi(*token), g_itemCardNames);
}
g_tableStorage.LoadTokens(tokens, "Num2CardIllustNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
EnsureItemCardName(std::atoi(*token), g_itemCardNames).name = token[1];
}
g_tableStorage.LoadTokens(tokens, "CardPrefixNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); token += 2) {
EnsureItemCardName(std::atoi(*token), g_itemCardNames).prefix = token[1];
}
g_tableStorage.LoadTokens(tokens, "CardPostfixNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
ItemCardName& card = EnsureItemCardName(std::atoi(*token), g_itemCardNames);
card.suffix = card.prefix;
card.prefix = "";
}
g_tableStorage.LoadTokens(tokens, "BookItemNameTable.txt", 0);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
EnsureItemDescriptionLines(std::atoi(*token), g_bookItemNames).push_back(*token);
}
int metalId = 0;
g_tableStorage.LoadTokens(tokens, "MetalProcessItemList.txt", 1);
for (std::vector<char*>::iterator token = tokens.begin(); token != tokens.end(); ++token) {
char* text = *token;
if (text == nullptr || *text == '\0') {
continue;
}
if (IsNumericText(text)) {
metalId = std::atoi(text);
} else if (std::strlen(text) != 0) {
EnsureItemDescriptionLines(metalId, g_metalProcessItems).push_back(text);
}
}
ITEM_DESC& unknownItemDesc = FindItemDescription(0, g_itemDescriptions);
unknownItemDesc.identifiedName = "Unknown Item";
unknownItemDesc.identifiedResource = "\xbb\xe7\xb0\xfa";
unknownItemDesc.identifiedDescription.push_back("Unknown Item");
unknownItemDesc.unidentifiedName = "Unknown Item";
unknownItemDesc.unidentifiedResource = "\xbb\xe7\xb0\xfa";
unknownItemDesc.unidentifiedDescription.push_back("Unknown Item");
FindItemDescription(-1, g_itemDescriptions) = unknownItemDesc;
ItemCardName& sorry = FindItemCardName(0, g_itemCardNames);
sorry.name = "sorry";
sorry.prefix = "";
sorry.suffix = "";
FindItemCardName(-1, g_itemCardNames) = sorry;
std::vector<int> moveInfo;
if (LoadItemMoveInfoTable(moveInfo, "ItemMoveInfoV5.txt") && !moveInfo.empty()) {
for (std::vector<int>::iterator value = moveInfo.begin(); value != moveInfo.end(); value += 9) {
ItemMoveInfo flags;
flags.itemId = value[0];
flags.drop = value[1] != 0;
flags.trade = value[2] != 0;
flags.storage = value[3] != 0;
flags.cart = value[4] != 0;
flags.sellToNpc = value[5] != 0;
flags.mail = value[6] != 0;
flags.auction = value[7] != 0;
flags.guildStorage = value[8] != 0;
g_itemMoveInfo.insert(std::make_pair(flags.itemId, flags));
}
}
}
// OFFSET: 0x006D5650
// FUNCTION: fn_06575
std::uint32_t __fastcall ItemCardColor(const ITEM_INFO* item) {
const std::uint32_t colors[5] = {0, 0x00ADFF2F, 0x0000BFFF, 0x00FFA500, 0x009400D3};
if (item->HasCards() == true) {
int count = 0;
const int id = std::atoi(item->itemId.c_str());
const int slots = FindItemDescription(id, g_itemDescriptions).slots;
for (int index = 0; index < 4; ++index) {
if (index >= slots && IsItemCard(CardId(*item, index))) {
++count;
}
}
return colors[count];
}
return 0;
}
// OFFSET: 0x006D6AA0
// FUNCTION: fn_06583
__declspec(noinline) int ITEM_INFO::Element(char* output, int& capacity, unsigned char consume) const {
switch (this->cards[4]) {
case 0: {
const int id = std::atoi(this->itemId.c_str());
if (id == 2634 || id == 2635) {
return CopyText(output, capacity, consume, LookupMessage(2976));
}
return CopyText(output, capacity, consume, LookupMessage(450));
}
case 1:
return CopyText(output, capacity, consume, LookupMessage(MSI_MANUFACTURED_ICE_ITEM));
case 2:
return CopyText(output, capacity, consume, LookupMessage(MSI_MANUFACTURED_EARTH_ITEM));
case 3:
return CopyText(output, capacity, consume, LookupMessage(MSI_MANUFACTURED_FIRE_ITEM));
case 4:
return CopyText(output, capacity, consume, LookupMessage(MSI_MANUFACTURED_WIND_ITEM));
default:
return 0;
}
}
// OFFSET: 0x006D6B90
// FUNCTION: fn_06584
__declspec(noinline) int ITEM_INFO::Star(char* output, int& capacity, unsigned char consume) const {
switch (this->cards[5]) {
case 5:
return CopyText(output, capacity, consume, LookupMessage(MSI_ONE_STARPIECE));
case 10:
return CopyText(output, capacity, consume, LookupMessage(MSI_TWO_STARPIECE));
case 15:
return CopyText(output, capacity, consume, LookupMessage(MSI_THREE_STARPIECE));
default:
return 0;
}
}
// OFFSET: 0x006D6D50
// FUNCTION: fn_06586
int ITEM_INFO::Apprentice(char* output, int& capacity, unsigned char consume) const {
const char* text = LookupMessage(MSI_NAMED_PET);
const int error = strncpy_s(output, capacity, text, _TRUNCATE);
if (error != 0 && error != 80) {
return 0;
}
const int written = !output ? 0 : static_cast<int>(strnlen(output, capacity));
if (consume) {
capacity -= written;
}
return written;
}
// OFFSET: 0x006D70A0
// FUNCTION: fn_06589
int ITEM_INFO::Refine(char* output, int& capacity, unsigned char consume) const {
const int bytes = StringFormat(output, capacity, static_cast<std::size_t>(-1), "+%d ", this->refiningLevel);
if (bytes > 0) {
if (consume) {
capacity -= bytes;
}
return bytes;
}
return 0;
}