├── .gitattributes ├── .gitignore ├── DS3RuntimeScripting.sln ├── DS3RuntimeScripting.vcxproj ├── DS3RuntimeScripting.vcxproj.filters ├── LICENSE ├── README.md ├── dependencies └── SocketComs.h ├── dist ├── pugiconfig.hpp ├── pugixml.cpp ├── pugixml.hpp └── res │ └── DS3 │ ├── Layouts │ ├── ACTIONBUTTON_PARAM_ST.xml │ ├── AI_SOUND_PARAM_ST.xml │ ├── ATK_PARAM_ST.xml │ ├── ATTACK_ELEMENT_CORRECT_PARAM_ST.xml │ ├── BEHAVIOR_PARAM_ST.xml │ ├── BONFIRE_WARP_PARAM_ST.xml │ ├── BUDGET_PARAM_ST.xml │ ├── BULLET_CREATE_LIMIT_PARAM_ST.xml │ ├── BULLET_PARAM_ST.xml │ ├── CACL_CORRECT_GRAPH_ST.xml │ ├── CEREMONY_PARAM_ST.xml │ ├── CHARACTER_INIT_PARAM.xml │ ├── CHARACTER_LOAD_PARAM_ST.xml │ ├── CHARMAKEMENUTOP_PARAM_ST.xml │ ├── CHARMAKEMENU_LISTITEM_PARAM_ST.xml │ ├── CLEAR_COUNT_CORRECT_PARAM_ST.xml │ ├── COOL_TIME_PARAM_ST.xml │ ├── CULT_SETTING_PARAM_ST.xml │ ├── DECAL_PARAM_ST.xml │ ├── DIRECTION_CAMERA_PARAM_ST.xml │ ├── EQUIP_MTRL_SET_PARAM_ST.xml │ ├── EQUIP_PARAM_ACCESSORY_ST.xml │ ├── EQUIP_PARAM_GOODS_ST.xml │ ├── EQUIP_PARAM_PROTECTOR_ST.xml │ ├── EQUIP_PARAM_WEAPON_ST.xml │ ├── ESTUS_FLASK_RECOVERY_PARAM_ST.xml │ ├── FACE_GEN_PARAM_ST.xml │ ├── FACE_PARAM_ST.xml │ ├── FACE_RANGE_PARAM_ST.xml │ ├── FOOT_SFX_PARAM_ST.xml │ ├── GAME_AREA_PARAM_ST.xml │ ├── GAME_PROGRESS_PARAM_ST.xml │ ├── GEMEFFECT_PARAM_ST.xml │ ├── GEM_CATEGORY_PARAM_ST.xml │ ├── GEM_DROP_DOPING_PARAM_ST.xml │ ├── GEM_DROP_MODIFY_PARAM_ST.xml │ ├── GEM_GEN_PARAM_ST.xml │ ├── HIT_EFFECT_SE_PARAM_ST.xml │ ├── HIT_EFFECT_SFX_CONCEPT_PARAM_ST.xml │ ├── HIT_EFFECT_SFX_PARAM_ST.xml │ ├── HIT_MTRL_PARAM_ST.xml │ ├── ITEMLOT_PARAM_ST.xml │ ├── KNOCKBACK_PARAM_ST.xml │ ├── KNOWLEDGE_LOADSCREEN_ITEM_PARAM_ST.xml │ ├── LOAD_BALANCER_DRAW_DIST_SCALE_PARAM_ST.xml │ ├── LOAD_BALANCER_PARAM_ST.xml │ ├── LOCK_CAM_PARAM_ST.xml │ ├── LOD_BANK.xml │ ├── MAGIC_PARAM_ST.xml │ ├── MAP_MIMICRY_ESTABLISHMENT_PARAM_ST.xml │ ├── MENUPROPERTY_LAYOUT.xml │ ├── MENUPROPERTY_SPEC.xml │ ├── MENU_OFFSCR_REND_PARAM_ST.xml │ ├── MENU_PARAM_COLOR_TABLE_ST.xml │ ├── MENU_VALUE_TABLE_SPEC.xml │ ├── MODEL_SFX_PARAM_ST.xml │ ├── MOVE_PARAM_ST.xml │ ├── MULTI_ESTUS_FLASK_BONUS_PARAM_ST.xml │ ├── MULTI_PLAY_CORRECTION_PARAM_ST.xml │ ├── MULTI_SOUL_BONUS_RATE_PARAM_ST.xml │ ├── NETWORK_AREA_PARAM_ST.xml │ ├── NETWORK_MSG_PARAM_ST.xml │ ├── NETWORK_PARAM_ST.xml │ ├── NPC_AI_ACTION_PARAM_ST.xml │ ├── NPC_PARAM_ST.xml │ ├── NPC_THINK_PARAM_ST.xml │ ├── OBJECT_MATERIAL_SFX_PARAM_ST.xml │ ├── OBJECT_PARAM_ST.xml │ ├── OBJ_ACT_PARAM_ST.xml │ ├── PHANTOM_PARAM_ST.xml │ ├── PLAY_REGION_PARAM_ST.xml │ ├── PROTECTOR_GEN_PARAM_ST.xml │ ├── RAGDOLL_PARAM_ST.xml │ ├── REINFORCE_PARAM_PROTECTOR_ST.xml │ ├── REINFORCE_PARAM_WEAPON_ST.xml │ ├── ROLE_PARAM_ST.xml │ ├── SE_MATERIAL_CONVERT_PARAM_ST.xml │ ├── SHOP_LINEUP_PARAM.xml │ ├── SKELETON_PARAM_ST.xml │ ├── SP_EFFECT_PARAM_ST.xml │ ├── SP_EFFECT_VFX_PARAM_ST.xml │ ├── SWORD_ARTS_PARAM_ST.xml │ ├── TALK_PARAM_ST.xml │ ├── THROW_DIRECTION_SFX_PARAM_ST.xml │ ├── THROW_INFO_BANK.xml │ ├── TOUGHNESS_PARAM_ST.xml │ ├── UPPER_ARM_PARAM_ST.xml │ ├── WEAPON_GEN_PARAM_ST.xml │ ├── WEP_ABSORP_POS_PARAM_ST.xml │ ├── WET_ASPECT_PARAM_ST.xml │ ├── WHITE_SIGN_COOL_TIME_PARAM_ST.xml │ └── WIND_PARAM_ST.xml │ ├── Names │ ├── ActionButtonParam.txt │ ├── AiSoundParam.txt │ ├── AtkParam_Npc.txt │ ├── AtkParam_Pc.txt │ ├── AttackElementCorrectParam.txt │ ├── BehaviorParam.txt │ ├── BehaviorParam_PC.txt │ ├── BonfireWarpParam.txt │ ├── BudgetParam.txt │ ├── Bullet.txt │ ├── BulletCreateLimitParam.txt │ ├── CalcCorrectGraph.txt │ ├── Ceremony.txt │ ├── CharMakeMenuListItemParam.txt │ ├── CharMakeMenuTopParam.txt │ ├── CharaInitParam.txt │ ├── CharacterLoadParam.txt │ ├── ClearCountCorrectParam.txt │ ├── CoolTimeParam.txt │ ├── CultSettingParam.txt │ ├── DecalParam.txt │ ├── DirectionCameraParam.txt │ ├── EquipMtrlSetParam.txt │ ├── EquipParamAccessory.txt │ ├── EquipParamGoods.txt │ ├── EquipParamProtector.txt │ ├── EquipParamWeapon.txt │ ├── FaceGenParam.txt │ ├── FaceParam.txt │ ├── FaceRangeParam.txt │ ├── FootSfxParam.txt │ ├── GameAreaParam.txt │ ├── GameProgressParam.txt │ ├── GemCategoryParam.txt │ ├── GemDropDopingParam.txt │ ├── GemDropModifyParam.txt │ ├── GemGenParam.txt │ ├── GemeffectParam.txt │ ├── HPEstusFlaskRecoveryParam.txt │ ├── HitEffectSeParam.txt │ ├── HitEffectSfxConceptParam.txt │ ├── HitEffectSfxParam.txt │ ├── HitMtrlParam.txt │ ├── ItemLotParam.txt │ ├── KnockBackParam.txt │ ├── KnowledgeLoadScreenItemParam.txt │ ├── LoadBalancerDrawDistScaleParam.txt │ ├── LoadBalancerParam.txt │ ├── LockCamParam.txt │ ├── LodParam.txt │ ├── LodParam_ps4.txt │ ├── LodParam_xb1.txt │ ├── MPEstusFlaskRecoveryParam.txt │ ├── Magic.txt │ ├── MapMimicryEstablishmentParam.txt │ ├── MenuOffscrRendParam.txt │ ├── MenuPropertyLayoutParam.txt │ ├── MenuPropertySpecParam.txt │ ├── MenuValueTableParam.txt │ ├── ModelSfxParam.txt │ ├── MoveParam.txt │ ├── MultiHPEstusFlaskBonusParam.txt │ ├── MultiMPEstusFlaskBonusParam.txt │ ├── MultiPlayCorrectionParam.txt │ ├── MultiSoulBonusRateParam.txt │ ├── NetworkAreaParam.txt │ ├── NetworkMsgParam.txt │ ├── NetworkParam.txt │ ├── NewMenuColorTableParam.txt │ ├── NpcAiActionParam.txt │ ├── NpcParam.txt │ ├── NpcThinkParam.txt │ ├── ObjActParam.txt │ ├── ObjectMaterialSfxParam.txt │ ├── ObjectParam.txt │ ├── PhantomParam.txt │ ├── PlayRegionParam.txt │ ├── ProtectorGenParam.txt │ ├── RagdollParam.txt │ ├── ReinforceParamProtector.txt │ ├── ReinforceParamWeapon.txt │ ├── RoleParam.txt │ ├── SeMaterialConvertParam.txt │ ├── ShopLineupParam.txt │ ├── SkeletonParam.txt │ ├── SpEffectParam.txt │ ├── SpEffectVfxParam.txt │ ├── SwordArtsParam.txt │ ├── TalkParam.txt │ ├── ThrowDirectionSfxParam.txt │ ├── ThrowParam.txt │ ├── ToughnessParam.txt │ ├── UpperArmParam.txt │ ├── WeaponGenParam.txt │ ├── WepAbsorpPosParam.txt │ ├── WetAspectParam.txt │ ├── WhiteSignCoolTimeParam.txt │ └── Wind.txt │ └── ParamInfo.xml ├── ds3runtime ├── async_module.cpp ├── async_module.h ├── boss │ ├── ariandar_boss.cpp │ ├── ariandar_boss.h │ ├── blight_combo_system.cpp │ ├── blight_combo_system.h │ ├── boss.cpp │ ├── boss.h │ ├── build_copy.cpp │ ├── build_copy.h │ ├── standard_combo_system.cpp │ ├── standard_combo_system.h │ ├── standard_player_boss.cpp │ └── standard_player_boss.h ├── bullet_spawn.cpp ├── bullet_spawn.h ├── chr_ins.cpp ├── chr_ins.h ├── databaseaddress.cpp ├── databaseaddress.h ├── ds3_debug_variables.cpp ├── ds3_debug_variables.h ├── ds3runtime.cpp ├── ds3runtime.h ├── equip_game_data.cpp ├── equip_game_data.h ├── equip_inventory_data.cpp ├── equip_inventory_data.h ├── game_data_man.cpp ├── game_data_man.h ├── game_option_man.cpp ├── game_option_man.h ├── game_packet.cpp ├── game_packet.h ├── hook.cpp ├── hook.h ├── hooks │ ├── better_swordspear_hook.cpp │ ├── better_swordspear_hook.h │ ├── ds1_backstabs.cpp │ ├── ds1_backstabs.h │ ├── ds1_no_hyperarmor.cpp │ ├── ds1_no_hyperarmor.h │ ├── game_frame_hook.cpp │ ├── game_frame_hook.h │ ├── has_speffect_visual.cpp │ ├── has_speffect_visual.h │ ├── jmp_table_status.cpp │ ├── jmp_table_status.h │ ├── lua_capture.cpp │ ├── lua_capture.h │ ├── play_animation_hook.cpp │ ├── play_animation_hook.h │ ├── session_receive_hook.cpp │ ├── session_receive_hook.h │ ├── session_send_hook.cpp │ ├── session_send_hook.h │ ├── sprj_chr_damage_module_hook.cpp │ ├── sprj_chr_damage_module_hook.h │ ├── throw_hook.cpp │ ├── throw_hook.h │ ├── time_since_last_frame.cpp │ └── time_since_last_frame.h ├── i_chr_finder.cpp ├── i_chr_finder.h ├── memory_util.h ├── misc_functions.cpp ├── misc_functions.h ├── modules │ ├── elden_ring │ │ ├── backstab_angle_check.cpp │ │ ├── backstab_angle_check.h │ │ ├── elden_ring_jump.cpp │ │ ├── elden_ring_jump.h │ │ ├── position_calculate_hook.cpp │ │ └── position_calculate_hook.h │ ├── network_roll_patch │ │ ├── attacker_effect_hook.cpp │ │ ├── attacker_effect_hook.h │ │ ├── ban_check.cpp │ │ ├── ban_check.h │ │ ├── bullet_chr_hit_vfx_hook.cpp │ │ ├── bullet_chr_hit_vfx_hook.h │ │ ├── bullet_hit_hierarchy_hook.cpp │ │ ├── bullet_hit_hierarchy_hook.h │ │ ├── ds3_iframe_patch.cpp │ │ ├── ds3_iframe_patch.h │ │ ├── durablity_cost_hook.cpp │ │ ├── durablity_cost_hook.h │ │ ├── hit_delete.cpp │ │ ├── hit_delete.h │ │ ├── hit_reg_hook.cpp │ │ ├── hit_reg_hook.h │ │ ├── hit_reg_hook_shockwave.cpp │ │ ├── hit_reg_hook_shockwave.h │ │ ├── hit_sibling_hook.cpp │ │ ├── hit_sibling_hook.h │ │ ├── hit_uuid_hook.cpp │ │ ├── hit_uuid_hook.h │ │ ├── hit_uuid_identify.cpp │ │ ├── hit_uuid_identify.h │ │ ├── no_player_iframes.cpp │ │ └── no_player_iframes.h │ ├── roll_release_test │ │ ├── roll_release_test.cpp │ │ └── roll_release_test.h │ └── run_frame_test │ │ ├── run_frame_test.cpp │ │ └── run_frame_test.h ├── player_ctrl.cpp ├── player_ctrl.h ├── player_game_data.cpp ├── player_game_data.h ├── player_ins.cpp ├── player_ins.h ├── player_network_session.cpp ├── player_network_session.h ├── script_module.cpp ├── script_module.h ├── scripts │ ├── animation_id_handler.cpp │ ├── animation_id_handler.h │ ├── bonk_sound_cosmetic.cpp │ ├── bonk_sound_cosmetic.h │ ├── damage_update_test.cpp │ ├── damage_update_test.h │ ├── ds1_passive_poise.cpp │ ├── ds1_passive_poise.h │ ├── fmod_system_handler.cpp │ ├── fmod_system_handler.h │ ├── hotkey_manager.cpp │ ├── hotkey_manager.h │ ├── imposter_sound_cosmetic.cpp │ ├── imposter_sound_cosmetic.h │ ├── interrupt_attacks.cpp │ ├── interrupt_attacks.h │ ├── jmp_table_status_reset.cpp │ ├── jmp_table_status_reset.h │ ├── latency_simulator.cpp │ ├── latency_simulator.h │ ├── mod_p2p_filter.cpp │ ├── mod_p2p_filter.h │ ├── npc_mod_test.cpp │ ├── npc_mod_test.h │ ├── param_patcher.cpp │ ├── param_patcher.h │ ├── sync_call_script.cpp │ ├── sync_call_script.h │ ├── talk_with_player_name.cpp │ ├── talk_with_player_name.h │ ├── yhorm_scream_on_warcry_cosmetic.cpp │ └── yhorm_scream_on_warcry_cosmetic.h ├── sprj_bullet_state.cpp ├── sprj_bullet_state.h ├── sprj_chr_damage_module.cpp ├── sprj_chr_damage_module.h ├── sprj_chr_data_module.cpp ├── sprj_chr_data_module.h ├── sprj_gaitem_imp.cpp ├── sprj_gaitem_imp.h ├── sprj_gaitem_ins.cpp ├── sprj_gaitem_ins.h ├── sprj_lua_event_condition_item.cpp ├── sprj_lua_event_condition_item.h ├── sprj_session_manager.cpp ├── sprj_session_manager.h ├── sprj_wep_gaitem_ins.cpp ├── sprj_wep_gaitem_ins.h ├── world_chr_man.cpp └── world_chr_man.h ├── main.cpp ├── pch.cpp └── pch.h /DS3RuntimeScripting.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30907.101 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DS3RuntimeScripting", "DS3RuntimeScripting.vcxproj", "{A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Debug|x64.ActiveCfg = Debug|x64 17 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Debug|x64.Build.0 = Debug|x64 18 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Debug|x86.ActiveCfg = Debug|x64 19 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Debug|x86.Build.0 = Debug|x64 20 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Release|x64.ActiveCfg = Release|x64 21 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Release|x64.Build.0 = Release|x64 22 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Release|x86.ActiveCfg = Release|Win32 23 | {A7FFFF6B-E9C0-4DAC-A2BA-A7C2B552D101}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {AED397DC-9B0C-42B0-AA7D-6000849EE502} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Amir 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/AI_SOUND_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Radius 5 | f32 6 | 5 7 | 8 | 9 | lifeFrame 10 | f32 11 | 1 12 | 13 | 14 | bSpEffectEnable [ON_OFF] 15 | u8 16 | 0 17 | 18 | 19 | Type [AI_SOUND_RATE_TYPE] 20 | u8 21 | 0 22 | 23 | 24 | fakeTargetType [AI_SOUND_FAKE_TARGET_TYPE] 25 | u8 26 | 1 27 | 28 | 29 | InterestCategory 30 | u8 31 | 0 32 | 33 | 34 | UseHitDamageTeam [ON_OFF] 35 | u8 36 | 0 37 | 38 | 39 | pad 40 | dummy8 41 | 19 42 | 43 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/BEHAVIOR_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | variationId 5 | s32 6 | 0 7 | 8 | 9 | behaviorJudgeId 10 | s32 11 | 0 12 | 13 | 14 | ezStateBehaviorType_old 15 | u8 16 | 1 17 | 18 | 19 | refType 20 | u8 21 | 0 22 | 23 | 24 | pad1 25 | dummy8 26 | 2 27 | 28 | 29 | refId 30 | s32 31 | 200 32 | 33 | 34 | sfxVariationId 35 | s32 36 | 0 37 | 38 | 39 | stamina 40 | s32 41 | 0 42 | 43 | 44 | mp 45 | s32 46 | 0 47 | 48 | 49 | category 50 | u8 51 | 11 52 | 53 | 54 | heroPoint 55 | u8 56 | 0 57 | 58 | 59 | pad2 60 | dummy8 61 | 2 62 | 63 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/BONFIRE_WARP_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | LocationEventId 5 | s32 6 | 14000000 7 | 8 | 9 | WarpEventId 10 | s32 11 | 4001950 12 | 13 | 14 | BonfireNameId 15 | s32 16 | 211210 17 | 18 | 19 | DescriptionTextId 20 | s32 21 | -1 22 | 23 | 24 | PictureId 25 | s32 26 | 10011 27 | 28 | 29 | ListId 30 | u8 31 | 3 32 | 33 | 34 | IsDisableQuickwarp 35 | u8 36 | 0 37 | 38 | 39 | CeremonyId 40 | s16 41 | -1 42 | 43 | 44 | onlineAreaId 45 | s32 46 | 0 47 | 48 | 49 | pad1 50 | dummy8 51 | 36 52 | 53 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/BULLET_CREATE_LIMIT_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | maxAmmount 5 | u8 6 | 1 7 | 8 | 9 | pad1 10 | dummy8 11 | 31 12 | 13 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/CEREMONY_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | EventLayerID 5 | s32 6 | 0 7 | 8 | 9 | MapStudioLayerID 10 | s32 11 | 0 12 | 13 | 14 | GparamID[Up] 15 | s16 16 | 0 17 | 18 | 19 | GparamID[Low] 20 | s16 21 | 0 22 | 23 | 24 | Point CloudID 25 | s32 26 | 0 27 | 28 | 29 | GI_TextureID 30 | s32 31 | 0 32 | 33 | 34 | Light GroupID 35 | s32 36 | 0 37 | 38 | 39 | IsReload 40 | u8 41 | 0 42 | 43 | 44 | IsDisableOnline 45 | u8 46 | 0 47 | 48 | 49 | pad1 50 | dummy8 51 | 10 52 | 53 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/CHARACTER_LOAD_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ChrBndType 5 | u8 6 | 0 7 | 8 | 9 | AniBndType 10 | u8 11 | 0 12 | 13 | 14 | TexBndType 15 | u8 16 | 0 17 | 18 | 19 | BehBndType 20 | u8 21 | 0 22 | 23 | 24 | SndChrType 25 | u8 26 | 0 27 | 28 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/CHARMAKEMENUTOP_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | CommandID 5 | s32 6 | 1 7 | 8 | 9 | FaceParamID 10 | s32 11 | 0 12 | 13 | 14 | TableID 15 | s32 16 | 0 17 | 18 | 19 | ViewCondition 20 | s32 21 | 0 22 | 23 | 24 | PreviewMode 25 | u8 26 | 0 27 | 28 | 29 | pad1 30 | dummy8 31 | 3 32 | 33 | 34 | MenuType 35 | s8 36 | 2 37 | 38 | 39 | pad2 40 | dummy8 41 | 11 42 | 43 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/CHARMAKEMENU_LISTITEM_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Value 5 | s32 6 | 1 7 | 8 | 9 | CaptionId 10 | s32 11 | 0 12 | 13 | 14 | IconID 15 | u8 16 | 0 17 | 18 | 19 | pad1 20 | dummy8 21 | 7 22 | 23 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/COOL_TIME_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | limitationTime_0 5 | f32 6 | 900 7 | 8 | 9 | observationTime_0 10 | f32 11 | 900 12 | 13 | 14 | limitationTime_1 15 | f32 16 | 600 17 | 18 | 19 | observationTime_1 20 | f32 21 | 450 22 | 23 | 24 | limitationTime_2 25 | f32 26 | 300 27 | 28 | 29 | observationTime_2 30 | f32 31 | 200 32 | 33 | 34 | limitationTime_3 35 | f32 36 | 0 37 | 38 | 39 | observationTime_3 40 | f32 41 | 0 42 | 43 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/CULT_SETTING_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Distance 5 | f32 6 | 0.8 7 | 8 | 9 | Angle 10 | f32 11 | 90 12 | 13 | 14 | EventFlagId 15 | s32 16 | -1 17 | 18 | 19 | Coefficient.1000 20 | s16 21 | 0 22 | 23 | 24 | CultState1 25 | s8 26 | 0 27 | 28 | 29 | CultState2 30 | s8 31 | 0 32 | 33 | 34 | pad1 35 | dummy8 36 | 16 37 | 38 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/DIRECTION_CAMERA_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | RumbleState[ON_OFF] 5 | u8 6 | 1 7 | 8 | 9 | pad1 10 | dummy8 11 | 15 12 | 13 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/EQUIP_MTRL_SET_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MaterialId01 5 | s32 6 | 1000 7 | 8 | 9 | MaterialId02 10 | s32 11 | -1 12 | 13 | 14 | MaterialId03 15 | s32 16 | -1 17 | 18 | 19 | MaterialId04 20 | s32 21 | -1 22 | 23 | 24 | MaterialId05 25 | s32 26 | -1 27 | 28 | 29 | ItemNum01 30 | s8 31 | 1 32 | 33 | 34 | ItemNum02 35 | s8 36 | -1 37 | 38 | 39 | ItemNum03 40 | s8 41 | -1 42 | 43 | 44 | ItemNum04 45 | s8 46 | -1 47 | 48 | 49 | ItemNum05 50 | s8 51 | -1 52 | 53 | 54 | isDisableDispNum01 55 | b8 56 | False 57 | 58 | 59 | isDisableDispNum02 60 | b8 61 | False 62 | 63 | 64 | isDisableDispNum03 65 | b8 66 | True 67 | 68 | 69 | isDisableDispNum04 70 | b8 71 | False 72 | 73 | 74 | isDisableDispNum05 75 | b8 76 | False 77 | 78 | 79 | pad1 80 | dummy8 81 | 6 82 | 83 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/GAME_AREA_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | BonusSoul_single 5 | s32 6 | 60000 7 | 8 | 9 | BonusSoul_multi 10 | s32 11 | 60000 12 | 13 | 14 | humanityPointCountFlagIdTop 15 | s32 16 | -1 17 | 18 | 19 | humanityDropPoint1 20 | s16 21 | -1 22 | 23 | 24 | humanityDropPoint2 25 | s16 26 | -1 27 | 28 | 29 | humanityDropPoint3 30 | s16 31 | -1 32 | 33 | 34 | humanityDropPoint4 35 | s16 36 | -1 37 | 38 | 39 | humanityDropPoint5 40 | s16 41 | -1 42 | 43 | 44 | humanityDropPoint6 45 | s16 46 | -1 47 | 48 | 49 | humanityDropPoint7 50 | s16 51 | -1 52 | 53 | 54 | humanityDropPoint8 55 | s16 56 | -1 57 | 58 | 59 | humanityDropPoint9 60 | s16 61 | -1 62 | 63 | 64 | humanityDropPoint10 65 | s16 66 | -1 67 | 68 | 69 | subBonusSoul_single 70 | s32 71 | 0 72 | 73 | 74 | subbonusSoul_multi 75 | s32 76 | 10000 77 | 78 | 79 | pad1 80 | dummy8 81 | 8 82 | 83 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/GAME_PROGRESS_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | EventFlagId 5 | s32 6 | 6100 7 | 8 | 9 | ProgressId 10 | u8 11 | 10 12 | 13 | 14 | pad1 15 | dummy8 16 | 11 17 | 18 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/GEMEFFECT_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | spEffectId 5 | s32 6 | -1 7 | 8 | 9 | categoryId 10 | s32 11 | 0 12 | 13 | 14 | effectRank 15 | s32 16 | 1 17 | 18 | 19 | rankMin 20 | s32 21 | 1 22 | 23 | 24 | rankMax 25 | s32 26 | 100 27 | 28 | 29 | disposalPrice 30 | s32 31 | 0 32 | 33 | 34 | gemIconIdOffset 35 | s16 36 | 0 37 | 38 | 39 | pad1 40 | dummy8 41 | 2 42 | 43 | 44 | spEffectId_forAtk 45 | s32 46 | -1 47 | 48 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/HIT_EFFECT_SFX_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | HitSfxId0 5 | s32 6 | 0 7 | 8 | 9 | HitSfxId1 10 | s32 11 | 0 12 | 13 | 14 | HitSfxId2 15 | s32 16 | 0 17 | 18 | 19 | HitSfxId3 20 | s32 21 | 0 22 | 23 | 24 | HitSfxId4 25 | s32 26 | 0 27 | 28 | 29 | HitSfxId5 30 | s32 31 | 0 32 | 33 | 34 | HitSfxId6 35 | s32 36 | 0 37 | 38 | 39 | HitSfxId7 40 | s32 41 | 0 42 | 43 | 44 | HitSfxId8 45 | s32 46 | 0 47 | 48 | 49 | HitSfxId9 50 | s32 51 | 0 52 | 53 | 54 | HitSfxId10 55 | s32 56 | 0 57 | 58 | 59 | HitSfxId11 60 | s32 61 | 0 62 | 63 | 64 | HitSfxId12 65 | s32 66 | 0 67 | 68 | 69 | HitSfxId13 70 | s32 71 | 0 72 | 73 | 74 | HitSfxId14 75 | s32 76 | 0 77 | 78 | 79 | HitSfxId15 80 | s32 81 | 0 82 | 83 | 84 | pad1 85 | dummy8 86 | 16 87 | 88 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/KNOWLEDGE_LOADSCREEN_ITEM_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | LoadscreenCategoryId 5 | x32 6 | 0x00000000 7 | 8 | 9 | KnowledgeId 10 | s32 11 | 23000000 12 | 13 | 14 | pad1 15 | dummy8 16 | 8 17 | 18 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/LOD_BANK.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | lv01_BorderDist 5 | f32 6 | 5 7 | 8 | 9 | lv01_PlayDist 10 | f32 11 | 1 12 | 13 | 14 | lv12_BorderDist 15 | f32 16 | 20 17 | 18 | 19 | lv12_PlayDist 20 | f32 21 | 2 22 | 23 | 24 | textureLod 25 | u8 26 | 1 27 | 28 | 29 | pad1 30 | dummy8 31 | 3 32 | 33 | 34 | lv23_BorderDist 35 | f32 36 | 9999 37 | 38 | 39 | lv23_PlayDist 40 | f32 41 | 1 42 | 43 | 44 | lv34_BorderDist 45 | f32 46 | 9999 47 | 48 | 49 | lv34_PlayDist 50 | f32 51 | 1 52 | 53 | 54 | lv45_BorderDist 55 | f32 56 | 9999 57 | 58 | 59 | lv45_PlayDist 60 | f32 61 | 1 62 | 63 | 64 | DistanceScaleId [0-255] 65 | u8 66 | 0 67 | 68 | 69 | pad2 70 | dummy8 71 | 19 72 | 73 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MAP_MIMICRY_ESTABLISHMENT_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | RandomizerCoefficient0 5 | f32 6 | 500 7 | 8 | 9 | RandomizerCoefficient1 10 | f32 11 | 500 12 | 13 | 14 | RandomizerCoefficient2 15 | f32 16 | -1 17 | 18 | 19 | TransformVfxId0 20 | s32 21 | -1 22 | 23 | 24 | LoopVfxId0 25 | s32 26 | 430041 27 | 28 | 29 | DestroyVfxId0 30 | s32 31 | 430042 32 | 33 | 34 | TransformVfxId1 35 | s32 36 | -1 37 | 38 | 39 | LoopVfxId1 40 | s32 41 | -1 42 | 43 | 44 | DestroyVfxId1 45 | s32 46 | -1 47 | 48 | 49 | TransformVfxId2 50 | s32 51 | -1 52 | 53 | 54 | LoopVfxId2 55 | s32 56 | -1 57 | 58 | 59 | DestroyVfxId2 60 | s32 61 | -1 62 | 63 | 64 | pad1 65 | dummy8 66 | 16 67 | 68 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MENUPROPERTY_LAYOUT.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | LayoutPath 5 | fixstr 6 | 16 7 | 8 | 9 | 10 | PropertyId [MENU_PROPERTY_ID] 11 | s32 12 | 0 13 | 14 | 15 | captionTextId 16 | s32 17 | 0 18 | 19 | 20 | HelpTextId 21 | s32 22 | 0 23 | 24 | 25 | pad1 26 | dummy8 27 | 4 28 | 29 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MENUPROPERTY_SPEC.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | CaptionTextId 5 | s32 6 | 0 7 | 8 | 9 | IconId 10 | s32 11 | -1 12 | 13 | 14 | RequiredPropertyId 15 | s32 16 | 0 17 | 18 | 19 | CompareType 20 | u8 21 | 1 22 | 23 | 24 | RequiredPropertyFormatId 25 | u8 26 | 0 27 | 28 | 29 | AdhocCaption 30 | fixstrW 31 | 18 32 | 耐久度 33 | 34 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MENU_OFFSCR_REND_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | MenuContent0 Y 5 | f32 6 | 0 7 | 8 | 9 | MenuContent0 X 10 | f32 11 | 0.85 12 | 13 | 14 | MenuContent0 Distance 15 | f32 16 | 0 17 | 18 | 19 | MenuContent1 Y 20 | f32 21 | 2.66 22 | 23 | 24 | MenuContent1 X 25 | f32 26 | 1.719 27 | 28 | 29 | MenuContent1 Reverse X 30 | f32 31 | -14.85 32 | 33 | 34 | MenuContent1 Distance 35 | f32 36 | 15 37 | 38 | 39 | pad1 40 | dummy8 41 | 16 42 | 43 | 44 | screenRendId 45 | s32 46 | 11 47 | 48 | 49 | pad2 50 | dummy8 51 | 16 52 | 53 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MENU_PARAM_COLOR_TABLE_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | R 5 | u8 6 | 0 7 | 8 | 9 | G 10 | u8 11 | 0 12 | 13 | 14 | B 15 | u8 16 | 0 17 | 18 | 19 | A 20 | u8 21 | 255 22 | 23 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MENU_VALUE_TABLE_SPEC.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Value 5 | s32 6 | 1 7 | 8 | 9 | TextId 10 | s32 11 | 11320 12 | 13 | 14 | CompareType 15 | u8 16 | 0 17 | 18 | 19 | pad1 20 | dummy8 21 | 3 22 | 23 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/MULTI_PLAY_CORRECTION_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | CorrectionVal0 5 | s32 6 | 140201 7 | 8 | 9 | CorrectionVal1 10 | s32 11 | 140202 12 | 13 | 14 | CorrectionVal2 15 | s32 16 | 140203 17 | 18 | 19 | CorrectionVal3 20 | s32 21 | 0 22 | 23 | 24 | pad1 25 | dummy8 26 | 16 27 | 28 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/NETWORK_AREA_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | LimitationTime0 5 | f32 6 | 30 7 | 8 | 9 | LimitationTime1 10 | f32 11 | 20 12 | 13 | 14 | LimitationTime2 15 | f32 16 | 30 17 | 18 | 19 | pad1 20 | dummy8 21 | 12 22 | 23 | 24 | isEnable00 25 | b8 26 | True 27 | 28 | 29 | isEnable01 30 | b8 31 | True 32 | 33 | 34 | isEnable02 35 | b8 36 | True 37 | 38 | 39 | unkb1 40 | b8 41 | True 42 | 43 | 44 | unkb2 45 | b8 46 | True 47 | 48 | 49 | unkb3 50 | b8 51 | True 52 | 53 | 54 | unkb4 55 | b8 56 | True 57 | 58 | 59 | unkb5 60 | b8 61 | True 62 | 63 | 64 | pad2 65 | dummy8 66 | 3 67 | 68 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/NETWORK_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | networkData 5 | dummy8 6 | 632 7 | 8 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/NPC_AI_ACTION_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | directionMovementId 5 | u8 6 | 0 7 | 8 | 9 | actId0 10 | u8 11 | 22 12 | 13 | 14 | actId1 15 | u8 16 | 0 17 | 18 | 19 | actId2 20 | u8 21 | 0 22 | 23 | 24 | isDisableDirectionMovement 25 | u8 26 | 0 27 | 28 | 29 | isDisableAct0 30 | u8 31 | 0 32 | 33 | 34 | isDisableAct1 35 | u8 36 | 0 37 | 38 | 39 | isDisableAct2 40 | u8 41 | 0 42 | 43 | 44 | actType 45 | s32 46 | 0 47 | 48 | 49 | isDisableAiCheck 50 | u8 51 | 0 52 | 53 | 54 | pad1 55 | dummy8 56 | 3 57 | 58 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/PROTECTOR_GEN_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | proParamId 5 | s32 6 | 0 7 | 8 | 9 | gemSlotType_0 10 | x32 11 | 0x80000160 12 | 13 | 14 | gemGenId_0 15 | s32 16 | -1 17 | 18 | 19 | gemSlotType_1 20 | x32 21 | 0x80000160 22 | 23 | 24 | gemGenId_1 25 | s32 26 | -1 27 | 28 | 29 | gemSlotType_2 30 | x32 31 | 0x80000160 32 | 33 | 34 | gemGenId_2 35 | s32 36 | -1 37 | 38 | 39 | gemSlotType_3 40 | x32 41 | 0x80000160 42 | 43 | 44 | gemGenId_3 45 | s32 46 | -1 47 | 48 | 49 | gemSlotType_4 50 | x32 51 | 0x80000160 52 | 53 | 54 | gemGenId_4 55 | s32 56 | -1 57 | 58 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/RAGDOLL_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | hierarchGain 5 | f32 6 | 0 7 | 8 | 9 | velocityDamping 10 | f32 11 | 0 12 | 13 | 14 | accelGain 15 | f32 16 | 0 17 | 18 | 19 | velocityGain 20 | f32 21 | 0 22 | 23 | 24 | positionGain 25 | f32 26 | 0 27 | 28 | 29 | maxLinerVelocity 30 | f32 31 | 0 32 | 33 | 34 | maxAngularVelocity 35 | f32 36 | 0 37 | 38 | 39 | snapGain 40 | f32 41 | 0 42 | 43 | 44 | enable 45 | u8 46 | 1 47 | 48 | 49 | partsHitMaskNo 50 | s8 51 | 1 52 | 53 | 54 | pad1 55 | dummy8 56 | 14 57 | 58 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/SE_MATERIAL_CONVERT_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Material_Id 5 | s32 6 | 80 7 | 8 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/SHOP_LINEUP_PARAM.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | EquipId 5 | s32 6 | 500 7 | 8 | 9 | value 10 | s32 11 | -1 12 | 13 | 14 | mtrlId 15 | s32 16 | -1 17 | 18 | 19 | EventFlag 20 | s32 21 | -1 22 | 23 | 24 | qwcID 25 | s32 26 | -1 27 | 28 | 29 | sellQuantity 30 | s16 31 | 1 32 | 33 | 34 | shopType 35 | u8 36 | 0 37 | 38 | 39 | equipType 40 | u8 41 | 3 42 | 43 | 44 | value_SAN 45 | s16 46 | -1 47 | 48 | 49 | pad1 50 | dummy8 51 | 6 52 | 53 | 54 | PriceRate 55 | f32 56 | 1 57 | 58 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/SWORD_ARTS_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ActionId [0-36] 5 | u8 6 | 22 7 | 8 | 9 | ActionCorrection 10 | u8 11 | 2 12 | 13 | 14 | ReserveArtPointType [0-3] 15 | u8 16 | 1 17 | 18 | 19 | UnusedField 20 | u8 21 | 2 22 | 23 | 24 | reserveArtsPoint0 25 | s8 26 | -1 27 | 28 | 29 | reserveArtsPoint1 30 | s8 31 | -1 32 | 33 | 34 | reserveArtsPoint2 35 | s8 36 | -1 37 | 38 | 39 | reserveArtsPoint3 40 | s8 41 | -1 42 | 43 | 44 | DebugTextId 45 | s32 46 | 70005 47 | 48 | 49 | subFPCost 50 | s16 51 | -1 52 | 53 | 54 | FPCost 55 | s16 56 | 0 57 | 58 | 59 | FPCostLight 60 | s16 61 | -1 62 | 63 | 64 | FpCostStrong 65 | s16 66 | -1 67 | 68 | 69 | ShieldCategory [0-4] 70 | u8 71 | 0 72 | 73 | 74 | pad1 75 | dummy8 76 | 11 77 | 78 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/TALK_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | PcGenderFemale1 5 | s32 6 | 90000000 7 | 8 | 9 | PcGenderMale1 10 | s32 11 | 30000001 12 | 13 | 14 | SpEffectId0 15 | s32 16 | -1 17 | 18 | 19 | AnimationId0 20 | s32 21 | -1 22 | 23 | 24 | SpEffectId1 25 | s32 26 | -1 27 | 28 | 29 | AnimationId1 30 | s32 31 | -1 32 | 33 | 34 | SpEffectId2 35 | s32 36 | 0 37 | 38 | 39 | AnimationId2 40 | s32 41 | -1 42 | 43 | 44 | EventFlagId 45 | s32 46 | -1 47 | 48 | 49 | EventID_Female 50 | s32 51 | 90000000 52 | 53 | 54 | EventID_Male 55 | s32 56 | 30000001 57 | 58 | 59 | TalkTime[0.0 - 1.0] 60 | f32 61 | 0 62 | 63 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/TOUGHNESS_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Toughness 5 | f32 6 | 1 7 | 8 | 9 | DamageLvlThreshold 10 | s16 11 | 0 12 | 13 | 14 | IsToughnessEffective 15 | u8 16 | 0 17 | 18 | 19 | pad1 20 | dummy8 21 | 1 22 | 23 | 24 | SpEffectId 25 | s32 26 | 6352 27 | 28 | 29 | pad2 30 | dummy8 31 | 20 32 | 33 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/WEAPON_GEN_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | wepParamId 5 | s32 6 | 0 7 | 8 | 9 | gemSlotType_0 10 | s32 11 | -2147483296 12 | 13 | 14 | gemGenId0 15 | s32 16 | -1 17 | 18 | 19 | gemSlotType_1 20 | s32 21 | -2147483296 22 | 23 | 24 | gemGenId1 25 | s32 26 | -1 27 | 28 | 29 | gemSlotType_2 30 | s32 31 | -2147483296 32 | 33 | 34 | gemGenId2 35 | s32 36 | -1 37 | 38 | 39 | gemSlotType_3 40 | s32 41 | -2147483296 42 | 43 | 44 | gemGenId3 45 | s32 46 | -1 47 | 48 | 49 | gemSlotType_4 50 | s32 51 | -2147483296 52 | 53 | 54 | gemGenId4 55 | s32 56 | -1 57 | 58 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/WET_ASPECT_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | R1 5 | u8 6 | 0 7 | 8 | 9 | G1 10 | u8 11 | 0 12 | 13 | 14 | B1 15 | u8 16 | 0 17 | 18 | 19 | pad1 20 | dummy8 21 | 1 22 | 23 | 24 | Alpha1 25 | f32 26 | 0 27 | 28 | 29 | R2 30 | u8 31 | 0 32 | 33 | 34 | G2 35 | u8 36 | 0 37 | 38 | 39 | B2 40 | u8 41 | 0 42 | 43 | 44 | pad2 45 | dummy8 46 | 1 47 | 48 | 49 | Alpha2 50 | f32 51 | 0 52 | 53 | 54 | WetRate 55 | f32 56 | 0 57 | 58 | 59 | WetCorrection 60 | u8 61 | 0 62 | 63 | 64 | pad3 65 | dummy8 66 | 11 67 | 68 | -------------------------------------------------------------------------------- /dist/res/DS3/Layouts/WHITE_SIGN_COOL_TIME_PARAM_ST.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | timeLimit0 5 | f32 6 | 360 7 | 8 | 9 | timeLimit1 10 | f32 11 | 360 12 | 13 | 14 | timeLimit2 15 | f32 16 | 360 17 | 18 | 19 | timeLimit3 20 | f32 21 | 360 22 | 23 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/AiSoundParam.txt: -------------------------------------------------------------------------------- 1 | 0 Default (do not edit) -- デフォルト(編集しない) 2 | 1 Walk -- 歩き 3 | 2 Run -- 走り 4 | 3 Dash -- ダッシュ 5 | 4 Rolling -- ローリング 6 | 5 Landing -- 着地 7 | 6 A covert walk -- 隠密歩き 8 | 7 Covert Run -- 隠密走り 9 | 8 Object Destruction -- オブジェクト破壊 10 | 1000 Walk -- 歩き 11 | 1010 Run -- 走り 12 | 1020 Dash -- ダッシュ 13 | 1030 Rolling -- ローリング 14 | 1040 Minimal landing -- 着地(極小) 15 | 1050 Small landing -- 着地(小) 16 | 1060 Normal landing -- 着地(普通) 17 | 1070 Large Landing -- 着地(大) 18 | 2000 Small attack sound -- 攻撃音小 19 | 2010 During the attack sound -- 攻撃音中 20 | 2020 Attack music -- 攻撃音大 21 | 2030 Attack Sound Oversized -- 攻撃音特大 22 | 2100 Attack Sound Small -- 攻撃発生音小 23 | 2110 In the sound of an attack -- 攻撃発生音中 24 | 2120 Attack music -- 攻撃発生音大 25 | 2200 Attack sound small (normal sound) -- 攻撃音小(通常音) 26 | 3000 Object Destruction Sound Small -- オブジェクト破壊音小 27 | 3010 Object Breaking Sound -- オブジェクト破壊音中 28 | 3020 Object Destruction Music -- オブジェクト破壊音大 29 | 4000 Wake Up Sound -- 起きろ音 30 | 4010 Buddy Call Sound: Medium -- 仲間呼び音:中 31 | 4020 Companions Call Sound: Small -- 仲間呼び音:小 32 | 5000 Anxious Sound One -- 気になる音1 33 | 6000 Companion: Dead Soldier lantern -- 仲間呼び:亡者兵士ランタン 34 | 9002 Mate call Test: Blue -- 仲間呼びテスト:ブルー 35 | 9003 Unused -- 未使用 36 | 9004 Per bullet -- 弾丸当たり 37 | 9005 Per wall -- 壁当たり 38 | 9006 Soul Coins -- ソウルコイン 39 | 9007 Hallucinations -- 幻聴 40 | 9008 Allure -- アラーム 41 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/AttackElementCorrectParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/AttackElementCorrectParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/BudgetParam.txt: -------------------------------------------------------------------------------- 1 | 0 Default (delete not allowed) -- デフォルト(削除禁止) 2 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/BulletCreateLimitParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/BulletCreateLimitParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/CalcCorrectGraph.txt: -------------------------------------------------------------------------------- 1 | 0 0: None -- 0:なし 2 | 1 1: Hard Stone -- 1:硬石 3 | 2 2: Sharp Stone -- 2:鋭石 4 | 3 3: All Stones -- 3:みなぎ石 5 | 4 4: Stone -- 4:にび石 6 | 5 5: Blade Stone -- 5:刃石 7 | 6 6: Spider yarn Steel wire -- 6:蜘蛛糸鋼線 8 | 7 7: Mercury Stone -- 7:水銀石 9 | 8 8: Dragon Stone -- 8:竜石 10 | 9 9: Breathed Stone -- 9:吸いつき石 11 | 10 10: Spinal Stone -- 10:髄石 12 | 11 11: Mon Mitsuishi -- 11:月光石 13 | 12 12: Tsukikage Stone -- 12:月影石 14 | 13 13: Glimmer Stone -- 13:微光石 15 | 14 14: Magic Shield Stone -- 14:魔法盾石 16 | 15 15: Ore Spirit DS -- 15:鉱石の精霊DS 17 | 16 16: DS -- 16:DS 18 | 102 Defense Force (Seoul level) -- 防御力(ソウルレベル) 19 | 110 Poison tolerance (Soul level) -- 毒耐性(ソウルレベル) 20 | 111 Plague Resistance (Seoul level) -- 疫病耐性(ソウルレベル) 21 | 112 Bleeding tolerance (Seoul level) -- 出血耐性(ソウルレベル) 22 | 113 Curse resistance (Soul level) -- 呪い耐性(ソウルレベル) 23 | 114 Cold air resistance (Soul level) -- 冷気耐性(ソウルレベル) 24 | 120 Poison tolerance (physical strength) -- 毒耐性(体力) 25 | 121 Plague Resistance (physical strength) -- 疫病耐性(体力) 26 | 122 Bleeding resistance (endurance) -- 出血耐性(持久力) 27 | 123 Curse Resistance (Luck) -- 呪い耐性(運) 28 | 124 Cold air resistance (life force) -- 冷気耐性(生命力) 29 | 130 Physical Defense Strength -- 物理防御力(筋力) 30 | 131 Physical Defense Strength -- 物理防御力(体力) 31 | 132 Magic Defensive Force (faith) -- 魔法防御力(信仰) 32 | 133 Flame Defense Force (strength) -- 炎防御力(筋力) 33 | 134 Lightning Defense Force (endurance) -- 雷防御力(持久力) 34 | 135 Defense of Darkness (Faith) -- 闇防御力(信仰) 35 | 140 Drop Rate (Luck) -- ドロップ率(運) 36 | 150 Maximum replenishment number of recovery spots -- 回復スポットの最大補充数 37 | 160 Shield status correction physical cut ratio -- 盾ステータス補正 物理カット率 38 | 161 Shield Status correction attribute cut rate -- 盾ステータス補正 属性カット率 39 | 162 Shield status correction tolerance cut rate -- 盾ステータス補正 耐性カット率 40 | 163 Shield status correction stamina cut ratio -- 盾ステータス補正 スタミナカット率 41 | 170 Arts Point Maximum (strength) -- アーツポイント最大値(筋力) 42 | 171 Arts Point Max value (workmanship) -- アーツポイント最大値(技量) 43 | 172 Arts Point Max Value (Magic) -- アーツポイント最大値(魔法) 44 | 173 Arts Point Maximum (miracle) -- アーツポイント最大値(奇跡) 45 | 200 Growing consumption Soul -- 成長消費ソウル 46 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/Ceremony.txt: -------------------------------------------------------------------------------- 1 | 1000 For automatic patrol: normal -- 自動巡回用:通常 2 | 1001 For automatic circuit: ritual A -- 自動巡回用:儀式A 3 | 1002 Automatic Circuit: Ritual b -- 自動巡回用:儀式B 4 | 1003 For automatic circuit: ritual c -- 自動巡回用:儀式C 5 | 1004 For automatic circuit: ritual D -- 自動巡回用:儀式D 6 | 1005 Automatic Circuit: Ritual E -- 自動巡回用:儀式E 7 | 30000000 Ojo _1 of caries: Daytime -- 蝕の王城_1:昼 8 | 30000010 Ojo _1 of caries: gloomy and cloudy -- 蝕の王城_1:陰鬱な曇り 9 | 30001000 Ojo _1 of caries: Product version -- 蝕の王城_1:製品版 10 | 30001010 Ojo _1 of caries: NT -- 蝕の王城_1:NT 11 | 30001011 Ojo _1 of caries: TGS -- 蝕の王城_1:TGS 12 | 30001012 Ojo _1 of caries: E3 light Test -- 蝕の王城_1:E3ライトテスト 13 | 30001015 Ojo _1 of caries: Ojo 2 distant Test -- 蝕の王城_1:王城2遠景テスト 14 | 30010000 Ojo _2 of caries: Daytime -- 蝕の王城_2:昼 15 | 30010010 Ojo _2 of caries: gloomy and cloudy -- 蝕の王城_2:陰鬱な曇り 16 | 31000000 City of Evil Eye: Noon -- 邪眼の街:昼 17 | 31000010 City of Evil eyes: gloomy and cloudy -- 邪眼の街:陰鬱な曇り 18 | 31000020 City of Evil Eye: evening/Dusk -- 邪眼の街:夕方/宵闇 19 | 31000030 The City of Evil Eyes: Moon Night -- 邪眼の街:月夜 20 | 32000000 The Bridge of Flying Dragon: Noon -- 飛竜の橋:昼 21 | 32000010 The Bridge of Flying dragon: gloomy and cloudy -- 飛竜の橋:陰鬱な曇り 22 | 33000000 Poison Swamp Forest: Noon -- 毒沼の森:昼 23 | 33000010 Poison swamp Forest: gloomy and cloudy -- 毒沼の森:陰鬱な曇り 24 | 35000000 Cathedral Church: Noon -- 聖堂教会:昼 25 | 35000010 Cathedral church: Gloomy and cloudy -- 聖堂教会:陰鬱な曇り 26 | 37000000 Anole: Daytime -- アノール:昼 27 | 37000010 Anole: Gloomy and cloudy -- アノール:陰鬱な曇り 28 | 38000000 Waste City: Daytime -- 廃都:昼 29 | 39000000 Dungeon: Noon -- 地下牢:昼 30 | 40000000 Location: Daytime -- 拠点:昼 31 | 40000010 Location: Gloomy and cloudy -- 拠点:陰鬱な曇り 32 | 40000020 Location: Evening/Dusk -- 拠点:夕方/宵闇 33 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/CharMakeMenuListItemParam.txt: -------------------------------------------------------------------------------- 1 | 0 Unconfigured -- 未設定 2 | 100 Base type -- ベース体型 3 | 200 Base face ※ Frame 90 ~ 99 for rendering images only, switch to another ID -- ベース顔 ※フレーム90~99はレンダリング画像専用のため、別IDに切り替え 4 | 220 Base Face female display -- ベース顔 女性用表示 5 | 300 Right eye -- 瞳(右) 6 | 400 Left eye -- 瞳(左) 7 | 500 Eyebrows -- 眉 8 | 600 Beard -- 髭 9 | 620 "None" for bearded women only -- 髭 女性用の「なし」のみ 10 | 700 Hairstyle -- 髪型 11 | 800 Decal -- デカール 12 | 900 Accessories -- アクセサリ 13 | 1000 Hitomi (for both eyes) -- 瞳(両瞳用) 14 | 1100 Eyelashes -- まつげ 15 | 100000 Gender -- 性別 16 | 100100 Age group -- 年齢層 17 | 100200 Feature -- 素性 18 | 100300 Gift -- 贈り物 19 | 100400 Voice -- ボイス 20 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/CharacterLoadParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/CharacterLoadParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/ClearCountCorrectParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/ClearCountCorrectParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/CoolTimeParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/CoolTimeParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/CultSettingParam.txt: -------------------------------------------------------------------------------- 1 | 0 Default -- デフォルト 2 | 10 Test -- テスト 3 | 100 For testing -- テスト用 4 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/DirectionCameraParam.txt: -------------------------------------------------------------------------------- 1 | 80 Front unprotected directing camera -- 前面無防備演出カメラ 2 | 81 Front unprotected production camera (pull out) -- 前面無防備演出カメラ(引き抜き) 3 | 82 Front unprotected production camera (for mallet thrown) -- 前面無防備演出カメラ(槌たたきつけ用) 4 | 83 Front unprotected production camera (for large sword) -- 前面無防備演出カメラ(大剣用) 5 | 90 Rear unprotected directing camera -- 背面無防備演出カメラ 6 | 92 Rear unprotected directing camera (for Mallet) -- 背面無防備演出カメラ(槌用) 7 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/EquipMtrlSetParam.txt: -------------------------------------------------------------------------------- 1 | 0 Basic -- 基本 2 | 1 Basic + 1 -- 基本+1 3 | 2 Basic + 2 -- 基本+2 4 | 3 Basic + 3 -- 基本+3 5 | 4 Basic + 4 -- 基本+4 6 | 5 Basic + 5 -- 基本+5 7 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/FaceParam.txt: -------------------------------------------------------------------------------- 1 | 0 Test -- test 2 | 1 Character Makeup Test -- キャラメイクテスト 3 | 20 20: NT version A (Wandering Knight) -- 20:NT版 A (放浪の騎士) 4 | 21 21: NT version B (North Warrior) -- 21:NT版 B (北の戦士) 5 | 22 22: NT version C (Wizard) -- 22:NT版 C (魔法使い) 6 | 23 23: NT version D (Temple Knight) -- 23:NT版 D (神殿騎士) 7 | 1000 Newgame presets Face _ man 0 -- NewGameプリセット顔_男0 8 | 1001 Newgame preset Face _ man 1 -- NewGameプリセット顔_男1 9 | 1002 Newgame presets Face _ Man 2 -- NewGameプリセット顔_男2 10 | 1003 Newgame Preset Face _ Man 3 -- NewGameプリセット顔_男3 11 | 1004 Newgame Preset Face _ man 4 -- NewGameプリセット顔_男4 12 | 1005 Newgame Preset Face _ man 5 -- NewGameプリセット顔_男5 13 | 1006 Newgame Preset Face _ man 6 -- NewGameプリセット顔_男6 14 | 1007 Newgame Presets Face _ Man 7 -- NewGameプリセット顔_男7 15 | 1008 Newgame presets Face _ Man 8 -- NewGameプリセット顔_男8 16 | 1009 Newgame Presets Face _ Man 9 -- NewGameプリセット顔_男9 17 | 2000 Newgame preset Face _ woman 0 -- NewGameプリセット顔_女0 18 | 2001 Newgame preset Face _ woman 1 -- NewGameプリセット顔_女1 19 | 2002 Newgame preset Face _ woman 2 -- NewGameプリセット顔_女2 20 | 2003 Newgame preset Face _ woman 3 -- NewGameプリセット顔_女3 21 | 2004 Newgame preset Face _ woman 4 -- NewGameプリセット顔_女4 22 | 2005 Newgame preset Face _ woman 5 -- NewGameプリセット顔_女5 23 | 2006 Newgame preset Face _ woman 6 -- NewGameプリセット顔_女6 24 | 2007 Newgame preset Face _ woman 7 -- NewGameプリセット顔_女7 25 | 2008 Newgame preset Face _ woman 8 -- NewGameプリセット顔_女8 26 | 2009 Newgame preset Face _ woman 9 -- NewGameプリセット顔_女9 27 | 3000 0 for base body (mixed) -- ベースボディ用0(男女共用) 28 | 3001 For base body 1 (mixed) -- ベースボディ用1(男女共用) 29 | 3002 For base body 2 (mixed) -- ベースボディ用2(男女共用) 30 | 3003 For base body 3 (mixed) -- ベースボディ用3(男女共用) 31 | 3004 For base body 4 (mixed) -- ベースボディ用4(男女共用) 32 | 3005 For base body 5 (mixed) -- ベースボディ用5(男女共用) 33 | 3006 For base body 6 (mixed) -- ベースボディ用6(男女共用) 34 | 3007 Base Body 7 (mixed) -- ベースボディ用7(男女共用) 35 | 3008 For base body 8 (mixed) -- ベースボディ用8(男女共用) 36 | 3009 Base Body 9 (mixed) -- ベースボディ用9(男女共用) 37 | 4000 Character make top menu male -- キャラメイクトップメニュー男性 38 | 5000 Character make top menu female -- キャラメイクトップメニュー女性 39 | 9999 Phantom (no Face) -- 幻影(顔なし) 40 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/FaceRangeParam.txt: -------------------------------------------------------------------------------- 1 | 1 Range Minimum Value -- 範囲最小値 2 | 2 Range Maximum Value -- 範囲最大値 3 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/FootSfxParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/FootSfxParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/GameProgressParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/GameProgressParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/GemCategoryParam.txt: -------------------------------------------------------------------------------- 1 | 0 Nothing is absorbed. -- なにもおこらない 2 | 1 Attack system -- 攻撃系 3 | 2 Recovery system -- 回復系 4 | 3 Status system -- ステータス系 5 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/GemDropDopingParam.txt: -------------------------------------------------------------------------------- 1 | 0 Nothing is absorbed. -- なにもおこらない 2 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/GemDropModifyParam.txt: -------------------------------------------------------------------------------- 1 | 0 Nothing is absorbed. -- なにもおこらない 2 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/GemGenParam.txt: -------------------------------------------------------------------------------- 1 | 0 Sweet Ishikoro -- あまいいしころ 2 | 1 Increased attack power and defensive power -- 攻撃力アップ & 防御力アップ 3 | 2 HP Regen -- HPリジェネ 4 | 3 Max HP up -- マックスHPアップ 5 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/GemeffectParam.txt: -------------------------------------------------------------------------------- 1 | 0 Nothing is absorbed. -- なにもおこらない 2 | 1 Increased attack power -- 攻撃力アップ 3 | 2 Defense up -- 防御力アップ 4 | 3 HP Regen -- HPリジェネ 5 | 4 Max HP up -- マックスHPアップ 6 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/HPEstusFlaskRecoveryParam.txt: -------------------------------------------------------------------------------- 1 | 0 Host -- ホスト 2 | 1 Cooperation Pathway Clients -- 協力経路のクライアント 3 | 2 Intrusion Path Client -- 侵入経路のクライアント 4 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/HitEffectSeParam.txt: -------------------------------------------------------------------------------- 1 | 1 Cobblestone -- 石畳 2 | 2 Stone -- 石 3 | 3 Soil -- 土 4 | 4 Wood -- 木材 5 | 5 Grassland -- 草地 6 | 6 Gravel -- 砂利 7 | 7 Gaps -- 欠番 8 | 8 Trees -- 樹木 9 | 9 Swamp -- 沼 10 | 10 Nest -- 巣 11 | 11 Iron -- 鉄 12 | 12 Flesh -- 血肉 13 | 13 Sand -- 砂 14 | 14 Bone -- 骨 15 | 15 Ash -- 灰 16 | 16 Roof Tiles -- 屋根瓦 17 | 17 Cloth -- 布 18 | 18 Fallen leaves -- 落ち葉 19 | 19 Bell -- 鐘 20 | 20 Water (Puddle) -- 水(水溜り程度) 21 | 21 Water (ankle level) -- 水(足首程度) 22 | 22 Water (knee) -- 水(膝下) 23 | 23 Poison Swamp (shallow) -- 毒沼(浅い) 24 | 24 Poison Swamp (deep) -- 毒沼(深い) 25 | 25 Poison Swamp (knee) -- 毒沼(膝下) 26 | 26 Poison Swamp (about puddle) -- 毒沼(水溜まり程度) 27 | 27 Water (waist or more) -- 水(腰以上) 28 | 28 Carpet -- 絨毯 29 | 29 Without -- なし 30 | 30 Caries -- 蝕 31 | 31 God Grave Net -- 神墓ネット 32 | 50 Weapon Iron -- 武器鉄 33 | 51 Wax -- 蝋 34 | 52 Weapon tree -- 武器木 35 | 53 Weapon meat -- 武器肉 36 | 54 Shield Iron -- 盾鉄 37 | 55 Shield Tree -- 盾木 38 | 56 Iron -- 鉄 39 | 58 Armor Leather -- 鎧革 40 | 59 Meat (Live) -- 肉(生者) 41 | 60 Meat (raw) _ Weakness -- 肉(生者)_弱点 42 | 62 Heavy Iron -- 重鉄 43 | 63 Cloth -- 布 44 | 64 Humanity -- 人間性 45 | 65 Hair -- 毛 46 | 66 Soft Stone -- 石(軟) 47 | 67 Feathers -- 羽 48 | 68 Carrion -- 腐肉 49 | 69 Ash -- 灰 50 | 70 Lava -- 溶岩 51 | 71 Evil -- 死霊 52 | 72 Crystal -- 結晶 53 | 74 Bone -- 骨 54 | 75 Flame -- 炎 55 | 76 Rock -- 岩 56 | 77 Shield Stone -- 盾石 57 | 78 Tree -- 木 58 | 79 Heavy Iron Shield -- 盾重鉄 59 | 80 Ghost Enemy Black -- ゴースト敵ブラック 60 | 84 Drool -- よだれ 61 | 85 Ghost Enemy Black (for guard) -- ゴースト敵ブラック(ガード時用) 62 | 89 Without -- なし 63 | 90 Penetration -- 眼光 64 | 91 Caries -- 蝕 65 | 92 Maggots -- うじ 66 | 93 Charcoal -- 炭 67 | 94 Bugs -- 虫 68 | 95 Fluid -- 体液 69 | 98 Caries weakness -- 蝕_弱点 70 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/HitEffectSfxConceptParam.txt: -------------------------------------------------------------------------------- 1 | 1 Cobblestone -- 石畳 2 | 2 Stone -- 石 3 | 3 Soil -- 土 4 | 4 Wood -- 木材 5 | 5 Grassland -- 草地 6 | 6 Gravel -- 砂利 7 | 7 Gaps -- 欠番 8 | 8 Trees -- 樹木 9 | 9 Swamp -- 沼 10 | 10 Nest -- 巣 11 | 11 Iron -- 鉄 12 | 12 Flesh -- 血肉 13 | 13 Sand -- 砂 14 | 14 Bone -- 骨 15 | 15 Ash -- 灰 16 | 16 Roof Tiles -- 屋根瓦 17 | 17 Cloth -- 布 18 | 18 Fallen leaves -- 落ち葉 19 | 19 Bell -- 鐘 20 | 20 Water (Puddle) -- 水(水溜り程度) 21 | 21 Water (ankle level) -- 水(足首程度) 22 | 22 Water (knee) -- 水(膝下) 23 | 23 Poison Swamp (shallow) -- 毒沼(浅い) 24 | 24 Poison Swamp (deep) -- 毒沼(深い) 25 | 25 Poison Swamp (knee) -- 毒沼(膝下) 26 | 26 Poison Swamp (about puddle) -- 毒沼(水溜まり程度) 27 | 27 Water (waist or more) -- 水(腰以上) 28 | 28 Carpet -- 絨毯 29 | 29 Without -- なし 30 | 30 Caries -- 蝕 31 | 31 God Grave Net -- 神墓ネット 32 | 100 Weapon Iron -- 武器鉄 33 | 101 Wax -- 蝋 34 | 102 Weapon tree -- 武器木 35 | 103 Weapon meat -- 武器肉 36 | 104 Shield Iron -- 盾鉄 37 | 105 Shield Tree -- 盾木 38 | 106 Iron -- 鉄 39 | 107 Bugs -- 虫 40 | 108 Armor Leather -- 鎧革 41 | 109 Meat -- 肉 42 | 110 Flesh _ Weakness -- 肉_弱点 43 | 111 Dragon Meat -- 竜肉 44 | 112 Heavy Iron -- 重鉄 45 | 113 Cloth -- 布 46 | 114 Humanity -- 人間性 47 | 115 Hair -- 毛 48 | 116 Soft Stone -- 石(軟) 49 | 117 Feathers -- 羽 50 | 118 Carrion -- 腐肉 51 | 119 Ash -- 灰 52 | 120 Lava -- 溶岩 53 | 121 Evil -- 死霊 54 | 122 Crystal -- 結晶 55 | 123 Liquid -- 液体 56 | 124 Bone -- 骨 57 | 125 Flame -- 炎 58 | 126 Rock -- 岩 59 | 127 Shield Stone -- 盾石 60 | 128 Tree -- 木 61 | 129 Heavy Iron Shield -- 盾重鉄 62 | 130 Ghost White -- ゴーストホワイト 63 | 131 Ghost Black -- ゴーストブラック 64 | 132 Ghost Enemy White -- ゴースト敵ホワイト 65 | 133 Ghost Enemy Black -- ゴースト敵ブラック 66 | 134 Drool -- よだれ 67 | 135 Ghost White (for guard) -- ゴーストホワイト(ガード時用) 68 | 136 Ghost Black (for guard) -- ゴーストブラック(ガード時用) 69 | 137 Ghost Enemy White (for guard) -- ゴースト敵ホワイト(ガード時用) 70 | 138 Ghost Enemy Black (for guard) -- ゴースト敵ブラック(ガード時用) 71 | 139 Without -- なし 72 | 140 Penetration -- 眼光 73 | 141 Caries -- 蝕 74 | 142 Maggots -- 蛆 75 | 143 Charcoal -- 炭 76 | 144 Gaps -- 欠番 77 | 145 Fluid -- 体液 78 | 146 Meat (Live) -- 肉(生者) 79 | 147 Meat (raw) _ Weakness -- 肉(生者)_弱点 80 | 148 Caries weakness -- 蝕_弱点 81 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/HitMtrlParam.txt: -------------------------------------------------------------------------------- 1 | 0 Dummy -- ダミー 2 | 1 Cobblestone -- 石畳 3 | 2 Stone -- 石 4 | 3 Soil -- 土 5 | 4 Wood -- 木材 6 | 5 Grassland -- 草地 7 | 6 Gravel -- 砂利 8 | 7 Gaps -- 欠番 9 | 8 Trees -- 樹木 10 | 9 Swamp -- 沼 11 | 10 Nest -- 巣 12 | 11 Iron -- 鉄 13 | 12 Flesh -- 血肉 14 | 13 Sand -- 砂 15 | 14 Bone -- 骨 16 | 15 Ash -- 灰 17 | 16 Roof Tiles -- 屋根瓦 18 | 17 Cloth -- 布 19 | 18 Fallen leaves -- 落ち葉 20 | 19 Bell -- 鐘 21 | 20 Water (Puddle) -- 水(水溜り程度) 22 | 21 Water (ankle level) -- 水(足首程度) 23 | 22 Water (knee) -- 水(膝下) 24 | 23 Poison Swamp (shallow) -- 毒沼(浅い) 25 | 24 Poison Swamp (deep) -- 毒沼(深い) 26 | 25 Poison Swamp (knee) -- 毒沼(膝下) 27 | 26 Poison Swamp (about puddle) -- 毒沼(水溜まり程度) 28 | 27 Water (waist or more) -- 水(腰以上) 29 | 28 Carpet -- 絨毯 30 | 29 Without -- なし 31 | 30 Caries -- 蝕 32 | 31 God Grave Net -- 神墓ネット 33 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/KnockBackParam.txt: -------------------------------------------------------------------------------- 1 | 0 Generic -- 汎用 2 | 1 For PC -- PC用 3 | 10 Enemy generic Old -- 敵汎用old 4 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/KnowledgeLoadScreenItemParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/KnowledgeLoadScreenItemParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/LoadBalancerDrawDistScaleParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/LoadBalancerDrawDistScaleParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/LoadBalancerParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/LoadBalancerParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/LodParam.txt: -------------------------------------------------------------------------------- 1 | 0 Default settings -- デフォルト設定 2 | 1 L0 Main -- L0メイン 3 | 2 L1 Main -- L1メイン 4 | 3 Not LOD -- LODしない 5 | 4 Testparm -- testparm 6 | 10 Small size -- サイズ小 7 | 11 Medium size -- サイズ中 8 | 12 Large size -- サイズ大 9 | 13 Size Oversized -- サイズ特大 10 | 19 Don't switch to LOD models -- LODモデルに切り替わらない 11 | 20 Lake Beast -- 湖獣 12 | 60 Not switch to low texture -- lowテクスチャに切り替わらない 13 | 61 Not switch to the low texture that does not switch to the LOD model -- LODモデルに切り替わらない lowテクスチャに切り替わらない 14 | 62 L2 only (Reflection scene default) -- L2のみ(反射シーンデフォルト) 15 | 63 Do not switch to LOD model (for poly play) -- LODモデルに切り替わらない(ポリ劇用) 16 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/LodParam_ps4.txt: -------------------------------------------------------------------------------- 1 | 0 Default settings -- デフォルト設定 2 | 1 L0 Main -- L0メイン 3 | 2 L1 Main -- L1メイン 4 | 3 Not LOD -- LODしない 5 | 4 Testparm -- testparm 6 | 10 Small size -- サイズ小 7 | 11 Medium size -- サイズ中 8 | 12 Large size -- サイズ大 9 | 13 Size Oversized -- サイズ特大 10 | 19 Don't switch to LOD models -- LODモデルに切り替わらない 11 | 20 Lake Beast -- 湖獣 12 | 60 Not switch to low texture -- lowテクスチャに切り替わらない 13 | 61 Not switch to the low texture that does not switch to the LOD model -- LODモデルに切り替わらない lowテクスチャに切り替わらない 14 | 62 L2 only (Reflection scene default) -- L2のみ(反射シーンデフォルト) 15 | 63 Do not switch to LOD model (for poly play) -- LODモデルに切り替わらない(ポリ劇用) 16 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/LodParam_xb1.txt: -------------------------------------------------------------------------------- 1 | 0 Default settings -- デフォルト設定 2 | 1 L0 Main -- L0メイン 3 | 2 L1 Main -- L1メイン 4 | 3 Not LOD -- LODしない 5 | 4 Testparm -- testparm 6 | 10 Small size -- サイズ小 7 | 11 Medium size -- サイズ中 8 | 12 Large size -- サイズ大 9 | 13 Size Oversized -- サイズ特大 10 | 19 Don't switch to LOD models -- LODモデルに切り替わらない 11 | 20 Lake Beast -- 湖獣 12 | 60 Not switch to low texture -- lowテクスチャに切り替わらない 13 | 61 Not switch to the low texture that does not switch to the LOD model -- LODモデルに切り替わらない lowテクスチャに切り替わらない 14 | 62 L2 only (Reflection scene default) -- L2のみ(反射シーンデフォルト) 15 | 63 Do not switch to LOD model (for poly play) -- LODモデルに切り替わらない(ポリ劇用) 16 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MPEstusFlaskRecoveryParam.txt: -------------------------------------------------------------------------------- 1 | 0 Host -- ホスト 2 | 1 Cooperation Pathway Clients -- 協力経路のクライアント 3 | 2 Intrusion Path Client -- 侵入経路のクライアント 4 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MapMimicryEstablishmentParam.txt: -------------------------------------------------------------------------------- 1 | 0 Do not erase -- 消すべからず 2 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MenuOffscrRendParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/MenuOffscrRendParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/MenuPropertyLayoutParam.txt: -------------------------------------------------------------------------------- 1 | 1000 Detail status: Normal item -- 詳細ステータス:通常アイテム 2 | 1006 Detail status: Normal item: Termination -- 詳細ステータス:通常アイテム:終端 3 | 2000 Detail status: Weapons: Others -- 詳細ステータス:武器:その他 4 | 2059 Detail Status: Weapon: Other: termination -- 詳細ステータス:武器:その他:終端 5 | 4000 Detail Status: Armor -- 詳細ステータス:防具 6 | 4023 Detail Status: Armor: Termination -- 詳細ステータス:防具:終端 7 | 5000 Detail Status: Spelling -- 詳細ステータス:スペル 8 | 5011 Detail status: spelling: Terminating -- 詳細ステータス:スペル:終端 9 | 6000 Detail status: Arrow, Bolt -- 詳細ステータス:矢、ボルト 10 | 6022 Detail status: Arrow, Bolt: termination -- 詳細ステータス:矢、ボルト:終端 11 | 10000 Player Status: First page -- プレイヤーステータス:1ページ目 12 | 10024 Player Status: First page: End -- プレイヤーステータス:1ページ目:終端 13 | 11000 Player Status: Second page -- プレイヤーステータス:2ページ目 14 | 11033 Player Status: second page: termination -- プレイヤーステータス:2ページ目:終端 15 | 15000 Status: Second page (player info) -- ステータス:2ページ目(プレイヤー情報) 16 | 15006 Status: Second page: termination -- ステータス:2ページ目:終端 17 | 16000 Status: First page (player status) -- ステータス:1ページ目(プレイヤーステータス) 18 | 16043 Status: first page: termination -- ステータス:1ページ目:終端 19 | 20000 Inventory: Top -- インベントリ:上部 20 | 20100 Shop: Top -- ショップ:上部 21 | 20200 Shop For Sale: Top -- 売却ショップ:上部 22 | 20900 Other item selection system: Top -- その他アイテム選択系:上部 23 | 30000 Level Up Left -- レベルアップ左側 24 | 30015 Level Up left: End -- レベルアップ左側:終端 25 | 31000 Level Up Right -- レベルアップ右側 26 | 31031 Level Up right: End -- レベルアップ右側:終端 27 | 40000 Character make top: Top -- キャラメイクトップ:上部 28 | 40005 Character make top: Bottom -- キャラメイクトップ:下部 29 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MenuValueTableParam.txt: -------------------------------------------------------------------------------- 1 | 100 A table that converts a number to an e-s character -- 数値をE~Sの文字へ変換するテーブル 2 | 110 Pledge -- 誓約 3 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MultiHPEstusFlaskBonusParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/MultiHPEstusFlaskBonusParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/MultiMPEstusFlaskBonusParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/MultiMPEstusFlaskBonusParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/MultiPlayCorrectionParam.txt: -------------------------------------------------------------------------------- 1 | 0 Do not erase -- 消すべからず 2 | 10 Test Data 2 -- テストデータ2 3 | 100 Super Ability -- ザコ 4 | 200 Formidable -- 強敵 5 | 300 Boss -- ボス 6 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/MultiSoulBonusRateParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/MultiSoulBonusRateParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/NetworkAreaParam.txt: -------------------------------------------------------------------------------- 1 | 0 Default (delete not allowed) -- デフォルト(削除禁止) 2 | 300000 Ojo of caries 1 -- 蝕の王城1 3 | 310000 City of Towers -- 塔の街 4 | 320000 The Bridge of Flying Dragon -- 飛竜の橋 5 | 330000 Poison Swamp Forest -- 毒沼の森 6 | 341000 Ojo of caries 3 -- 蝕の王城3 7 | 350000 Cathedral Church -- 聖堂教会 8 | 370000 Anole ruins -- アノール遺跡 9 | 380000 Dungeon -- ダンジョン 10 | 390000 Dungeon -- 地下牢 11 | 400000 Base -- 拠点 12 | 981000 Multi-Play Test map -- マルチプレイテストマップ 13 | 991000 Old multi-play test map -- 旧マルチプレイテストマップ 14 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/NetworkMsgParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/NetworkMsgParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/NetworkParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/NetworkParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/NewMenuColorTableParam.txt: -------------------------------------------------------------------------------- 1 | 0 Chara Makeup: ○ ○ -- キャラメイク:○○用 2 | 100 Character Makeover: White for skin -- キャラメイク:肌用 白人 3 | 105 Black -- 黒人 4 | 110 Yellow people -- 黄人 5 | 115 India -- インド 6 | 120 Ruddy -- 赤ら顔 7 | 125 Shing -- 鈍色 8 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/NpcAiActionParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/NpcAiActionParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/ObjectMaterialSfxParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/ObjectMaterialSfxParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/PlayRegionParam.txt: -------------------------------------------------------------------------------- 1 | 0 Invalid data (no deletion) -- 無効データ(削除禁止) 2 | 300001 Ojo 1_01 -- 王城1_01 3 | 300002 Ojo 1_02 -- 王城1_02 4 | 300003 Ojo 1_03 -- 王城1_03 5 | 300004 Ojo 1_04 -- 王城1_04 6 | 300006 Ojo 1_06 -- 王城1_06 7 | 300007 Ojo 1_07 -- 王城1_07 8 | 300008 Ojo 1_08 -- 王城1_08 9 | 300009 Ojo 1_09 -- 王城1_09 10 | 300020 Ojo 1_20 -- 王城1_20 11 | 300021 Ojo 1_21 -- 王城1_21 12 | 300022 Ojo 1_22 -- 王城1_22 13 | 300023 Ojo 1_24 -- 王城1_24 14 | 300024 Ojo 1_25 -- 王城1_25 15 | 301000 Ojo 2_00 -- 王城2_00 16 | 301001 Ojo 2_01 -- 王城2_01 17 | 301002 Ojo 2_02 -- 王城2_02 18 | 301003 Ojo 2_03 -- 王城2_03 19 | 301010 Ojo 2_10 -- 王城2_10 20 | 301011 Ojo 2_11 -- 王城2_11 21 | 310000 _00 City of the tower -- 塔の街_00 22 | 310001 _01 City of the tower -- 塔の街_01 23 | 310002 _02 City of the tower -- 塔の街_02 24 | 310003 _03 City of the tower -- 塔の街_03 25 | 310004 _04 City of the tower -- 塔の街_04 26 | 310020 _20 City of the tower -- 塔の街_20 27 | 310021 _21 City of the tower -- 塔の街_21 28 | 320001 Bridge _01 -- 橋_01 29 | 320002 Bridge _02 -- 橋_02 30 | 320010 Bridge _10 -- 橋_10 31 | 320011 Bridge _11 -- 橋_11 32 | 330001 Poison Swamp forest _01 -- 毒沼の森_01 33 | 330002 Poison Swamp forest _02 -- 毒沼の森_02 34 | 341000 Ojo 3_00 -- 王城3_00 35 | 341001 Ojo 3_01 -- 王城3_01 36 | 341002 Ojo 3_02 -- 王城3_02 37 | 341003 Ojo 3_03 -- 王城3_03 38 | 341010 Ojo 3_10 -- 王城3_10 39 | 341011 Ojo 3_11 -- 王城3_11 40 | 350001 Basilica Church _01 -- 聖堂教会_01 41 | 350002 Basilica Church _02 -- 聖堂教会_02 42 | 350003 Basilica Church _03 -- 聖堂教会_03 43 | 360001 God Grave _01 -- 神墓_01 44 | 360002 God Grave _02 -- 神墓_02 45 | 360003 God Grave _03 -- 神墓_03 46 | 370001 Anole Ruins _01 -- アノール遺跡_01 47 | 370002 Anole Ruins _02 -- アノール遺跡_02 48 | 370003 Anole Ruins _03 -- アノール遺跡_03 49 | 380001 Dungeon _01 -- ダンジョン_01 50 | 380002 Dungeon _02 -- ダンジョン_02 51 | 380003 Dungeon _03 -- ダンジョン_03 52 | 390001 Dungeon _01 -- 地下牢_01 53 | 390002 Dungeon _02 -- 地下牢_02 54 | 390003 Dungeon _03 -- 地下牢_03 55 | 400001 Base _01 -- 拠点_01 56 | 400002 Base _02 -- 拠点_02 57 | 981001 Test Map _01 -- テストマップ_01 58 | 981002 Test Map _02 -- テストマップ_02 59 | 981003 Test Map _03 -- テストマップ_03 60 | 981004 Test Map _04 -- テストマップ_04 61 | 981005 Test Map _05 -- テストマップ_05 62 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/ProtectorGenParam.txt: -------------------------------------------------------------------------------- 1 | 0 The Impossible -- ぬのきれ 2 | 770000 [Proto] Hunter _ head _ New joint -- 【プロト】ハンター_頭_新関節 3 | 771000 [Proto] Hunter _ torso _ New Joint -- 【プロト】ハンター_胴_新関節 4 | 772000 [Proto] Hunter _ arms _ New Joints -- 【プロト】ハンター_腕_新関節 5 | 773000 [Proto] Hunter _ leg _ New joint -- 【プロト】ハンター_脚_新関節 6 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/RagdollParam.txt: -------------------------------------------------------------------------------- 1 | 0 Move -- 動かない 2 | 1 Havok Default Value -- Havokのデフォルト値 3 | 1000 Segunda: The Evil Spirits -- グンダ:邪霊 4 | 1001 Segunda Ragdoll Test 2 -- グンダのラグドールテスト2 5 | 1100 Snake Spirit: Right arm -- 蛇霊:右腕 6 | 1101 Snake Spirit: Left arm -- 蛇霊:左腕 7 | 1102 Snake Spirit: small feet -- 蛇霊:小足 8 | 1103 Snake Spirit: Tail root -- 蛇霊:尻尾付け根 9 | 1104 Snake Spirit: Tail tip -- 蛇霊:尻尾先端 10 | 1105 Snake Spirit: Head -- 蛇霊:頭 11 | 1106 Snake Spirit: Neck -- 蛇霊:首 12 | 1201 King of the Dead: Crown -- 死霊の王:王冠 13 | 1202 King of the Dead: torso -- 死霊の王:胴体 14 | 1203 King of the dead: right arm -- 死霊の王:右腕 15 | 1204 King of the dead: left arm -- 死霊の王:左腕 16 | 1206 King of the Dead: Head -- 死霊の王:頭 17 | 1301 Mad Warrior Hallec: Head -- 狂戦士ハレック:頭 18 | 1302 Mad Warrior Hallec: Torso -- 狂戦士ハレック:胴 19 | 1303 Mad Warrior Hallec: left arm -- 狂戦士ハレック:左腕 20 | 1304 Mad Warrior Hallec: right arm -- 狂戦士ハレック:右腕 21 | 1305 Mad Warrior Hallec: Left Shin -- 狂戦士ハレック:左脛 22 | 1306 Mad Warrior Hallec: Right Shin -- 狂戦士ハレック:右脛 23 | 1307 Mad Warrior Hallec: right hand weapon -- 狂戦士ハレック:右手武器 24 | 1401 Dead Slug (dumpling): Dead dumpling -- 蝕のナメクジ(亡者団子):亡者団子 25 | 1500 Hell Kite: twines in the legs -- ヘルカイト:脚に絡みつく蝕 26 | 1501 Hell Kite: Before your left ankle -- ヘルカイト:左足の足首より先 27 | 1600 Golem: Iron Ball -- ゴーレム:鉄球 28 | 9999 Dummy -- ダミー 29 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/ReinforceParamProtector.txt: -------------------------------------------------------------------------------- 1 | 0 Usually -- 通常 2 | 1 Normal + 1 -- 通常+1 3 | 2 Normal + 2 -- 通常+2 4 | 3 usually + 3 -- 通常+3 5 | 4 usually + 4 -- 通常+4 6 | 5 Normal + 5 -- 通常+5 7 | 6 usually + 6 -- 通常+6 8 | 7 usually + 7 -- 通常+7 9 | 8 usually + 8 -- 通常+8 10 | 9 usually + 9 -- 通常+9 11 | 10 Normal + 10 -- 通常+10 12 | 100 Special -- 特殊 13 | 101 Special + 1 -- 特殊+1 14 | 102 Special + 2 -- 特殊+2 15 | 103 Special + 3 -- 特殊+3 16 | 104 Special + 4 -- 特殊+4 17 | 105 Special + 5 -- 特殊+5 18 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/RoleParam.txt: -------------------------------------------------------------------------------- 1 | 0 Survival player -- 生存プレイヤ 2 | 1 White Ghost -- 白ゴースト 3 | 2 Black Ghost -- 黒ゴースト 4 | 3 Wandering -- 徘徊 5 | 4 Wandering NPC -- 徘徊NPC 6 | 5 Normal enemy -- 通常敵 7 | 6 Animal enemies -- 動物敵 8 | 7 Boss Enemy -- ボス敵 9 | 8 Grey Ghost -- グレイゴースト 10 | 9 Npc -- NPC 11 | 10 Replay -- リプレイ 12 | 11 Display -- 表示 13 | 12 Intruders -- 侵入者 14 | 13 For the Arena -- 闘技場用 15 | 10001 White Ghost (Red Hunt white pledge) -- 白ゴースト(赤狩り白誓約) 16 | 10002 Black Ghost (Red Hunt white pledge) -- 黒ゴースト(赤狩り白誓約) 17 | 20001 White Ghost (Sun Pledge) -- 白ゴースト(太陽誓約) 18 | 20002 Black Ghost (Sun Pledge) -- 黒ゴースト(太陽誓約) 19 | 30001 White Ghost (Berserker Pledge) -- 白ゴースト(バーサーカー誓約) 20 | 30002 Black Ghost (Berserker Pledge) -- 黒ゴースト(バーサーカー誓約) 21 | 40001 White Ghost (Sinner Hero Pledge) -- 白ゴースト(罪人英雄誓約) 22 | 40002 Black Ghost (Sinner Hero Pledge) -- 黒ゴースト(罪人英雄誓約) 23 | 50001 White Ghost (Boss Guardian Pledge (Rosalia)) -- 白ゴースト(ボス守護者誓約(ロザリア)) 24 | 50002 Black Ghost (Boss Guardian Pledge (Rosalia)) -- 黒ゴースト(ボス守護者誓約(ロザリア)) 25 | 60001 White Ghost (Map Guardian pledge (bridge)) -- 白ゴースト(マップ守護者誓約(橋)) 26 | 60002 Black Ghost (Map Guardian pledge (bridge)) -- 黒ゴースト(マップ守護者誓約(橋)) 27 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/SeMaterialConvertParam.txt: -------------------------------------------------------------------------------- 1 | 1 Cobblestone -- 石畳 2 | 2 Stone -- 石 3 | 3 Soil -- 土 4 | 4 Wood -- 木材 5 | 5 Grassland -- 草地 6 | 6 Gravel -- 砂利 7 | 8 Trees -- 樹木 8 | 9 Swamp -- 沼 9 | 10 Nest -- 巣 10 | 11 Iron -- 鉄 11 | 12 Flesh -- 血肉 12 | 13 Sand -- 砂 13 | 14 Bone -- 骨 14 | 15 Ash -- 灰 15 | 16 Roof Tiles -- 屋根瓦 16 | 17 Cloth -- 布 17 | 18 Fallen leaves -- 落ち葉 18 | 19 Bell -- 鐘 19 | 20 Water (Puddle) -- 水(水溜り程度) 20 | 21 Water (ankle level) -- 水(足首程度) 21 | 22 Water (knee) -- 水(膝下) 22 | 23 Poison Swamp (shallow) -- 毒沼(浅い) 23 | 24 Poison Swamp (deep) -- 毒沼(深い) 24 | 25 Poison Swamp (knee) -- 毒沼(膝下) 25 | 26 Poison Swamp (about puddle) -- 毒沼(水溜まり程度) 26 | 27 Water (waist or more) -- 水(腰以上) 27 | 28 Carpet -- 絨毯 28 | 29 Without -- なし 29 | 30 Caries -- 蝕 30 | 31 God Grave Net -- 神墓ネット 31 | 100 Weapon Iron -- 武器鉄 32 | 101 Wax -- 蝋 33 | 102 Weapon tree -- 武器木 34 | 103 Weapon meat -- 武器肉 35 | 104 Shield Iron -- 盾鉄 36 | 105 Shield Tree -- 盾木 37 | 106 Iron -- 鉄 38 | 107 Bugs -- 虫 39 | 108 Armor Leather -- 鎧革 40 | 109 Meat -- 肉 41 | 110 Flesh _ Weakness -- 肉_弱点 42 | 111 Dragon Meat -- 竜肉 43 | 112 Heavy Iron -- 重鉄 44 | 113 Cloth -- 布 45 | 114 Humanity -- 人間性 46 | 115 Hair -- 毛 47 | 116 Soft Stone -- 石(軟) 48 | 117 Feathers -- 羽 49 | 118 Carrion -- 腐肉 50 | 119 Ash -- 灰 51 | 120 Lava -- 溶岩 52 | 121 Evil -- 死霊 53 | 122 Crystal -- 結晶 54 | 123 Liquid -- 液体 55 | 124 Bone -- 骨 56 | 125 Flame -- 炎 57 | 126 Rock -- 岩 58 | 127 Shield Stone -- 盾石 59 | 128 Tree -- 木 60 | 129 Heavy Iron Shield -- 盾重鉄 61 | 130 Ghost White -- ゴーストホワイト 62 | 131 Ghost Black -- ゴーストブラック 63 | 132 Ghost Enemy White -- ゴースト敵ホワイト 64 | 133 Ghost Enemy Black -- ゴースト敵ブラック 65 | 134 Drool -- よだれ 66 | 135 Ghost White (for guard) -- ゴーストホワイト(ガード時用) 67 | 136 Ghost Black (for guard) -- ゴーストブラック(ガード時用) 68 | 137 Ghost Enemy White (for guard) -- ゴースト敵ホワイト(ガード時用) 69 | 138 Ghost Enemy Black (for guard) -- ゴースト敵ブラック(ガード時用) 70 | 139 Without -- なし 71 | 140 Penetration -- 眼光 72 | 141 Caries -- 蝕 73 | 142 Maggots -- 蛆 74 | 143 Charcoal -- 炭 75 | 144 Kusari Katabira -- くさりかたびら 76 | 145 Fluid -- 体液 77 | 146 Meat (Live) -- 肉(生者) 78 | 147 Meat (raw) _ Weakness -- 肉(生者)_弱点 79 | 148 Caries weakness -- 蝕_弱点 80 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/SkeletonParam.txt: -------------------------------------------------------------------------------- 1 | 0 Move -- 動かない 2 | 1 NPC Common Neck -- NPC共通 首 3 | 2 NPC Common Body 1 -- NPC共通 胴1 4 | 3 NPC Common Body 2 -- NPC共通 胴2 5 | 10 Human-type general-purpose left foot -- 人型汎用左足 6 | 11 Human-type universal right foot -- 人型汎用右足 7 | 18 Copy _ Test Right leg -- コピー_テスト右脚 8 | 19 Copy _ Test left leg -- コピー_テスト左脚 9 | 100 Heroine -- ヒロイン 10 | 200 Vips -- 要人 11 | 300 Blacksmith Edo -- 鍛冶屋江戸 12 | 400 Slave soldier -- 奴隷兵士 13 | 500 Ex-noble lady -- 元貴族婦人 14 | 600 Puppet use -- 人形使い 15 | 700 Beggar Woman -- 乞食女 16 | 800 Baldwin -- ボールドウィン 17 | 900 Beggar Man -- 乞食男 18 | 998 Copy _ old general-purpose left foot -- コピー_旧汎用左足 19 | 999 Copy _ old-purpose right foot -- コピー_旧汎用右足 20 | 1000 Hounds -- 猟犬_ 21 | 1001 Hounds -- 猟犬_ 22 | 1002 Hounds -- 猟犬_ 23 | 1003 Hounds -- 猟犬_ 24 | 1010 Priest _ Left Foot -- 司祭_左足 25 | 1011 Priest _ Right foot -- 司祭_右足 26 | 1022 Crowd A_ set neck shake -- 群衆A_首振り設定 27 | 1030 B_ crowd left foot -- 群衆B_左足 28 | 1031 Crowd b_ right foot -- 群衆B_右足 29 | 2000 Mucademon right foot -- ムカデーモン右足 30 | 2001 Mucademon left Foot -- ムカデーモン左足 31 | 2010 Gargoyle Right Foot -- ガーゴイル右足 32 | 2011 Gargoyle left Foot -- ガーゴイル左足 33 | 2020 Iron Golem Right Foot -- アイアンゴーレム右足 34 | 2021 Iron Golem left Foot -- アイアンゴーレム左足 35 | 2022 Iron Golem Right Hand -- アイアンゴーレム右手 36 | 2030 Hammer Demon left Foot -- ハンマーデーモン左足 37 | 2031 Hammer Daemon Right foot -- ハンマーデーモン右足 38 | 3004 Thaiwand Foot ⑤ -- クラグ足⑤ 39 | 3005 Thaiwand Foot ⑥ -- クラグ足⑥ 40 | 3100 Thaiwand Foot ⑦ -- クラグ足⑦ 41 | 3101 Thaiwand Foot ⑧ -- クラグ足⑧ 42 | 3102 Thaiwand Foot ⑨ -- クラグ足⑨ 43 | 3103 Thaiwand Foot ⑩ -- クラグ足⑩ 44 | 3104 Thaiwand Foot ⑪ -- クラグ足⑪ 45 | 3105 Thaiwand Foot ⑫ -- クラグ足⑫ 46 | 3106 Thaiwand Foot ⑬ -- クラグ足⑬ 47 | 5010 Beast of flames _ left leg -- 炎の獣_左前脚 48 | 5011 Beast of flames _ right legs -- 炎の獣_右前脚 49 | 5012 The Beast in flames _ left leg -- 炎の獣_左後脚 50 | 5013 Beast of flames _ right after leg -- 炎の獣_右後脚 51 | 5014 Beast of flames _ neck shaking _ head -- 炎の獣_首振り_頭 52 | 5015 Fire Beast _ Neck Swing _ Neck 1 -- 炎の獣_首振り_首1 53 | 5016 Fire Beast _ Neck Shaking _ Neck 2 -- 炎の獣_首振り_首2 54 | 5017 Fire Beast _ Neck Shaking _ neck 3 -- 炎の獣_首振り_首3 55 | 5018 Fire Beast _ Neck Swing _ Neck 4 -- 炎の獣_首振り_首4 56 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/TalkParam.txt: -------------------------------------------------------------------------------- 1 | 22000000 It's a blade of God. -- 神の姿に刃するものよ 2 | 22000001 My name is Gwindlin. -- 我が名はグウィンドリン 3 | 22000002 Thy profane shall never be forgiven. -- 汝の不敬は、決して許されるものではない 4 | 22000003 The night of Anole Rondo is good. -- アノール・ロンドの夜に果てるがよい 5 | 22000100 A profane person... -- 不敬者が… 6 | 22000101 Not only the appearance of the princess, Susu to the grave of the great... -- 王女の姿のみならず、大王の墓所まで穢すとは… 7 | 22000102 In the shade of the sun, in the name of Gwindlin -- 陰の太陽、グウィンドリンの名において 8 | 22000103 Never think you'll be forgiven! -- 決して、許されるものと思うなよ! 9 | 22000200 The profane who was born in the dark... -- 闇に生まれた不敬者が… 10 | 22000201 To you, The Curse of eternity... -- 貴様に、永遠の呪いを… 11 | 22000300 Stop. -- 止まりなさい 12 | 22000301 Beyond this, the tomb of the Great Gwin -- これより先は、大王グウィンの墓所 13 | 22000302 No one is allowed to Susu this. -- 何人であれ、これを穢すことは許されない 14 | 22000500 Good went back. The Sword of the Dark Moon. -- よくぞ戻った。暗月の剣よ 15 | 22000600 Good, dark Moon sword. -- よいだろう、暗月の剣よ 16 | 22000800 The stupid... -- 愚かな… 17 | 22000900 The sun in the shadows. -- 陰の太陽の信徒よ 18 | 22000901 Good came here and heard my voice -- よくぞここに至り、我の声を聞いた 19 | 22000902 Thou shalt be my pledge and be a sword to hunt the enemies of God. -- 汝、我の誓約者となり神の敵を狩る剣となる 20 | 22000903 The shadow of my father Gwin and elder sister Gwynevia -- 我が父グウィンと、姉グウィネヴィアの陰となり 21 | 22000904 If you are prepared to be a sword to hunt the enemies of God -- 神の敵を狩る、剣となる覚悟があるならば 22 | 22001000 May Then thou shall be the Sword of the Dark Moon. -- よろしい。ならば、汝はこれより暗月の剣となる 23 | 22001001 The shadow of the sun, the power of the Dark Moon, will hunt the enemy of God. -- 陰の太陽、暗月の力もて、神の敵を狩るがよい 24 | 22001100 That's good. -- それもよい 25 | 22001101 But then we intersect. -- だが、ならば我らは交わらぬ 26 | 22001102 Leave here and do thy work. -- ここを去り、汝のつとめを果たすがよい 27 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/ThrowDirectionSfxParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/ThrowDirectionSfxParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/ToughnessParam.txt: -------------------------------------------------------------------------------- 1 | 1 Generic parameters for enemies -- 敵用の汎用パラメータ 2 | 10 Generic: 1.0 x -- 汎用:1.0倍 3 | 15 Versatile: 1.5 x -- 汎用:1.5倍 4 | 20 Generic: 2.0 X -- 汎用:2.0倍 5 | 25 General Purpose: 2.5 x -- 汎用:2.5倍 6 | 30 Generic: 3.0 x -- 汎用:3.0倍 7 | 100 Attack: one hand: weak -- 攻撃:片手:弱 8 | 101 Attack: one hand: weak: Minimum warranty -- 攻撃:片手:弱:最低保障 9 | 110 Attack: one hand: Strong -- 攻撃:片手:強 10 | 111 Attack: one hand: strong: Minimum security -- 攻撃:片手:強:最低保障 11 | 120 Attack: one hand: Strong Max Infuser -- 攻撃:片手:強MAX溜め 12 | 121 Attack: one hand: Strong max Infuser: Minimum security -- 攻撃:片手:強MAX溜め:最低保障 13 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/UpperArmParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/UpperArmParam.txt -------------------------------------------------------------------------------- /dist/res/DS3/Names/WeaponGenParam.txt: -------------------------------------------------------------------------------- 1 | 0 Fushikure. -- ふしくれたえだ 2 | 90000 [Prototyping] Torches -- 【プロト用】松明 3 | 91000 [Prototyping] Orb -- 【プロト用】オーブ 4 | 201000 Long Sword -- ロングソード 5 | 1450000 Shield -- 盾 6 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/WepAbsorpPosParam.txt: -------------------------------------------------------------------------------- 1 | 0 Test -- test 2 | 1 Dmy -- dmy 3 | 2 Dmy -- dmy 4 | 3 Dmy -- dmy 5 | 4 Dmy -- dmy 6 | 5 Dmy -- dmy 7 | 6 Dmy -- dmy 8 | 7 Dmy -- dmy 9 | 8 Dmy -- dmy 10 | 9 Dmy -- dmy 11 | 10 Dmy -- dmy 12 | 11 Dmy -- dmy 13 | 12 Dmy -- dmy 14 | 13 Dmy -- dmy 15 | 14 Dmy -- dmy 16 | 15 Dmy -- dmy 17 | 16 Dmy -- dmy 18 | 17 Dmy -- dmy 19 | 18 Dmy -- dmy 20 | 19 Dmy -- dmy 21 | 20 Dagger (normal) -- 短剣(通常) 22 | 21 Dagger (piercing) -- 短剣(刺突) 23 | 22 Dagger (throwing) -- 短剣(投擲) 24 | 23 Straight Sword (normal) -- 直剣(通常) 25 | 24 Straight Sword -- 直剣(刺突) 26 | 25 Straight Sword (Large) -- 直剣(大型) 27 | 26 Straight Sword (huge) -- 直剣(巨大) 28 | 27 Piercing Swords (normal) -- 刺剣(通常) 29 | 28 Song Sword (normal) -- 曲剣(通常) 30 | 29 Song Sword (Sword) -- 曲剣(刀) 31 | 30 Axe (normal) -- 斧(通常) 32 | 31 Axe (throwing) -- 斧(投擲) 33 | 32 Axe (Large) -- 斧(大型) 34 | 33 Mallet (normal) -- 槌(通常) 35 | 34 Hammer (Piercing) -- 槌(刺突) 36 | 35 Mallet (Large) -- 槌(大型) 37 | 36 Spear (normal) -- 槍(通常) 38 | 37 Spear (throwing) -- 槍(投擲) 39 | 38 Rod-like (slashing) -- 竿状(斬撃) 40 | 39 Rod-like (puncture) -- 竿状(刺突) 41 | 40 Rod-like compound -- 竿状(複合) 42 | 41 Catalysts (normal) -- 触媒(通常) 43 | 42 Fist (normal) -- 拳(通常) 44 | 43 Fist (slashing) -- 拳(斬撃) 45 | 44 Bow (small) -- 弓(小型) 46 | 45 Large bow -- 弓(大型) 47 | 46 Crossbow (normal) -- 弩(通常) 48 | 47 Large Shield -- 盾(大型) 49 | 48 Shield (small) -- 盾(小型) 50 | 49 Torch (Proto) -- 松明(プロト) 51 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/WetAspectParam.txt: -------------------------------------------------------------------------------- 1 | 1 Water wet -- 水濡れ 2 | 2 Poison Wet -- 毒濡れ 3 | 3 Oil wet -- 油濡れ 4 | 4 Mud Stains -- 泥汚れ 5 | 5 Sand Dust -- 砂埃 6 | 6 Freezing -- 凍結 7 | 7 Covered with wax -- 蝋まみれ 8 | 8 Frostbite -- 凍傷 9 | 9 (Preliminary 1) -- (予備1) 10 | 10 (Preliminary 2) -- (予備2) 11 | 11 (Preliminary 3) -- (予備3) 12 | -------------------------------------------------------------------------------- /dist/res/DS3/Names/WhiteSignCoolTimeParam.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AmySouls/DS3RuntimeScripting/fe11f8982f2afeb587ed1fe220320a6bc2ec92c5/dist/res/DS3/Names/WhiteSignCoolTimeParam.txt -------------------------------------------------------------------------------- /ds3runtime/async_module.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "async_module.h" 9 | #include "ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | AsyncModule::AsyncModule() 14 | { 15 | } 16 | 17 | void AsyncModule::createThread(ScriptModule* asyncModule) 18 | { 19 | const uint64_t uniqueId = asyncModule->getUniqueId(); 20 | CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AsyncModule::entryPoint, (LPVOID)uniqueId, 0, NULL); 21 | } 22 | 23 | DWORD WINAPI AsyncModule::entryPoint(uint64_t scriptUniqueId) 24 | { 25 | ScriptModule* scriptModule = ds3runtime_global->accessScript(scriptUniqueId); 26 | if (scriptModule == nullptr) return 0; 27 | AsyncModule* asyncModule = (AsyncModule*)scriptModule; 28 | while (asyncModule != nullptr && !asyncModule->isRemoved()) asyncModule->execute(); 29 | return 0; 30 | } 31 | 32 | void AsyncModule::sleep(uint32_t milliseconds) 33 | { 34 | std::this_thread::sleep_for(std::chrono::milliseconds(milliseconds)); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /ds3runtime/async_module.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "script_module.h" 8 | 9 | namespace ds3runtime { 10 | 11 | class AsyncModule : public ScriptModule 12 | { 13 | public: 14 | AsyncModule(); 15 | 16 | static void createThread(ScriptModule* asyncModule); 17 | 18 | bool isAsync() 19 | { 20 | return true; 21 | } 22 | private: 23 | void sleep(uint32_t milliseconds); 24 | 25 | static DWORD WINAPI entryPoint(uint64_t scriptUniqueId); 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/boss/ariandar_boss.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "standard_player_boss.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class AriandarBoss : public StandardPlayerBoss 13 | { 14 | public: 15 | AriandarBoss(); 16 | 17 | bool onAttach(); 18 | 19 | bool onDetach(); 20 | 21 | std::string getName() 22 | { 23 | return "ariandar_boss"; 24 | } 25 | protected: 26 | void logic(); 27 | 28 | void checks(); 29 | private: 30 | }; 31 | 32 | } -------------------------------------------------------------------------------- /ds3runtime/boss/blight_combo_system.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/ds3runtime.h" 9 | #include "standard_combo_system.h" 10 | 11 | namespace ds3runtime::blight { 12 | 13 | class BlightComboSystem : public stdcombo::ComboSystem 14 | { 15 | public: 16 | BlightComboSystem(Boss* boss, std::string recoveryTaskId, int maxComboCharges, float comboChargesRegenRate); 17 | 18 | void install(); 19 | 20 | bool isExecutingComboChain(); 21 | 22 | float getComboCharges(); 23 | 24 | void setComboCharges(const float& comboCharges); 25 | 26 | int getMaxComboCharges(); 27 | 28 | void setMaxComboCharges(const int& maxComboCharges); 29 | 30 | float getComboChargeRegenRate(); 31 | 32 | void setComboChargeRegenRate(const float& comboChargeRegenRate); 33 | private: 34 | std::string lastTaskIdInChain; 35 | std::string recoveryTaskId; 36 | int maxComboCharges; 37 | float comboChargeRegenRate; 38 | float comboCharges; 39 | bool isInComboChain = false; 40 | }; 41 | 42 | } -------------------------------------------------------------------------------- /ds3runtime/boss/boss.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "boss.h" 4 | 5 | namespace ds3runtime { 6 | 7 | void Boss::execute() 8 | { 9 | checks(); 10 | logic(); 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /ds3runtime/boss/boss.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class Boss : public ScriptModule 14 | { 15 | public: 16 | void execute(); 17 | 18 | virtual std::optional getChrAddress() = 0; 19 | 20 | virtual std::optional getAnimationId() = 0; 21 | protected: 22 | virtual void logic() = 0; 23 | 24 | virtual void checks() = 0; 25 | }; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ds3runtime/boss/build_copy.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "standard_player_boss.h" 9 | #include "ds3runtime/game_packet.h" 10 | 11 | namespace ds3runtime { 12 | 13 | enum class TargetType { 14 | Host, 15 | Invader, 16 | SteamId, 17 | Arena 18 | }; 19 | 20 | class BuildCopy : public StandardPlayerBoss 21 | { 22 | public: 23 | bool onAttach(); 24 | 25 | bool onDetach(); 26 | 27 | std::string getName() 28 | { 29 | return "build_copy"; 30 | } 31 | protected: 32 | void logic(); 33 | 34 | void checks(); 35 | private: 36 | std::optional target; 37 | std::unordered_map targetGoods; 38 | std::unordered_map targetSpells; 39 | std::optional localPlayerStruct; 40 | std::optional targetPlayerStruct; 41 | TargetType targetType = TargetType::Host; 42 | std::optional targetSteamId; 43 | 44 | inline std::optional findNewTarget(); 45 | 46 | void updateAndCopyEquipment(); 47 | 48 | void copyPlayerData(); 49 | 50 | void tryAddSpell(const int32_t& magicId); 51 | 52 | void tryAddGood(const int32_t& goodId); 53 | 54 | void tryCopyGesture(); 55 | 56 | bool isPlayersLoaded(); 57 | }; 58 | 59 | } -------------------------------------------------------------------------------- /ds3runtime/databaseaddress.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "databaseaddress.h" 9 | 10 | namespace ds3runtime { 11 | 12 | } -------------------------------------------------------------------------------- /ds3runtime/databaseaddress.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers = Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | 9 | namespace ds3runtime { 10 | 11 | enum class DataBaseAddress : uintptr_t { 12 | GAME = 0x144740178, 13 | WorldChrMan = 0x144768E78, 14 | BaseC = 0x144743AB0, 15 | BaseD = 0x144743A80, 16 | FRPGNet = 0x14473FD08, 17 | SprjDebugEvent = 0x14473AD78, 18 | ServerIF = 0x144777FA8, 19 | PlayerNetworkSession = 0x14474CFF8, 20 | WorldChrManDbg = 0x144768F98, 21 | SoloParamRepository = 0x144782838, 22 | SprjEventFlagMan = 0x14473BE28, 23 | LOCK_TGT_MAN = 0x144766CA0, 24 | SprjSessionManager = 0x144780990, 25 | SprjBulletManager = 0x144772D78, 26 | SprjGaitem = 0x144775D58, 27 | SprjLuaEventConditionItem = 0x144752300, 28 | }; 29 | 30 | } -------------------------------------------------------------------------------- /ds3runtime/ds3_debug_variables.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "ds3_debug_variables.h" 4 | 5 | namespace ds3runtime { 6 | 7 | DS3DebugVariables::DS3DebugVariables() 8 | { 9 | } 10 | 11 | void DS3DebugVariables::setDebugAnimSpeedPlayer(bool value) 12 | { 13 | *accessMultilevelPointer(0x144768F85) = value; 14 | } 15 | 16 | void DS3DebugVariables::setDebugMovementMultiplier(bool value) 17 | { 18 | *accessMultilevelPointer(0x144768F87) = value; 19 | } 20 | 21 | void DS3DebugVariables::setGlobalMovementMultiplier(float value) 22 | { 23 | *accessMultilevelPointer(0x1405DFC5C) = value; 24 | } 25 | 26 | uint8_t DS3DebugVariables::getOverallBonfireLevel() const 27 | { 28 | return *accessMultilevelPointer(0x14454A228); 29 | } 30 | 31 | }; -------------------------------------------------------------------------------- /ds3runtime/ds3_debug_variables.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | */ 6 | 7 | #pragma once 8 | #include "pch.h" 9 | #include "memory_util.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class DS3DebugVariables 14 | { 15 | public: 16 | DS3DebugVariables(); 17 | 18 | void setDebugAnimSpeedPlayer(bool value); 19 | 20 | void setDebugMovementMultiplier(bool value); 21 | 22 | void setGlobalMovementMultiplier(float value); 23 | 24 | uint8_t getOverallBonfireLevel() const; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/equip_game_data.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "equip_inventory_data.h" 9 | 10 | namespace ds3runtime { 11 | 12 | enum class InventorySlot : uint32_t 13 | { 14 | PrimaryLeftWep = 0, 15 | PrimaryRightWep = 1, 16 | SecondaryLeftWep = 2, 17 | SecondaryRightWep = 3, 18 | TertiaryLeftWep = 4, 19 | TertiaryRightHand = 5, 20 | PrimaryArrow = 6, 21 | PrimaryBolt = 7, 22 | SecondaryArrow = 8, 23 | SecondaryBolt = 9, 24 | Head = 12, 25 | Chest = 13, 26 | Hands = 14, 27 | Legs = 15, 28 | Ring1 = 17, 29 | Ring2 = 18, 30 | Ring3 = 19, 31 | Ring4 = 20, 32 | Covenant = 21, 33 | }; 34 | 35 | enum class GoodsSlot : uint32_t 36 | { 37 | QuickItem1 = 0, 38 | QuickItem2 = 1, 39 | QuickItem3 = 2, 40 | QuickItem4 = 3, 41 | QuickItem5 = 4, 42 | QuickItem6 = 5, 43 | QuickItem7 = 6, 44 | QuickItem8 = 7, 45 | QuickItem9 = 8, 46 | QuickItem10 = 9, 47 | Toolbelt1 = 10, 48 | Toolbelt2 = 11, 49 | Toolbelt3 = 12, 50 | Toolbelt4 = 13, 51 | Toolbelt5 = 14, 52 | }; 53 | 54 | enum class ItemUniqueIdPrefix : uint32_t 55 | { 56 | Weapon = 0x80800000, 57 | Armor = 0x90800000, 58 | Accessory = 0xA0000000, 59 | Goods = 0xB0000000, 60 | }; 61 | 62 | class EquipGameData 63 | { 64 | public: 65 | EquipGameData(uintptr_t address); 66 | 67 | int32_t getInventoryItemIdBySlot(InventorySlot inventorySlot); 68 | 69 | int32_t getInventoryItemIdByQuickSlot(GoodsSlot goodsSlot); 70 | 71 | int32_t getInventoryItemIdByToolbeltSlot(GoodsSlot goodsSlot); 72 | 73 | void equipInventoryItem(InventorySlot inventorySlot, int32_t inventoryItemId); 74 | 75 | void equipGoodsInventoryItem(GoodsSlot goodsSlot, int32_t inventoryItemId); 76 | 77 | void modifyInventoryItemQuantity(int32_t inventoryItemId, int32_t quantityDelta); 78 | 79 | uintptr_t getEquipInventoryData(); 80 | private: 81 | uintptr_t address; 82 | }; 83 | 84 | } -------------------------------------------------------------------------------- /ds3runtime/equip_inventory_data.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "equip_inventory_data.h" 4 | #include "databaseaddress.h" 5 | #include 6 | #include "memory_util.h" 7 | 8 | namespace ds3runtime { 9 | 10 | EquipInventoryData::EquipInventoryData(uintptr_t address) 11 | { 12 | this->address = address; 13 | } 14 | 15 | void EquipInventoryData::discardInventoryItems(int32_t inventoryItemId, int32_t quantity) 16 | { 17 | void (*DiscardItems)(...); 18 | *(uintptr_t*)&DiscardItems = 0x140a28eb0; 19 | DiscardItems(address + 0x10, inventoryItemId); 20 | } 21 | 22 | void EquipInventoryData::addItem(ItemParamIdPrefix paramIdPrefix, int32_t paramId, uint32_t quantity, int32_t durability) 23 | { 24 | int32_t data[2] = {}; 25 | *(int32_t*)data = durability; 26 | void (*AddItem)(...); 27 | *(uintptr_t*)&AddItem = 0x14058aa20; 28 | AddItem(address, paramIdPrefix, paramId, quantity, data); 29 | } 30 | 31 | InventoryItem* EquipInventoryData::getInventoryItemById(int32_t inventoryItemId) 32 | { 33 | uintptr_t (*GetInventoryItem)(...); 34 | *(uintptr_t*)&GetInventoryItem = 0x14058cb30; 35 | return reinterpret_cast(GetInventoryItem(address, inventoryItemId)); 36 | } 37 | 38 | int32_t EquipInventoryData::getInventoryItemCount() 39 | { 40 | return *accessMultilevelPointer(address + 0x88) + 1; 41 | } 42 | 43 | } -------------------------------------------------------------------------------- /ds3runtime/equip_inventory_data.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | 9 | namespace ds3runtime { 10 | 11 | struct InventoryItem 12 | { 13 | int32_t uniqueId; 14 | int32_t giveId; 15 | uint32_t quantity; 16 | int32_t unknown1; 17 | }; 18 | 19 | enum class ItemParamIdPrefix : int32_t 20 | { 21 | Weapon = 0, 22 | Protector = 0x10000000, 23 | Accessory = 0x20000000, 24 | Goods = 0x40000000, 25 | }; 26 | 27 | class EquipInventoryData 28 | { 29 | public: 30 | EquipInventoryData(uintptr_t address); 31 | 32 | void discardInventoryItems(int32_t inventoryItemId, int32_t quantity); 33 | 34 | void addItem(ItemParamIdPrefix paramIdPrefix, int32_t paramId, uint32_t quantity, int32_t durability); 35 | 36 | InventoryItem* getInventoryItemById(int32_t inventoryItemId); 37 | 38 | int32_t getInventoryItemCount(); 39 | private: 40 | uintptr_t address; 41 | }; 42 | 43 | } -------------------------------------------------------------------------------- /ds3runtime/game_data_man.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "game_data_man.h" 4 | #include "memory_util.h" 5 | #include "databaseaddress.h" 6 | 7 | namespace ds3runtime { 8 | 9 | GameDataMan::GameDataMan(uintptr_t address) 10 | { 11 | this->address = address; 12 | } 13 | 14 | uintptr_t GameDataMan::getPlayerGameData() 15 | { 16 | return *accessMultilevelPointer(address + 0x10); 17 | } 18 | 19 | int32_t GameDataMan::getClearCount() const 20 | { 21 | return *accessMultilevelPointer(address + 0x78); 22 | } 23 | 24 | void GameDataMan::setClearCount(const int32_t& clearCount) 25 | { 26 | *accessMultilevelPointer(address + 0x78) = clearCount; 27 | } 28 | 29 | int32_t GameDataMan::getRescueWhite() const //Succesful co-op? 30 | { 31 | return *accessMultilevelPointer(address + 0x88); 32 | } 33 | 34 | int32_t GameDataMan::getKillBlack() const //Dark spirit kills 35 | { 36 | return *accessMultilevelPointer(address + 0x8C); 37 | } 38 | 39 | int32_t GameDataMan::getDeathNum() const 40 | { 41 | return *accessMultilevelPointer(address + 0x98); 42 | } 43 | 44 | uint32_t GameDataMan::getPlayTime() const 45 | { 46 | return *accessMultilevelPointer(address + 0xA4); 47 | } 48 | 49 | uintptr_t GameDataMan::getInstance() 50 | { 51 | return *accessMultilevelPointer(DataBaseAddress::GAME); 52 | } 53 | 54 | bool GameDataMan::hasInstance() 55 | { 56 | return accessMultilevelPointer(DataBaseAddress::GAME) != nullptr; 57 | } 58 | 59 | } -------------------------------------------------------------------------------- /ds3runtime/game_option_man.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "game_option_man.h" 4 | #include "memory_util.h" 5 | #include "databaseaddress.h" 6 | 7 | namespace ds3runtime { 8 | 9 | GameOptionMan::GameOptionMan(uintptr_t address) 10 | { 11 | this->address = address; 12 | } 13 | 14 | bool GameOptionMan::isAutoSave() 15 | { 16 | return *accessMultilevelPointer(address + 0xB10); 17 | } 18 | 19 | void GameOptionMan::setAutoSave(bool autoSave) 20 | { 21 | *accessMultilevelPointer(address + 0xB10) = autoSave; 22 | } 23 | 24 | bool GameOptionMan::isMyWorld() 25 | { 26 | return *accessMultilevelPointer(address + 0xB1E); 27 | } 28 | 29 | int32_t GameOptionMan::getInvadeType() const 30 | { 31 | return *accessMultilevelPointer(address + 0xC54); 32 | } 33 | 34 | uintptr_t GameOptionMan::getInstance() 35 | { 36 | return *accessMultilevelPointer(DataBaseAddress::BaseC); 37 | } 38 | 39 | bool GameOptionMan::hasInstance() 40 | { 41 | return accessMultilevelPointer(DataBaseAddress::BaseC) != nullptr; 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /ds3runtime/game_option_man.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | 9 | namespace ds3runtime { 10 | 11 | class GameOptionMan 12 | { 13 | public: 14 | GameOptionMan(uintptr_t address); 15 | 16 | bool isAutoSave(); 17 | 18 | void setAutoSave(bool autoSave); 19 | 20 | bool isMyWorld(); 21 | 22 | int32_t getInvadeType() const; 23 | 24 | static uintptr_t getInstance(); 25 | 26 | static bool hasInstance(); 27 | private: 28 | uintptr_t address; 29 | }; 30 | 31 | } -------------------------------------------------------------------------------- /ds3runtime/hook.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "hook.h" 4 | #include "ds3runtime.h" 5 | 6 | namespace ds3runtime { 7 | 8 | Hook::Hook(uintptr_t originalFunc, uintptr_t replacementFunc, std::vector dependencies) 9 | : original(std::make_unique(originalFunc)), 10 | replacement(std::make_unique(replacementFunc)), 11 | dependencies(dependencies) 12 | { 13 | } 14 | 15 | bool Hook::install() 16 | { 17 | auto txn_status = DetourTransactionBegin(); 18 | if (txn_status != NO_ERROR) throw std::runtime_error("Unable to create a Detours transaction"); 19 | txn_status = DetourAttach(reinterpret_cast(original.get()), reinterpret_cast(*replacement.get())); 20 | if (txn_status != NO_ERROR) DetourTransactionAbort(); 21 | txn_status = DetourTransactionCommit(); 22 | if (txn_status == NO_ERROR) installed = true; 23 | return txn_status == NO_ERROR; 24 | } 25 | 26 | bool Hook::uninstall() 27 | { 28 | auto txn_status = DetourTransactionBegin(); 29 | if (txn_status != NO_ERROR) throw std::runtime_error("Unable to create a Detours transaction"); 30 | txn_status = DetourDetach(reinterpret_cast(original.get()), reinterpret_cast(*replacement.get())); 31 | if (txn_status != NO_ERROR) DetourTransactionAbort(); 32 | txn_status = DetourTransactionCommit(); 33 | if (txn_status == NO_ERROR) installed = false; 34 | return txn_status == NO_ERROR; 35 | } 36 | 37 | std::vector Hook::getDependencies() 38 | { 39 | return dependencies; 40 | } 41 | 42 | bool Hook::isInstalled() 43 | { 44 | return installed; 45 | } 46 | 47 | uintptr_t* Hook::getOriginal() 48 | { 49 | return original.get(); 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /ds3runtime/hook.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | 4 | namespace ds3runtime { 5 | 6 | class Hook { 7 | public: 8 | Hook(uintptr_t originalFunc, uintptr_t replacementFunc, std::vector dependencies); 9 | 10 | /** 11 | * Preforms the attaching of this hook via a Detours transaction. 12 | * 13 | * @return The result of the Detours transaction, true if no error. 14 | */ 15 | bool install(); 16 | 17 | /** 18 | * Preforms the detaching of this hook via a Detours transaction. 19 | * 20 | * @return The result of the Detours transaction, true if no error. 21 | */ 22 | bool uninstall(); 23 | 24 | /** 25 | * Gets the list of scripts this hook depends on. Should be used to identify if its ok to install. 26 | * 27 | * @return The list of dependencies. 28 | */ 29 | std::vector getDependencies(); 30 | 31 | /** 32 | * Returns True if this hook is installed. 33 | * 34 | * @return True if this hook is installed. 35 | */ 36 | bool isInstalled(); 37 | 38 | /** 39 | * Gets the name of this hook. 40 | * 41 | * @return The name of this hook. 42 | */ 43 | virtual std::string getName() = 0; 44 | 45 | /** 46 | * Gets a pointer to the original function that this hook replaces. 47 | * 48 | * @return Pointer to the original function. 49 | */ 50 | uintptr_t* getOriginal(); 51 | protected: 52 | std::unique_ptr original; 53 | std::unique_ptr replacement; 54 | std::vector dependencies; 55 | bool installed = false; 56 | }; 57 | 58 | 59 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/better_swordspear_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "better_swordspear_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/memory_util.h" 11 | #include "ds3runtime/bullet_spawn.h" 12 | #include 13 | 14 | namespace ds3runtime { 15 | 16 | BetterSwordSpearHook::BetterSwordSpearHook() 17 | : Hook(0x1409736C0, (uintptr_t)onHitBulletLaunch, {}) 18 | { 19 | instance = this; 20 | } 21 | 22 | void BetterSwordSpearHook::onHitBulletLaunch(uintptr_t bulletIns, uintptr_t unk0, uintptr_t unk1, uint32_t unk2, uint8_t unk3) 23 | { 24 | if (*reinterpret_cast(bulletIns + 0xCB8) == 100091610 && PlayerIns::isMainChrLoaded()) { 25 | PlayerIns chr(PlayerIns::getMainChrAddress()); 26 | std::vector playerPos = chr.getPosition(); 27 | playerPos[1] += 2; 28 | 29 | WorldChrMan worldChrMan(WorldChrMan::getInstance()); 30 | const auto targetVector = worldChrMan.getCamVector(); 31 | 32 | BulletSpawn bolt; 33 | bolt.setOwner(0x10068000); 34 | bolt.setBulletId(100091610); 35 | bolt.setNetworkFlag(9); 36 | bolt.setHomingFlag(-1); 37 | bolt.setCoordinates(playerPos); 38 | bolt.setDirection(std::vector({ targetVector[0], targetVector[1], targetVector[2] })); 39 | bolt.launch(); 40 | return; 41 | } 42 | 43 | int32_t (*originalFunction)(...); 44 | *(uintptr_t*)&originalFunction = *instance->original; 45 | originalFunction(bulletIns); 46 | } 47 | 48 | BetterSwordSpearHook* BetterSwordSpearHook::instance = nullptr; 49 | 50 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/better_swordspear_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class BetterSwordSpearHook : public Hook 14 | { 15 | public: 16 | BetterSwordSpearHook(); 17 | 18 | std::string getName() 19 | { 20 | return "better_swordspear_hook"; 21 | } 22 | 23 | static void onHitBulletLaunch(uintptr_t bulletIns, uintptr_t unk0, uintptr_t unk1, uint32_t unk2, uint8_t unk3); 24 | private: 25 | static BetterSwordSpearHook* instance; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/ds1_backstabs.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds1_backstabs.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/world_chr_man.h" 11 | #include "ds3runtime/memory_util.h" 12 | 13 | namespace ds3runtime { 14 | 15 | DS1Backstabs::DS1Backstabs() 16 | : Hook(0x1409e2f90, (uintptr_t)onThrowCheck, {}) 17 | { 18 | instance = this; 19 | } 20 | 21 | int32_t DS1Backstabs::onThrowCheck(uintptr_t throwAttemptChr, uintptr_t throwTargetChr, char* throwInfoStruct, uintptr_t unk0) 22 | { 23 | uintptr_t* throwAreaParamPtr = accessMultilevelPointer(0x144743668); 24 | 25 | if (WorldChrMan::hasInstance() 26 | && PlayerIns::isMainChrLoaded() 27 | && PlayerIns(PlayerIns::getMainChrAddress()).isValid() 28 | && throwAreaParamPtr != nullptr) { 29 | 30 | void (*throwFunc)(...); 31 | *(uintptr_t*)&throwFunc = 0x1405F3840; 32 | throwFunc(*throwAreaParamPtr, *accessMultilevelPointer(throwAttemptChr + 0x1F90, 0x88, 0x28), *accessMultilevelPointer(throwTargetChr + 0x1F90, 0x88, 0x28), *(int32_t*)(0x8 + throwInfoStruct)); 33 | return 1; 34 | } 35 | 36 | int32_t (*originalFunction)(...); 37 | *(uintptr_t*)&originalFunction = *instance->original; 38 | return originalFunction(throwAttemptChr, throwTargetChr, throwInfoStruct, unk0); 39 | } 40 | 41 | DS1Backstabs* DS1Backstabs::instance = nullptr; 42 | 43 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/ds1_backstabs.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class DS1Backstabs : public Hook 14 | { 15 | public: 16 | DS1Backstabs(); 17 | 18 | std::string getName() 19 | { 20 | return "ds1_backstabs"; 21 | } 22 | 23 | static int32_t onThrowCheck(uintptr_t throwAttemptChr, uintptr_t throwTargetChr, char* throwInfoStruct, uintptr_t unk0); 24 | private: 25 | static DS1Backstabs* instance; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/ds1_no_hyperarmor.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds1_no_hyperarmor.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/memory_util.h" 11 | 12 | namespace ds3runtime { 13 | 14 | DS1NoHyperArmor::DS1NoHyperArmor() 15 | : Hook(0x1409E4765, (uintptr_t)onTaeEvent, {}) 16 | { 17 | instance = this; 18 | } 19 | 20 | void DS1NoHyperArmor::onTaeEvent(uintptr_t sprjChrTaeAnimEvent) 21 | { 22 | return; 23 | } 24 | 25 | DS1NoHyperArmor* DS1NoHyperArmor::instance = nullptr; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/ds1_no_hyperarmor.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class DS1NoHyperArmor : public Hook 14 | { 15 | public: 16 | DS1NoHyperArmor(); 17 | 18 | std::string getName() 19 | { 20 | return "ds1_no_hyperarmor"; 21 | } 22 | 23 | static void onTaeEvent(uintptr_t sprjChrTaeAnimEvent); 24 | private: 25 | static DS1NoHyperArmor* instance; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/game_frame_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "game_frame_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "spdlog/stopwatch.h" 11 | 12 | namespace ds3runtime { 13 | 14 | GameFrameHook::GameFrameHook() 15 | : Hook(0x1423842C0, (uintptr_t)onGameFrame, {}) 16 | { 17 | instance = this; 18 | } 19 | 20 | void GameFrameHook::onGameFrame(void* rcx, void* rdx, void* r8, void* r9, void* rsp20) 21 | { 22 | void(*originalFunction)(...); 23 | *(uintptr_t*)&originalFunction = *instance->original; 24 | originalFunction(rcx, rdx, r8, r9, rsp20); 25 | if (ds3runtime_global->getGameThreadId() == 0) ds3runtime_global->setGameThreadId(GetCurrentThreadId()); 26 | instance->uniqueFrameClock++; 27 | if (instance->uniqueFrameClock % 2 == 0) { 28 | ds3runtime_global->tryInstallHooks(); 29 | ds3runtime_global->executeScripts(); 30 | } 31 | } 32 | 33 | uint64_t GameFrameHook::getFrameNumber() 34 | { 35 | return this->uniqueFrameClock / 2; 36 | } 37 | 38 | GameFrameHook* GameFrameHook::instance = nullptr; 39 | 40 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/game_frame_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/bullet_spawn.h" 10 | 11 | namespace ds3runtime { 12 | 13 | typedef void (*gameFrame)(void*, void*, void*, void*, void*); 14 | 15 | class GameFrameHook : public Hook 16 | { 17 | public: 18 | GameFrameHook(); 19 | 20 | static void onGameFrame(void*, void*, void*, void*, void*); 21 | 22 | std::string getName() 23 | { 24 | return "game_frame_hook"; 25 | } 26 | 27 | uint64_t getFrameNumber(); 28 | private: 29 | static GameFrameHook* instance; 30 | 31 | uint64_t uniqueFrameClock = 0; 32 | }; 33 | 34 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/has_speffect_visual.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include 4 | #include "ds3runtime/world_chr_man.h" 5 | 6 | namespace ds3runtime { 7 | 8 | HasSpEffectVisual::HasSpEffectVisual() 9 | : Hook(0x140881F10, (uintptr_t)onGetPhantomColorId, {}) 10 | { 11 | instance = this; 12 | } 13 | 14 | int32_t HasSpEffectVisual::onGetPhantomColorId(uintptr_t chrAddress) 15 | { 16 | int32_t(*originalFunction)(uintptr_t); 17 | *(uintptr_t*)&originalFunction = *instance->original; 18 | int32_t phantomColorId = originalFunction(chrAddress); 19 | 20 | if (!WorldChrMan::hasInstance()) return 0; 21 | WorldChrMan worldChrMan(WorldChrMan::getInstance()); 22 | 23 | if (worldChrMan.doesChrHaveSpEffect(chrAddress, 37)) { 24 | return 87; 25 | } 26 | 27 | return phantomColorId; 28 | } 29 | 30 | HasSpEffectVisual* HasSpEffectVisual::instance = nullptr; 31 | 32 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/has_speffect_visual.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime{ 12 | 13 | class HasSpEffectVisual : public Hook 14 | { 15 | public: 16 | HasSpEffectVisual(); 17 | 18 | std::string getName() 19 | { 20 | return "has_speffect_visual"; 21 | } 22 | 23 | static int32_t onGetPhantomColorId(uintptr_t); 24 | private: 25 | static HasSpEffectVisual* instance; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/jmp_table_status.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "jmp_table_status.h" 4 | #include "ds3runtime/memory_util.h" 5 | 6 | namespace ds3runtime { 7 | 8 | JmpTableStatus::JmpTableStatus() 9 | : Hook(0x1409a8ac0, (uintptr_t)onJmpTableTaeEvent, {}) 10 | { 11 | instance = this; 12 | } 13 | 14 | bool JmpTableStatus::getJmpTableStatus(const int32_t& jmpTableId) 15 | { 16 | return jmpTableStatusTable.contains(jmpTableId); 17 | } 18 | 19 | void JmpTableStatus::updateJmpTableStatus(const int32_t& jmpTableId) 20 | { 21 | jmpTableStatusTable[jmpTableId] = 0; 22 | } 23 | 24 | void JmpTableStatus::tickJmpTableStatus() 25 | { 26 | for (auto it = std::begin(jmpTableStatusTable); it != std::end(jmpTableStatusTable);) { 27 | if (it->second == 1) { 28 | it = jmpTableStatusTable.erase(it); 29 | } 30 | else { 31 | it->second += 1; 32 | ++it; 33 | } 34 | } 35 | } 36 | 37 | uintptr_t JmpTableStatus::onJmpTableTaeEvent(uintptr_t sprjChrTaeAnimEvent, uintptr_t unkData) 38 | { 39 | const int32_t jmpTableId = *accessMultilevelPointer(unkData + 8, 0); 40 | instance->mtx.lock(); 41 | 42 | instance->updateJmpTableStatus(jmpTableId); 43 | 44 | instance->mtx.unlock(); 45 | uintptr_t(*originalFunction)(...); 46 | *(uintptr_t*)&originalFunction = *instance->original; 47 | return originalFunction(sprjChrTaeAnimEvent, unkData); 48 | } 49 | 50 | JmpTableStatus* JmpTableStatus::instance = nullptr; 51 | 52 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/jmp_table_status.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class JmpTableStatus : public Hook 13 | { 14 | public: 15 | JmpTableStatus(); 16 | 17 | bool getJmpTableStatus(const int32_t& jmpTableId); 18 | 19 | std::string getName() 20 | { 21 | return "jmp_table_status"; 22 | } 23 | 24 | void tickJmpTableStatus(); 25 | 26 | static uintptr_t onJmpTableTaeEvent(uintptr_t sprjChrTaeAnimEvent, uintptr_t unkData); 27 | private: 28 | void updateJmpTableStatus(const int32_t& jmpTableId); 29 | std::mutex mtx; 30 | std::unordered_map jmpTableStatusTable; 31 | 32 | static JmpTableStatus* instance; 33 | }; 34 | 35 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/lua_capture.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "lua_capture.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | LuaCapture::LuaCapture() 14 | : Hook(0x14112fcd0, (uintptr_t)onLuaGetTop, {}), mut(), cond() 15 | { 16 | instance = this; 17 | this->luaStates = std::vector(); 18 | } 19 | 20 | LuaCapture::~LuaCapture() 21 | { 22 | } 23 | 24 | int LuaCapture::onLuaGetTop(lua_State* luaState) 25 | { 26 | int(*originalFunction)(lua_State*); 27 | *(uintptr_t*)&originalFunction = *instance->original; 28 | int luaStateTop = originalFunction(luaState); 29 | 30 | bool alreadyCaptured = false; 31 | std::lock_guard lock(instance->mut); 32 | for (lua_State* iLuaState : instance->luaStates) if (luaState == iLuaState) alreadyCaptured = true; 33 | 34 | if (!alreadyCaptured) { 35 | static int stateNumber = 1; 36 | static uint64_t startTime = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); 37 | instance->luaStates.push_back(luaState); 38 | stateNumber++; 39 | /* 40 | lua_getglobal(luaState, "hkbSelf"); 41 | const void* hkbSelf = lua_topointer(luaState, -1); 42 | lua_remove(luaState, -1); 43 | spdlog::debug("hkbSelf??: {}", hkbSelf); 44 | */ 45 | } 46 | 47 | instance->cond.notify_one(); 48 | 49 | return luaStateTop; 50 | } 51 | 52 | LuaCapture* LuaCapture::instance = nullptr; 53 | 54 | }; -------------------------------------------------------------------------------- /ds3runtime/hooks/lua_capture.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include 10 | 11 | namespace ds3runtime { 12 | 13 | typedef uintptr_t(__cdecl *gettop)(uintptr_t); 14 | 15 | class LuaCapture : public Hook 16 | { 17 | public: 18 | LuaCapture(); 19 | 20 | ~LuaCapture(); 21 | 22 | static int onLuaGetTop(lua_State* luaState); 23 | 24 | static void ds3_lua_getglobal(lua_State* luaState, int idx); //14112af90 25 | 26 | static void ds3_lua_gettable(lua_State* luaState, int idx); //14112af90 27 | 28 | static void ds3_lua_pushstring(lua_State* luaState, const char* s); 29 | 30 | static void ds3_lua_pushnumber(lua_State* luaState, lua_Number n); 31 | 32 | static void ds3_lua_call(lua_State* luaState, int nargs, int nresults); 33 | 34 | std::string getName() 35 | { 36 | return "lua_capture"; 37 | } 38 | private: 39 | std::vector luaStates; 40 | std::mutex mut; 41 | std::condition_variable cond; 42 | 43 | static LuaCapture* instance; 44 | }; 45 | 46 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/play_animation_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "play_animation_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/player_ins.h" 11 | #include 12 | #include 13 | #include 14 | 15 | namespace ds3runtime { 16 | 17 | PlayAnimationHook::PlayAnimationHook() 18 | : Hook(0x140D84870, (uintptr_t)onPlayAnimation, {}) 19 | { 20 | instance = this; 21 | } 22 | 23 | void PlayAnimationHook::onPlayAnimation(uintptr_t hkbCharacter, int32_t* animationId) 24 | { 25 | int32_t filteredId = *animationId; 26 | 27 | for (auto filter : instance->filters) { 28 | filteredId = filter.second(hkbCharacter, filteredId); 29 | if (filteredId == 0) return; 30 | } 31 | 32 | if (PlayerIns::isMainChrLoaded()) { 33 | auto* gameFrameHook = (GameFrameHook*)ds3runtime_global->accessHook("game_frame_hook"); 34 | auto* handler = (AnimationIdHandler*)ds3runtime_global->accessScript("animation_id_handler"); 35 | std::optional animationSubId = handler->getAnimationId(PlayerIns::getMainChrAddress()); 36 | spdlog::debug("Animation played: {} | Frame: {} | Hkb Character Addr: {} | Animation sub id c0000: {}", 37 | ds3runtime_global->utf8_encode(PlayerIns(PlayerIns::getMainChrAddress()).getHkbStringFromId(*animationId)), 38 | gameFrameHook->getFrameNumber(), 39 | (void*)hkbCharacter, 40 | animationSubId.value_or(-1)); 41 | } 42 | 43 | *animationId = filteredId; 44 | void (*originalFunction)(...); 45 | *(uintptr_t*)&originalFunction = *instance->original; 46 | originalFunction(hkbCharacter, animationId); 47 | } 48 | 49 | void PlayAnimationHook::installFilter(std::string key, AnimationFilter function) 50 | { 51 | filters[key] = function; 52 | } 53 | 54 | void PlayAnimationHook::uninstallFilter(std::string key) 55 | { 56 | filters.erase(key); 57 | } 58 | 59 | PlayAnimationHook* PlayAnimationHook::instance = nullptr; 60 | 61 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/play_animation_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | typedef std::function AnimationFilter; 14 | 15 | class PlayAnimationHook : public Hook 16 | { 17 | public: 18 | PlayAnimationHook(); 19 | 20 | void installFilter(std::string key, AnimationFilter function); 21 | 22 | void uninstallFilter(std::string key); 23 | 24 | std::string getName() 25 | { 26 | return "play_anim_hook"; 27 | } 28 | 29 | static void onPlayAnimation(uintptr_t hkbCharacter, int32_t* animationId); 30 | private: 31 | std::unordered_map filters; 32 | 33 | static PlayAnimationHook* instance; 34 | }; 35 | 36 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/session_receive_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "session_receive_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "spdlog/stopwatch.h" 11 | #include 12 | 13 | namespace ds3runtime { 14 | 15 | SessionReceiveHook::SessionReceiveHook() 16 | : Hook(0x140787140, (uintptr_t)onPlayerNetworkSessionReceive, {}) 17 | { 18 | instance = this; 19 | } 20 | 21 | uint32_t SessionReceiveHook::onPlayerNetworkSessionReceive(uintptr_t networkSession, uintptr_t* networkHandle, int32_t id, char* buffer, uint32_t maxLength) 22 | { 23 | uint32_t(*originalFunction)(uintptr_t playerNetworkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength); 24 | *(uintptr_t*)&originalFunction = *instance->original; 25 | uint32_t receiveLength = originalFunction(networkSession, networkHandle, id, buffer, maxLength); 26 | if (receiveLength == 0) return 0; 27 | 28 | for (auto filter : instance->packetFilters) { 29 | receiveLength = filter.second(networkSession, networkHandle, id, buffer, maxLength, receiveLength); 30 | if (receiveLength == 0) { 31 | spdlog::debug("Receive length 0, returning!"); 32 | return 0; 33 | } 34 | } 35 | 36 | return receiveLength; 37 | } 38 | 39 | void SessionReceiveHook::installPacketFilter(std::string key, SessionReceiveHookPacketFilter function) 40 | { 41 | packetFilters[key] = function; 42 | } 43 | 44 | void SessionReceiveHook::uninstallPacketFilter(std::string key) 45 | { 46 | packetFilters.erase(key); 47 | } 48 | 49 | SessionReceiveHook* SessionReceiveHook::instance = nullptr; 50 | 51 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/session_receive_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/player_network_session.h" 10 | 11 | namespace ds3runtime { 12 | 13 | typedef std::function SessionReceiveHookPacketFilter; 14 | 15 | class SessionReceiveHook : public Hook 16 | { 17 | public: 18 | SessionReceiveHook(); 19 | 20 | static uint32_t onPlayerNetworkSessionReceive(uintptr_t networkSession, uintptr_t* networkHandle, int32_t id, char* buffer, uint32_t maxLength); 21 | 22 | std::string getName() 23 | { 24 | return "session_receive_hook"; 25 | } 26 | 27 | void installPacketFilter(std::string key, SessionReceiveHookPacketFilter function); 28 | 29 | void uninstallPacketFilter(std::string key); 30 | private: 31 | std::unordered_map packetFilters; 32 | std::mutex mut; 33 | std::condition_variable cond; 34 | 35 | static SessionReceiveHook* instance; 36 | }; 37 | 38 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/session_send_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "session_send_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include 11 | 12 | namespace ds3runtime { 13 | 14 | SessionSendHook::SessionSendHook() 15 | : Hook(0x1407875D0, (uintptr_t)onPlayerNetworkSessionDebugSend, {}) 16 | { 17 | instance = this; 18 | } 19 | 20 | uint32_t SessionSendHook::onPlayerNetworkSessionDebugSend(uintptr_t networkSession, uintptr_t* networkHandle, int32_t id, char* buffer, uint32_t maxLength) 21 | { 22 | uint32_t(*originalFunction)(uintptr_t playerNetworkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength); 23 | *(uintptr_t*)&originalFunction = *instance->original; 24 | 25 | for (auto filter : instance->packetFilters) { 26 | maxLength = filter.second(networkSession, networkHandle, id, buffer, maxLength); 27 | if (maxLength == 0) return 0; 28 | } 29 | 30 | return originalFunction(networkSession, networkHandle, id, buffer, maxLength); 31 | } 32 | 33 | void SessionSendHook::installPacketFilter(std::string key, SessionSendHookPacketFilter function) 34 | { 35 | packetFilters[key] = function; 36 | } 37 | 38 | void SessionSendHook::uninstallPacketFilter(std::string key) 39 | { 40 | packetFilters.erase(key); 41 | } 42 | 43 | SessionSendHook* SessionSendHook::instance = nullptr; 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/session_send_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/player_network_session.h" 10 | 11 | namespace ds3runtime { 12 | 13 | typedef std::function SessionSendHookPacketFilter; 14 | 15 | class SessionSendHook : public Hook 16 | { 17 | public: 18 | SessionSendHook(); 19 | 20 | std::string getName() 21 | { 22 | return "session_send_hook"; 23 | } 24 | 25 | void installPacketFilter(std::string key, SessionSendHookPacketFilter function); 26 | 27 | void uninstallPacketFilter(std::string key); 28 | 29 | static uint32_t onPlayerNetworkSessionDebugSend(uintptr_t networkSession, uintptr_t* networkHandle, int32_t id, char* buffer, uint32_t maxLength); 30 | private: 31 | std::unordered_map packetFilters; 32 | std::mutex mut; 33 | std::condition_variable cond; 34 | 35 | static SessionSendHook* instance; 36 | }; 37 | 38 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/sprj_chr_damage_module_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "sprj_chr_damage_module_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | SprjChrDamageModuleHook::SprjChrDamageModuleHook() 14 | : Hook(0x14451f085, (uintptr_t)onApplyDamage, {}) 15 | { 16 | instance = this; 17 | } 18 | 19 | void SprjChrDamageModuleHook::onApplyDamage(uintptr_t sprjChrDamageModule, uintptr_t attackerChr, char* attackDataBuffer) 20 | { 21 | bool permitted = true; 22 | 23 | for (auto filter : instance->filters) { 24 | permitted = filter.second(sprjChrDamageModule, attackerChr, attackDataBuffer); 25 | if (permitted == false) return; 26 | } 27 | 28 | void (*originalFunction)(...); 29 | *(uintptr_t*)&originalFunction = *instance->original; 30 | originalFunction(sprjChrDamageModule, attackerChr, attackDataBuffer); 31 | } 32 | 33 | void SprjChrDamageModuleHook::installFilter(std::string key, AttackFilter function) 34 | { 35 | filters[key] = function; 36 | } 37 | 38 | void SprjChrDamageModuleHook::uninstallFilter(std::string key) 39 | { 40 | filters.erase(key); 41 | } 42 | 43 | SprjChrDamageModuleHook* SprjChrDamageModuleHook::instance = nullptr; 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/sprj_chr_damage_module_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime { 11 | 12 | typedef std::function AttackFilter; 13 | 14 | class SprjChrDamageModuleHook : public Hook 15 | { 16 | public: 17 | SprjChrDamageModuleHook(); 18 | 19 | void installFilter(std::string key, AttackFilter function); 20 | 21 | void uninstallFilter(std::string key); 22 | 23 | std::string getName() 24 | { 25 | return "sprj_chr_damage_module_hook"; 26 | } 27 | 28 | static void onApplyDamage(uintptr_t sprjChrDamageModule, uintptr_t attackerChr, char* attackDataBuffer); 29 | private: 30 | std::unordered_map filters; 31 | 32 | static SprjChrDamageModuleHook* instance; 33 | }; 34 | 35 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/throw_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "throw_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | ThrowHook::ThrowHook() 14 | : Hook(0x1405F3840, (uintptr_t)onThrow, {}) 15 | { 16 | instance = this; 17 | } 18 | 19 | void ThrowHook::onThrow(uintptr_t throwAreaParam, uintptr_t throwerChr, uintptr_t victimChr, int32_t id, int8_t param5, int8_t param6) 20 | { 21 | int32_t filteredId = id; 22 | 23 | for (auto filter : instance->filters) { 24 | filteredId = filter.second(throwAreaParam, throwerChr, victimChr, filteredId); 25 | if (filteredId == 0) return; 26 | } 27 | 28 | void (*originalFunction)(...); 29 | *(uintptr_t*)&originalFunction = *instance->original; 30 | originalFunction(throwAreaParam, throwerChr, victimChr, id, param5, param6); //Search for ThrowAreaParam in ghidra for more information. 31 | } 32 | 33 | void ThrowHook::installFilter(std::string key, ThrowNodeFilter function) 34 | { 35 | filters[key] = function; 36 | } 37 | 38 | void ThrowHook::uninstallFilter(std::string key) 39 | { 40 | filters.erase(key); 41 | } 42 | 43 | ThrowHook* ThrowHook::instance = nullptr; 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/throw_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/chr_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | typedef std::function ThrowNodeFilter; 14 | 15 | class ThrowHook : public Hook 16 | { 17 | public: 18 | ThrowHook(); 19 | 20 | void installFilter(std::string key, ThrowNodeFilter function); 21 | 22 | void uninstallFilter(std::string key); 23 | 24 | std::string getName() 25 | { 26 | return "throw_hook"; 27 | } 28 | 29 | static void onThrow(uintptr_t throwAreaParam, uintptr_t throwerChr, uintptr_t victimChr, int32_t id, int8_t param5, int8_t param6); 30 | private: 31 | std::unordered_map filters; 32 | 33 | static ThrowHook* instance; 34 | }; 35 | 36 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/time_since_last_frame.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include 4 | #include "ds3runtime/world_chr_man.h" 5 | 6 | namespace ds3runtime { 7 | 8 | TimeSinceLastFrameHook::TimeSinceLastFrameHook() 9 | : Hook(0x1405941d0, (uintptr_t)onUpdateTime, {}) 10 | { 11 | instance = this; 12 | } 13 | 14 | void TimeSinceLastFrameHook::onUpdateTime(float time) 15 | { 16 | void(*originalFunction)(float); 17 | *(uintptr_t*)&originalFunction = *instance->original; 18 | originalFunction(time); 19 | const float frameRate = *accessMultilevelPointer(0x144786128, 8); 20 | instance->time = time * (60.0f / frameRate); 21 | } 22 | 23 | TimeSinceLastFrameHook* TimeSinceLastFrameHook::instance = nullptr; 24 | 25 | } -------------------------------------------------------------------------------- /ds3runtime/hooks/time_since_last_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime{ 12 | 13 | class TimeSinceLastFrameHook : public Hook 14 | { 15 | public: 16 | TimeSinceLastFrameHook(); 17 | 18 | std::string getName() 19 | { 20 | return "time_since_last_frame"; 21 | } 22 | 23 | float getTime() { 24 | return this->time; 25 | } 26 | 27 | static void onUpdateTime(float time); 28 | private: 29 | float time = 0; 30 | 31 | static TimeSinceLastFrameHook* instance; 32 | }; 33 | 34 | } -------------------------------------------------------------------------------- /ds3runtime/i_chr_finder.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "i_chr_finder.h" 4 | #include "player_ins.h" 5 | 6 | namespace ds3runtime { 7 | 8 | bool IChrFinder::isBothChrAllies(const uintptr_t& chr1, const uintptr_t& chr2) 9 | { 10 | bool(*Function)(...); 11 | *(uintptr_t*)&Function = 0x1409FFF50; 12 | return !Function(chr1, chr2); 13 | } 14 | 15 | }; -------------------------------------------------------------------------------- /ds3runtime/i_chr_finder.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | */ 6 | 7 | #pragma once 8 | #include "pch.h" 9 | #include "memory_util.h" 10 | #include "chr_ins.h" 11 | 12 | namespace ds3runtime { 13 | 14 | class IChrFinder 15 | { 16 | public: 17 | static bool isBothChrAllies(const uintptr_t& chr1, const uintptr_t& chr2); 18 | private: 19 | }; 20 | 21 | } -------------------------------------------------------------------------------- /ds3runtime/memory_util.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | 4 | namespace ds3runtime { 5 | 6 | template 7 | ResultType* accessMultilevelPointer(PointerType baseAddress) 8 | { 9 | return (intptr_t)baseAddress < 65536 || IsBadReadPtr((void*)((uintptr_t)baseAddress), sizeof(ResultType)) ? NULL : (ResultType*)baseAddress; 10 | } 11 | 12 | template 13 | ResultType* accessMultilevelPointer(PointerType baseAddress, OffsetType offset, OffsetTypes... offsets) 14 | { 15 | return (intptr_t)baseAddress < 65536 || IsBadReadPtr((void*)((uintptr_t)baseAddress), sizeof(void*)) ? NULL : accessMultilevelPointer(*(char**)((uintptr_t)baseAddress) + offset, offsets...); 16 | } 17 | 18 | } -------------------------------------------------------------------------------- /ds3runtime/misc_functions.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "misc_functions.h" 4 | #include "databaseaddress.h" 5 | #include "ds3runtime.h" 6 | 7 | namespace ds3runtime { 8 | 9 | MiscFunctions::MiscFunctions() 10 | { 11 | } 12 | 13 | void MiscFunctions::luaCallSOS(uintptr_t chrIns, int32_t sosFlag) 14 | { 15 | void(*CallSOS)(...); 16 | *(uintptr_t*)&CallSOS = 0x1408B0BE0; 17 | CallSOS(chrIns, sosFlag); 18 | } 19 | 20 | }; -------------------------------------------------------------------------------- /ds3runtime/misc_functions.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class MiscFunctions 13 | { 14 | public: 15 | MiscFunctions(); 16 | 17 | void luaCallSOS(uintptr_t chrIns, int32_t sosFlag); 18 | }; 19 | 20 | } -------------------------------------------------------------------------------- /ds3runtime/modules/elden_ring/backstab_angle_check.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "backstab_angle_check.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include 6 | #include 7 | 8 | namespace ds3runtime::eldenring { 9 | 10 | bool BackstabAngleCheck::onAttach() 11 | { 12 | ((ThrowHook*)ds3runtime_global 13 | ->accessHook("throw_hook")) 14 | ->installFilter("backstab_angle_check", [&](uintptr_t, uintptr_t throwerChr, uintptr_t victimChr, int32_t id) -> int32_t { 15 | if (id != 100 && id != 1000100) return id; 16 | ChrIns throwerChrIns(*reinterpret_cast(throwerChr)); 17 | ChrIns victimChrIns(*reinterpret_cast(victimChr)); 18 | if (!throwerChrIns.isValid() || !victimChrIns.isValid()) return id; 19 | const float angle1 = throwerChrIns.getAngle(); 20 | const float angle2 = victimChrIns.getAngle(); 21 | const float difference = static_cast(fmod(((static_cast(angle1) - static_cast(angle2)) + M_PI), (M_PI * 2)) - M_PI); 22 | 23 | if (std::abs(difference) * (180 / M_PI) > 35) { 24 | return 0; 25 | } 26 | 27 | return id; 28 | }); 29 | 30 | return true; 31 | } 32 | 33 | void BackstabAngleCheck::execute() 34 | { 35 | } 36 | 37 | bool BackstabAngleCheck::onDetach() 38 | { 39 | ((ThrowHook*)ds3runtime_global 40 | ->accessHook("throw_hook")) 41 | ->uninstallFilter("backstab_angle_check"); 42 | return true; 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/modules/elden_ring/backstab_angle_check.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "spdlog/stopwatch.h" 11 | 12 | namespace ds3runtime::eldenring { 13 | 14 | class BackstabAngleCheck : public ScriptModule 15 | { 16 | public: 17 | bool onAttach(); 18 | 19 | bool onDetach(); 20 | 21 | void execute(); 22 | 23 | std::string getName() 24 | { 25 | return "backstab_angle_check"; 26 | } 27 | }; 28 | 29 | } -------------------------------------------------------------------------------- /ds3runtime/modules/elden_ring/elden_ring_jump.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "spdlog/stopwatch.h" 11 | 12 | namespace ds3runtime::eldenring { 13 | 14 | class EldenRingJump : public ScriptModule 15 | { 16 | public: 17 | bool onAttach(); 18 | 19 | bool onDetach(); 20 | 21 | void execute(); 22 | 23 | std::string getName() 24 | { 25 | return "elden_ring_jump"; 26 | } 27 | 28 | void setJumpMotion(const uintptr_t& hkbChr, const std::vector& motion); 29 | 30 | std::vector getJumpMotion(const uintptr_t& hkbChr); 31 | 32 | template 33 | ReturnType env(const int& envId) 34 | { 35 | uint64_t rawData = envRaw(envId); 36 | return *reinterpret_cast(&rawData); 37 | } 38 | private: 39 | std::unordered_map> chrOverrideMotionMap; 40 | std::atomic waitOverrideFrame = false; 41 | 42 | uint64_t envRaw(const int& envId); 43 | }; 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/modules/elden_ring/position_calculate_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "position_calculate_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/world_chr_man.h" 11 | #include "ds3runtime/player_ins.h" 12 | #include "ds3runtime/scripts/animation_id_handler.h" 13 | 14 | namespace ds3runtime::eldenring { 15 | 16 | PositionCalculateHook::PositionCalculateHook() 17 | : Hook(0x14165b420, (uintptr_t)onUpdatePosition, { "animation_id_handler" }) 18 | { 19 | instance = this; 20 | } 21 | 22 | void PositionCalculateHook::onUpdatePosition(uintptr_t CsHkCharacterProxy, uintptr_t* SprjChrPhysicsModulePtr, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2) 23 | { 24 | void (*originalFunction)(...); 25 | *(uintptr_t*)&originalFunction = *instance->original; 26 | 27 | for (auto filter : instance->filters) { 28 | filter.second(CsHkCharacterProxy, SprjChrPhysicsModulePtr); 29 | } 30 | 31 | originalFunction(CsHkCharacterProxy, SprjChrPhysicsModulePtr, unk0, unk1, unk2); 32 | } 33 | 34 | void PositionCalculateHook::installFilter(std::string key, MotionFilter function) 35 | { 36 | filters[key] = function; 37 | } 38 | 39 | void PositionCalculateHook::uninstallFilter(std::string key) 40 | { 41 | filters.erase(key); 42 | } 43 | 44 | PositionCalculateHook* PositionCalculateHook::instance = nullptr; 45 | 46 | } -------------------------------------------------------------------------------- /ds3runtime/modules/elden_ring/position_calculate_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::eldenring { 11 | 12 | typedef std::function MotionFilter; 13 | 14 | class PositionCalculateHook : public Hook 15 | { 16 | public: 17 | PositionCalculateHook(); 18 | 19 | std::string getName() 20 | { 21 | return "elden_ring_position_calculate_hook"; 22 | } 23 | 24 | static void onUpdatePosition(uintptr_t CsHkCharacterProxy, uintptr_t* SprjChrPhysicsModulePtr, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2); 25 | 26 | void installFilter(std::string key, MotionFilter function); 27 | 28 | void uninstallFilter(std::string key); 29 | private: 30 | std::unordered_map filters; 31 | 32 | static PositionCalculateHook* instance; 33 | }; 34 | 35 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/attacker_effect_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/ds3runtime.h" 9 | #include "attacker_effect_hook.h" 10 | #include "ds3_iframe_patch.h" 11 | #include "ds3runtime/scripts/param_patcher.h" 12 | 13 | namespace ds3runtime::ds3IFramePatch { 14 | 15 | AttackerEffectHook::AttackerEffectHook() 16 | : Hook(0x14087CE00, (uintptr_t)onSpEffectApply, { "param_patcher" }) 17 | { 18 | instance = this; 19 | } 20 | 21 | void AttackerEffectHook::onSpEffectApply(uintptr_t chrIns, int32_t spEffectId, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5, uintptr_t unk6, uintptr_t unk7) 22 | { 23 | void (*originalFunction)(...); 24 | *(uintptr_t*)&originalFunction = *instance->original; 25 | ChrIns attackerChr(chrIns); 26 | if (attackerChr.getHandle() == ChrIns::Handle::MainChr 27 | && spEffectId != -1 28 | && ParamHandler("", L"SpEffectParam", spEffectId).isValidParam() 29 | && ParamHandler("", L"SpEffectParam", spEffectId).readBinary(0x160, 1)) return; 30 | originalFunction(unk0, spEffectId, unk0, unk1, unk2, unk3, unk4, unk5, unk6, unk7); 31 | } 32 | 33 | AttackerEffectHook* AttackerEffectHook::instance = nullptr; 34 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/attacker_effect_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class AttackerEffectHook : public Hook 13 | { 14 | public: 15 | AttackerEffectHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_attacker_effect_hook"; 20 | } 21 | 22 | static void onSpEffectApply(uintptr_t chrIns, int32_t spEffectId, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5, uintptr_t unk6, uintptr_t unk7); 23 | private: 24 | static AttackerEffectHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/ban_check.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/ds3runtime.h" 9 | #include "ban_check.h" 10 | #include "ds3_iframe_patch.h" 11 | #include "ds3runtime/scripts/fmod_system_handler.h" 12 | 13 | namespace ds3runtime::ds3IFramePatch { 14 | 15 | BanCheckHook::BanCheckHook() 16 | : Hook(0x14222bba0, (uintptr_t)onAnnouncementDataDelete, {}) 17 | { 18 | instance = this; 19 | } 20 | 21 | int32_t BanCheckHook::getMessageCount() 22 | { 23 | return messageCount; 24 | } 25 | 26 | void BanCheckHook::resetMessageCount() 27 | { 28 | messageCount = 0; 29 | } 30 | 31 | uintptr_t BanCheckHook::onAnnouncementDataDelete(uintptr_t announcementMessageData, uint32_t unk0) 32 | { 33 | uintptr_t (*originalFunction)(...); 34 | *(uintptr_t*)&originalFunction = *instance->original; 35 | instance->messageCount++; 36 | return originalFunction(announcementMessageData, unk0); 37 | } 38 | 39 | BanCheckHook* BanCheckHook::instance = nullptr; 40 | 41 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/ban_check.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class BanCheckHook : public Hook 13 | { 14 | public: 15 | BanCheckHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_ban_check_hook"; 20 | } 21 | 22 | int32_t getMessageCount(); 23 | 24 | void resetMessageCount(); 25 | 26 | static uintptr_t onAnnouncementDataDelete(uintptr_t announcementMessageData, uint32_t unk0); 27 | private: 28 | int32_t messageCount = 0; 29 | 30 | static BanCheckHook* instance; 31 | }; 32 | 33 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/bullet_chr_hit_vfx_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "bullet_Chr_hit_vfx_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/world_chr_man.h" 11 | #include "ds3runtime/memory_util.h" 12 | #include "ds3runtime/scripts/param_patcher.h" 13 | 14 | namespace ds3runtime::ds3IFramePatch { 15 | 16 | BulletChrHitVfxHook::BulletChrHitVfxHook() 17 | : Hook(0x140971020, (uintptr_t)onSpawnVfx, {}) 18 | { 19 | instance = this; 20 | } 21 | 22 | void BulletChrHitVfxHook::onSpawnVfx(uintptr_t sprjBulletIns, uintptr_t unk0, uintptr_t chrIns) 23 | { 24 | const int32_t bulletId = *accessMultilevelPointer(sprjBulletIns + 0x4E4); 25 | ParamHandler bulletParam("", L"Bullet", bulletId); 26 | if (!bulletParam.isValidParam()) return; 27 | 28 | if (bulletParam.read(0x92) == 1) { 29 | return; 30 | } 31 | 32 | void (*originalFunction)(...); 33 | *(uintptr_t*)&originalFunction = *instance->original; 34 | originalFunction(sprjBulletIns, unk0, chrIns); 35 | } 36 | 37 | BulletChrHitVfxHook* BulletChrHitVfxHook::instance = nullptr; 38 | 39 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/bullet_chr_hit_vfx_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class BulletChrHitVfxHook : public Hook 13 | { 14 | public: 15 | BulletChrHitVfxHook(); 16 | 17 | std::string getName() 18 | { 19 | return "bullet_chr_hit_vfx_hook"; 20 | } 21 | 22 | static void onSpawnVfx(uintptr_t sprjBulletIns, uintptr_t unk0, uintptr_t chrIns); 23 | private: 24 | static BulletChrHitVfxHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/bullet_hit_hierarchy_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class BulletHierarchyHook : public Hook 13 | { 14 | public: 15 | BulletHierarchyHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_bullet_hierarchy_hook"; 20 | } 21 | 22 | static void onSetHierarchy(uintptr_t* hitboxStructPointers, uint32_t hitboxId, uintptr_t hitboxHitList, uintptr_t unk0); 23 | private: 24 | static BulletHierarchyHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/durablity_cost_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "durablity_cost_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "hit_uuid_identify.h" 11 | 12 | namespace ds3runtime::ds3IFramePatch { 13 | 14 | FixDurablityCost::FixDurablityCost() 15 | : Hook(0x14057e2e0, (uintptr_t)onDurablityUse, {}) 16 | { 17 | instance = this; 18 | } 19 | 20 | bool FixDurablityCost::onDurablityUse(uintptr_t equipGameData, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2) 21 | { 22 | bool (*originalFunction)(...); 23 | *(uintptr_t*)&originalFunction = *instance->original; 24 | return true; 25 | } 26 | 27 | FixDurablityCost* FixDurablityCost::instance = nullptr; 28 | 29 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/durablity_cost_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | #include "ds3_iframe_patch.h" 10 | 11 | namespace ds3runtime::ds3IFramePatch { 12 | 13 | struct CostedHit 14 | { 15 | uintptr_t hitBoxAddress; 16 | uint64_t timeStamp; 17 | }; 18 | 19 | class FixDurablityCost : public Hook 20 | { 21 | public: 22 | FixDurablityCost(); 23 | 24 | std::string getName() 25 | { 26 | return "ds3_iframe_patch_durablity_cost_hook"; 27 | } 28 | 29 | static bool onDurablityUse(uintptr_t equipGameData, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2); 30 | private: 31 | static FixDurablityCost* instance; 32 | }; 33 | 34 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_delete.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "hit_delete.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3_iframe_patch.h" 11 | 12 | namespace ds3runtime::ds3IFramePatch { 13 | 14 | HitBoxDeleteHook::HitBoxDeleteHook() 15 | : Hook(0x1408321f0, (uintptr_t)onHitBoxDelete, { "ds3_iframe_patch" }) 16 | { 17 | instance = this; 18 | } 19 | 20 | void HitBoxDeleteHook::onHitBoxDelete(uintptr_t hitBoxAddress) 21 | { 22 | void (*originalFunction)(...); 23 | *(uintptr_t*)&originalFunction = *instance->original; 24 | originalFunction(hitBoxAddress); 25 | DS3IFramePatch* ds3IFramePatch = (DS3IFramePatch*)ds3runtime_global->accessScript("ds3_iframe_patch"); 26 | ds3IFramePatch->unregisterOutgoingHitBox(hitBoxAddress); 27 | } 28 | 29 | HitBoxDeleteHook* HitBoxDeleteHook::instance = nullptr; 30 | 31 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_delete.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitBoxDeleteHook : public Hook 13 | { 14 | public: 15 | HitBoxDeleteHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_delete"; 20 | } 21 | 22 | static void onHitBoxDelete(uintptr_t hitBoxAddress); 23 | private: 24 | static HitBoxDeleteHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_reg_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "hit_reg_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3runtime/world_chr_man.h" 11 | #include "ds3runtime/memory_util.h" 12 | 13 | namespace ds3runtime::ds3IFramePatch { 14 | 15 | HitRegHook::HitRegHook() 16 | : Hook(0x140836410, (uintptr_t)onHitRegistration, {}) 17 | { 18 | instance = this; 19 | } 20 | 21 | void HitRegHook::onHitRegistration(uintptr_t hitBoxStructAddress, uint32_t hitReceiverHandle, uintptr_t unk0) 22 | { 23 | if (hitReceiverHandle > 0x10068000 && 0x10068005 >= hitReceiverHandle) { 24 | return; 25 | } 26 | 27 | void (*originalFunction)(...); 28 | *(uintptr_t*)&originalFunction = *instance->original; 29 | originalFunction(hitBoxStructAddress, hitReceiverHandle, unk0); 30 | } 31 | 32 | HitRegHook* HitRegHook::instance = nullptr; 33 | 34 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_reg_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitRegHook : public Hook 13 | { 14 | public: 15 | HitRegHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_reg_hook"; 20 | } 21 | 22 | static void onHitRegistration(uintptr_t hitBoxStructAddress, uint32_t hitReceiverHandle, uintptr_t unk0); 23 | private: 24 | static HitRegHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_reg_hook_shockwave.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "hit_reg_hook_shockwave.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime::ds3IFramePatch { 12 | 13 | HitRegHookShockwave::HitRegHookShockwave() 14 | : Hook(0x1409AFCE0, (uintptr_t)onHitRegistration, {}) 15 | { 16 | instance = this; 17 | } 18 | 19 | bool HitRegHookShockwave::onHitRegistration(uintptr_t CSDamagePriorityCtrl, uintptr_t hitReceiverIns) 20 | { 21 | const uint32_t receiverHandle = *(uint32_t*)(hitReceiverIns + 0x8); 22 | 23 | if (receiverHandle > 0x10068000 && 0x10068005 <= receiverHandle) { 24 | return true; 25 | } 26 | 27 | bool (*originalFunction)(...); 28 | *(uintptr_t*)&originalFunction = *instance->original; 29 | return originalFunction(CSDamagePriorityCtrl, hitReceiverIns); 30 | } 31 | 32 | HitRegHookShockwave* HitRegHookShockwave::instance = nullptr; 33 | 34 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_reg_hook_shockwave.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitRegHookShockwave : public Hook 13 | { 14 | public: 15 | HitRegHookShockwave(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_reg_hook_shockwave"; 20 | } 21 | 22 | static bool onHitRegistration(uintptr_t CSDamagePriorityCtrl, uintptr_t hitReceiverIns); 23 | private: 24 | static HitRegHookShockwave* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_sibling_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitBoxHierarchyHook : public Hook 13 | { 14 | public: 15 | HitBoxHierarchyHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_sibling_hook"; 20 | } 21 | 22 | static void onSetHierarchy(uintptr_t siblingHitBox1, uintptr_t siblingHitBox2); 23 | private: 24 | static HitBoxHierarchyHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_uuid_hook.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "hit_uuid_hook.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include "ds3_iframe_patch.h" 11 | #include "ds3runtime/world_chr_man.h" 12 | #include "ds3runtime/player_ins.h" 13 | 14 | namespace ds3runtime::ds3IFramePatch { 15 | 16 | HitBoxUUIDHook::HitBoxUUIDHook() 17 | : Hook(0x140832500, (uintptr_t)onHitBoxStructCreate, { "ds3_iframe_patch" }) 18 | { 19 | instance = this; 20 | } 21 | 22 | bool HitBoxUUIDHook::onHitBoxStructCreate(uintptr_t hitBoxAddress, uintptr_t unk0, uintptr_t unk1, uintptr_t hitBoxOwnerIns, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5, uintptr_t unk6) 23 | { 24 | bool (*originalFunction)(...); 25 | *(uintptr_t*)&originalFunction = *instance->original; 26 | 27 | //Check if hitbox owner is the local player or bullet of the hitbox is owned by the local player 28 | if (WorldChrMan::hasInstance() && PlayerIns::isMainChrLoaded() && hitBoxOwnerIns == PlayerIns::getMainChrAddress()) { 29 | DS3IFramePatch* ds3IFramePatch = (DS3IFramePatch*)ds3runtime_global->accessScript("ds3_iframe_patch"); 30 | ds3IFramePatch->registerOutgoingHitBox(hitBoxAddress, static_cast(PlayerIns::Handle::MainChr)); 31 | } else if (WorldChrMan::hasInstance() && PlayerIns::isMainChrLoaded() 32 | && *(uintptr_t*)hitBoxOwnerIns == 0x14287AC18 33 | && *(uint32_t*)(hitBoxOwnerIns + 0xB98) == (uint32_t)PlayerIns::Handle::MainChr) { 34 | DS3IFramePatch* ds3IFramePatch = (DS3IFramePatch*)ds3runtime_global->accessScript("ds3_iframe_patch"); 35 | ds3IFramePatch->registerOutgoingHitBox(hitBoxAddress, *accessMultilevelPointer(hitBoxOwnerIns + 8)); 36 | } 37 | 38 | return originalFunction(hitBoxAddress, unk0, unk1, hitBoxOwnerIns, unk2, unk3, unk4, unk5, unk6); 39 | } 40 | 41 | HitBoxUUIDHook* HitBoxUUIDHook::instance = nullptr; 42 | 43 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_uuid_hook.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitBoxUUIDHook : public Hook 13 | { 14 | public: 15 | HitBoxUUIDHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_uuid_hook"; 20 | } 21 | 22 | static bool onHitBoxStructCreate(uintptr_t hitBoxAddress, uintptr_t unk0, uintptr_t unk1, uintptr_t hitBoxOwnerIns, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5, uintptr_t unk6); 23 | private: 24 | static HitBoxUUIDHook* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_uuid_identify.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/ds3runtime.h" 9 | #include "hit_uuid_identify.h" 10 | #include "ds3_iframe_patch.h" 11 | 12 | namespace ds3runtime::ds3IFramePatch { 13 | 14 | HitUUIDIdentifyHook::HitUUIDIdentifyHook() 15 | : Hook(0x140836490, (uintptr_t)onHitCheck, {}) 16 | { 17 | instance = this; 18 | } 19 | 20 | uintptr_t HitUUIDIdentifyHook::getLastHitBoxAddress() 21 | { 22 | return lastHitBoxAddress; 23 | } 24 | 25 | void HitUUIDIdentifyHook::onHitCheck(uintptr_t hitBoxStructAddress, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5) 26 | { 27 | void (*originalFunction)(...); 28 | *(uintptr_t*)&originalFunction = *instance->original; 29 | instance->lastHitBoxAddress = hitBoxStructAddress; 30 | originalFunction(hitBoxStructAddress, unk0, unk1, unk2, unk3, unk4, unk5); 31 | } 32 | 33 | HitUUIDIdentifyHook* HitUUIDIdentifyHook::instance = nullptr; 34 | 35 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/hit_uuid_identify.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class HitUUIDIdentifyHook : public Hook 13 | { 14 | public: 15 | HitUUIDIdentifyHook(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_hit_uuid_identify"; 20 | } 21 | 22 | uintptr_t getLastHitBoxAddress(); 23 | 24 | static void onHitCheck(uintptr_t hitBoxStructAddress, uintptr_t unk0, uintptr_t unk1, uintptr_t unk2, uintptr_t unk3, uintptr_t unk4, uintptr_t unk5); 25 | private: 26 | uintptr_t lastHitBoxAddress = 0; 27 | 28 | static HitUUIDIdentifyHook* instance; 29 | }; 30 | 31 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/no_player_iframes.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "no_player_iframes.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime::ds3IFramePatch { 12 | 13 | NoPlayerIFrames::NoPlayerIFrames() 14 | : Hook(0x1409B4A50, (uintptr_t)onDodgeCheck, {}) 15 | { 16 | instance = this; 17 | } 18 | 19 | bool NoPlayerIFrames::onDodgeCheck(uintptr_t debugFlags, uintptr_t chrIns) 20 | { 21 | bool (*originalFunction)(...); 22 | *(uintptr_t*)&originalFunction = *instance->original; 23 | const bool originalResult = originalFunction(debugFlags, chrIns); 24 | uint32_t hitReceiverHandle = (uint32_t)ChrIns(chrIns).getHandle(); 25 | 26 | return true; 27 | } 28 | 29 | NoPlayerIFrames* NoPlayerIFrames::instance = nullptr; 30 | 31 | } -------------------------------------------------------------------------------- /ds3runtime/modules/network_roll_patch/no_player_iframes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/hook.h" 9 | 10 | namespace ds3runtime::ds3IFramePatch { 11 | 12 | class NoPlayerIFrames : public Hook 13 | { 14 | public: 15 | NoPlayerIFrames(); 16 | 17 | std::string getName() 18 | { 19 | return "ds3_iframe_patch_no_player_iframes"; 20 | } 21 | 22 | static bool onDodgeCheck(uintptr_t debugFlags, uintptr_t chrIns); 23 | private: 24 | static NoPlayerIFrames* instance; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/modules/roll_release_test/roll_release_test.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include 11 | 12 | namespace ds3runtime { 13 | 14 | class RollReleaseTest : public ScriptModule 15 | { 16 | public: 17 | bool onAttach(); 18 | 19 | bool onDetach(); 20 | 21 | void execute(); 22 | 23 | std::string getName() 24 | { 25 | return "roll_release_test"; 26 | } 27 | private: 28 | std::atomic currentFrame = 0; 29 | std::atomic releaseFrame = 0; 30 | std::atomic releaseTimeStamp = 0; 31 | std::atomic sw; 32 | std::atomic spaceDownState; 33 | std::atomic totalFrames = 0; 34 | std::atomic totalTime = 0; 35 | std::atomic rollCount = 0; 36 | }; 37 | 38 | } -------------------------------------------------------------------------------- /ds3runtime/modules/run_frame_test/run_frame_test.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "run_frame_test.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include 6 | 7 | namespace ds3runtime { 8 | 9 | void RunFrameTest::execute() 10 | { 11 | if (!PlayerIns::isMainChrLoaded() || !PlayerIns(PlayerIns::getMainChrAddress()).hasHkbCharacter()) { 12 | timeSinceLastMove = 0; 13 | isMoving = false; 14 | return; 15 | } 16 | 17 | PlayerIns playerChr(PlayerIns::getMainChrAddress()); 18 | 19 | if (!isMoving && playerChr.getAnimationString() == L"Move") { 20 | isMoving = true; 21 | timeSinceLastMove = 0; 22 | moveStartPosition = playerChr.getPosition(); 23 | } else if (isMoving && playerChr.getAnimationString() != L"Move") { 24 | isMoving = false; 25 | std::vector currentPosition = playerChr.getPosition(); 26 | 27 | float distance = sqrt( 28 | pow(moveStartPosition[0] - currentPosition[0], 2) 29 | + pow(moveStartPosition[1] - currentPosition[1], 2) 30 | + pow(moveStartPosition[2] - currentPosition[2], 2)); 31 | 32 | spdlog::debug("You moved {} meters over {} seconds.", distance, timeSinceLastMove); 33 | timeSinceLastMove = 0; 34 | } 35 | 36 | auto* timeHook = (TimeSinceLastFrameHook*)ds3runtime_global->accessHook("time_since_last_frame"); 37 | timeSinceLastMove += timeHook->getTime(); 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /ds3runtime/modules/run_frame_test/run_frame_test.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/player_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class RunFrameTest : public ScriptModule 14 | { 15 | public: 16 | void execute(); 17 | 18 | std::string getName() 19 | { 20 | return "run_frame_test"; 21 | } 22 | private: 23 | float timeSinceLastMove = 0; 24 | bool isMoving = false; 25 | std::vector moveStartPosition; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/player_network_session.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "player_network_session.h" 4 | #include "databaseaddress.h" 5 | #include "ds3runtime.h" 6 | 7 | namespace ds3runtime { 8 | 9 | PlayerNetworkSession::PlayerNetworkSession(uintptr_t address) 10 | { 11 | this->address = address; 12 | } 13 | 14 | uintptr_t PlayerNetworkSession::getInstance() 15 | { 16 | return *accessMultilevelPointer(DataBaseAddress::PlayerNetworkSession); 17 | } 18 | 19 | bool PlayerNetworkSession::hasInstance() 20 | { 21 | return accessMultilevelPointer(DataBaseAddress::PlayerNetworkSession) != nullptr; 22 | } 23 | 24 | void PlayerNetworkSession::packetSend(uintptr_t* networkHandle, int32_t packetId, char* packetBuffer, uint32_t packetSize) 25 | { 26 | auto hook = ds3runtime_global->accessHook("session_send_hook"); 27 | void(*DebugPacketSend)(...); 28 | *(uintptr_t*)&DebugPacketSend = hook != nullptr ? *hook->getOriginal() : 0x1407875D0; 29 | DebugPacketSend(address, networkHandle, packetId, packetBuffer, packetSize); 30 | } 31 | 32 | void PlayerNetworkSession::packetSend(uintptr_t* networkHandle, packet::Packet* packet) 33 | { 34 | packetSend(networkHandle, packet->getId(), &packet->getDataCopy()[0], packet->getLength()); 35 | } 36 | 37 | void PlayerNetworkSession::sessionPacketSend(int32_t packetId, char* packetBuffer, const uint32_t packetSize) 38 | { 39 | void(*SessionPacketSend)(...); 40 | *(uintptr_t*)&SessionPacketSend = 0x140787870; 41 | SessionPacketSend(address, packetId, packetBuffer, packetSize); 42 | } 43 | 44 | void PlayerNetworkSession::sessionPacketSend(packet::Packet* packet) 45 | { 46 | sessionPacketSend(packet->getId(), &packet->getDataCopy()[0], packet->getLength()); 47 | } 48 | 49 | void PlayerNetworkSession::queueEquipmentPacket() 50 | { 51 | void(*function)(); 52 | *(uintptr_t*)&function = 0x14077bbd0; 53 | function(); 54 | } 55 | 56 | }; -------------------------------------------------------------------------------- /ds3runtime/player_network_session.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | */ 6 | 7 | #pragma once 8 | #include "pch.h" 9 | #include "memory_util.h" 10 | #include "game_packet.h" 11 | 12 | namespace ds3runtime { 13 | 14 | class PlayerNetworkSession 15 | { 16 | public: 17 | PlayerNetworkSession(uintptr_t address); 18 | 19 | void packetSend(uintptr_t* networkHandle, int32_t packetId, char* packetBuffer, uint32_t packetSize); 20 | 21 | void packetSend(uintptr_t* networkHandle, packet::Packet* packet); 22 | 23 | void sessionPacketSend(int32_t packetId, char* packetBuffer, uint32_t packetSize); 24 | 25 | void sessionPacketSend(packet::Packet* packet); 26 | 27 | static void queueEquipmentPacket(); 28 | 29 | static uintptr_t getInstance(); 30 | 31 | static bool hasInstance(); 32 | private: 33 | uintptr_t address; 34 | }; 35 | 36 | } -------------------------------------------------------------------------------- /ds3runtime/script_module.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "script_module.h" 9 | #include 10 | 11 | namespace ds3runtime { 12 | 13 | ScriptModule::ScriptModule() : uniqueId(uniqueIdCounter) 14 | { 15 | uniqueIdCounter++; 16 | } 17 | 18 | bool ScriptModule::onAttach() 19 | { 20 | return true; 21 | } 22 | 23 | bool ScriptModule::onDetach() 24 | { 25 | return true; 26 | } 27 | 28 | void ScriptModule::remove() 29 | { 30 | removed = true; 31 | } 32 | 33 | bool ScriptModule::isRemoved() 34 | { 35 | return removed; 36 | } 37 | 38 | bool ScriptModule::isAttached() 39 | { 40 | return attached; 41 | } 42 | 43 | bool ScriptModule::isDetaching() 44 | { 45 | return detaching; 46 | } 47 | 48 | void ScriptModule::setAttached() 49 | { 50 | attached = true; 51 | } 52 | 53 | void ScriptModule::setDetaching() 54 | { 55 | detaching = true; 56 | } 57 | 58 | uint64_t ScriptModule::getUniqueId() 59 | { 60 | return uniqueId; 61 | } 62 | 63 | uint64_t ScriptModule::uniqueIdCounter = 0; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /ds3runtime/scripts/animation_id_handler.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "animation_id_handler.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | 6 | namespace ds3runtime { 7 | 8 | void AnimationIdHandler::execute() 9 | { 10 | if (!PlayerIns::isMainChrLoaded()) return; 11 | 12 | for (int32_t i = 0; i <= 5; ++i) { 13 | if (!PlayerIns::isChrWithOffsetNumber(static_cast(i))) continue; 14 | const uintptr_t playerAddress = PlayerIns::getAddressByOffsetNumber(static_cast(i)); 15 | PlayerIns chr(playerAddress); 16 | uintptr_t entityAnimationHandle = reinterpret_cast(accessMultilevelPointer(chr.getAddress() + 0x1F90, 0x10)); 17 | if (!entityAnimationHandle) return; 18 | PlayerIns::Handle characterHandle = chr.getHandle(); 19 | 20 | for (int i = 0; i < 10; i++) { 21 | const int animationId = *accessMultilevelPointer(entityAnimationHandle, 0x20 + (uintptr_t)i * 0x10); 22 | 23 | if (animationIdMap[characterHandle][i] != animationId) { 24 | latestAnimationIdMap[characterHandle] = animationId; 25 | } 26 | 27 | animationIdMap[characterHandle][i] = animationId; 28 | } 29 | } 30 | } 31 | 32 | std::optional AnimationIdHandler::getAnimationId(ChrIns chr) 33 | { 34 | if (!latestAnimationIdMap.contains(chr.getHandle())) return {}; 35 | return latestAnimationIdMap[chr.getHandle()]; 36 | } 37 | 38 | bool AnimationIdHandler::isPlayingAnimationId(ChrIns chr, int32_t animationId) 39 | { 40 | if (!animationIdMap.contains(chr.getHandle())) return false; 41 | 42 | for (auto entry : animationIdMap[chr.getHandle()]) { 43 | if (entry.second == animationId) return true; 44 | } 45 | 46 | return false; 47 | } 48 | 49 | std::optional> AnimationIdHandler::getAnimationIdBuffer(ChrIns chr) 50 | { 51 | if (!animationIdMap.contains(chr.getHandle())) return {}; 52 | return animationIdMap[chr.getHandle()]; 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/animation_id_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/player_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class AnimationIdHandler : public ScriptModule 14 | { 15 | public: 16 | void execute(); 17 | 18 | std::string getName() 19 | { 20 | return "animation_id_handler"; 21 | } 22 | 23 | std::optional getAnimationId(ChrIns chr); 24 | 25 | bool isPlayingAnimationId(ChrIns chr, int32_t animationId); 26 | 27 | std::optional> getAnimationIdBuffer(ChrIns chr); 28 | private: 29 | std::unordered_map> animationIdMap; 30 | std::unordered_map latestAnimationIdMap; 31 | }; 32 | 33 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/bonk_sound_cosmetic.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "bonk_sound_cosmetic.h" 4 | #include 5 | #include "fmod_system_handler.h" 6 | 7 | namespace ds3runtime { 8 | 9 | bool BonkSoundCosmetic::onAttach() 10 | { 11 | if (!ds3runtime_global->accessScript("fmod_system_handler") 12 | || !((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler"))->getFMODSystem()) return false; 13 | 14 | ((SprjChrDamageModuleHook*)ds3runtime_global 15 | ->accessHook("sprj_chr_damage_module_hook"))->installFilter("bonk_sound_cosmetic", [&](uintptr_t, uintptr_t, char* attackDataBuffer) -> bool { 16 | int32_t* atkId = reinterpret_cast(attackDataBuffer + 0x44); 17 | static const int32_t reinforedClubBaseAtkId = 3302000; 18 | static const int32_t clubBaseAtkId = 3300000; 19 | 20 | if (*atkId - *atkId % 1000 == 3300000 21 | || *atkId - *atkId % 1000 == 3302000) { 22 | FMOD::System* fmodSystem = ((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler"))->getFMODSystem(); 23 | FMOD::Sound* bonkSound = nullptr; 24 | fmodSystem->createStream("DS3RuntimeScripting\\assets\\sounds\\bonk.wav", FMOD_DEFAULT, nullptr, &bonkSound); 25 | fmodSystem->playSound(bonkSound, nullptr, false, nullptr); 26 | } 27 | 28 | return true; 29 | }); 30 | 31 | return true; 32 | } 33 | 34 | void BonkSoundCosmetic::execute() 35 | { 36 | 37 | } 38 | 39 | bool BonkSoundCosmetic::onDetach() 40 | { 41 | ((SprjChrDamageModuleHook*)ds3runtime_global->accessHook("sprj_chr_damage_module_hook"))->uninstallFilter("bonk_sound_cosmetic"); 42 | return true; 43 | } 44 | 45 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/bonk_sound_cosmetic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class BonkSoundCosmetic : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "bonk_sound_cosmetic"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/damage_update_test.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | #include 11 | 12 | namespace ds3runtime { 13 | 14 | class DamageUpdateTest : public ScriptModule 15 | { 16 | public: 17 | bool onAttach(); 18 | 19 | bool onDetach(); 20 | 21 | void execute(); 22 | 23 | std::string getName() 24 | { 25 | return "damage_update_test"; 26 | } 27 | private: 28 | uint64_t currentFrame = 0; 29 | uint64_t lastFrameWithHitReceive = 0; 30 | uint64_t totalFramesBetweenHitReceives = 0; 31 | spdlog::stopwatch lastHitSendTime; 32 | spdlog::stopwatch lastHitReceiveTime; 33 | std::atomic didReceiveHitOnThisFrame = false; 34 | }; 35 | 36 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/ds1_passive_poise.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "ds1_passive_poise.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include "param_patcher.h" 6 | #include 7 | 8 | namespace ds3runtime { 9 | 10 | bool DS1PassivePoise::onAttach() 11 | { 12 | for (int32_t id : ((ParamPatcher*)ds3runtime_global->accessScript("param_patcher"))->getIdsInParam(L"EquipParamProtector")) { 13 | const static float GLOBAL_POISE_MULTIPLYER = 1.13f; 14 | ParamHandler armor("ds1_passive_poise", L"EquipParamProtector", id); 15 | uint16_t newValue = static_cast(GLOBAL_POISE_MULTIPLYER * 100 * (1 - armor.read(0x110))); 16 | armor.patch(0xAE, newValue); //Write poise value into saDurablity value 17 | } 18 | 19 | for (int32_t id : ((ParamPatcher*)ds3runtime_global->accessScript("param_patcher"))->getIdsInParam(L"EquipParamWeapon")) { 20 | ParamHandler weapon("ds1_passive_poise", L"EquipParamWeapon", id); 21 | weapon.patch(0x174, 0); //Write base poise value to nothing 22 | } 23 | 24 | return true; 25 | } 26 | 27 | void DS1PassivePoise::execute() 28 | { 29 | if (!WorldChrMan::hasInstance() || !PlayerIns::isMainChrLoaded() || !PlayerIns(PlayerIns::getMainChrAddress()).hasHkbCharacter()) return; 30 | PlayerIns mainChr(PlayerIns::getMainChrAddress()); 31 | WorldChrMan worldChrMan(WorldChrMan::getInstance()); 32 | 33 | if (!worldChrMan.doesChrHaveSpEffect(mainChr.getAddress(), 400000)) { 34 | mainChr.applySpEffect(400000); 35 | } 36 | } 37 | 38 | bool DS1PassivePoise::onDetach() 39 | { 40 | ((ParamPatcher*)ds3runtime_global->accessScript("param_patcher"))->restore("ds1_passive_poise"); 41 | return true; 42 | } 43 | 44 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/ds1_passive_poise.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class DS1PassivePoise : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "ds1_passive_poise"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/fmod_system_handler.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "fmod_system_handler.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | bool FMODSystemHandler::onAttach() 14 | { 15 | FMOD_RESULT result = FMOD::System_Create(&fmodSystem); 16 | 17 | if (result != FMOD_OK) { 18 | printf("FMOD error at FMODSystemHandler::onAttach, call of FMOD::System_Create: (%d) %s\n", 19 | result, FMOD_ErrorString(result)); 20 | fmodSystem = nullptr; 21 | return true; 22 | } 23 | 24 | result = fmodSystem->init(512, FMOD_INIT_NORMAL, nullptr); 25 | 26 | if (result != FMOD_OK) { 27 | printf("FMOD error at FMODSystemHandler::onAttach, call of FMOD::System::init: (%d) %s\n", 28 | result, FMOD_ErrorString(result)); 29 | fmodSystem = nullptr; 30 | } 31 | 32 | return true; 33 | } 34 | 35 | bool FMODSystemHandler::onDetach() 36 | { 37 | if (!fmodSystem) return true; 38 | fmodSystem->release(); 39 | return true; 40 | } 41 | 42 | void FMODSystemHandler::execute() 43 | { 44 | if (!fmodSystem) return; 45 | fmodSystem->update(); 46 | } 47 | 48 | FMOD::System* FMODSystemHandler::getFMODSystem() 49 | { 50 | return fmodSystem; 51 | } 52 | 53 | void FMODSystemHandler::tryErrorSound() 54 | { 55 | if (fmodSystem) { 56 | FMOD::Sound* sound = nullptr; 57 | fmodSystem->createStream("DS3RuntimeScripting\\assets\\sounds\\msg_bad.wav", FMOD_DEFAULT, nullptr, &sound); 58 | fmodSystem->playSound(sound, nullptr, false, nullptr); 59 | } 60 | } 61 | 62 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/fmod_system_handler.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class FMODSystemHandler : public ScriptModule 13 | { 14 | public: 15 | bool onAttach(); 16 | 17 | bool onDetach(); 18 | 19 | void execute(); 20 | 21 | std::string getName() 22 | { 23 | return "fmod_system_handler"; 24 | } 25 | 26 | FMOD::System* getFMODSystem(); 27 | 28 | void tryErrorSound(); 29 | private: 30 | FMOD::System* fmodSystem; 31 | }; 32 | 33 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/hotkey_manager.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "hotkey_manager.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | 6 | namespace ds3runtime { 7 | 8 | bool HotkeyManager::onAttach() 9 | { 10 | return true; 11 | } 12 | 13 | bool HotkeyManager::onDetach() 14 | { 15 | if (originalWindowProc) SetWindowLongPtrW(windowHandle, GWLP_WNDPROC, (LONG_PTR)originalWindowProc); 16 | return true; 17 | } 18 | 19 | void HotkeyManager::execute() 20 | { 21 | if (originalWindowProc == 0) { 22 | windowHandle = FindWindowW(0, L"DARK SOULS III"); 23 | DWORD processId; 24 | 25 | if (windowHandle 26 | && GetWindowThreadProcessId(windowHandle, &processId) 27 | && processId == GetCurrentProcessId() && GetWindowLongPtrW(windowHandle, GWLP_WNDPROC) != (LONG_PTR)hotkeyWindowProc) { 28 | auto previousWindowProc = (WNDPROC)SetWindowLongPtrW(windowHandle, GWLP_WNDPROC, (LONG_PTR)hotkeyWindowProc); 29 | originalWindowProc = previousWindowProc; 30 | instance = this; 31 | } 32 | } 33 | } 34 | 35 | void HotkeyManager::registerKeyDownEvent(std::string eventName, std::function callback) 36 | { 37 | keyDownEvents[eventName] = callback; 38 | } 39 | 40 | void HotkeyManager::unregisterKeyDownEvent(std::string eventName) 41 | { 42 | keyDownEvents.erase(eventName); 43 | } 44 | 45 | void HotkeyManager::registerKeyUpEvent(std::string eventName, std::function callback) 46 | { 47 | keyUpEvents[eventName] = callback; 48 | } 49 | 50 | void HotkeyManager::unregisterKeyUpEvent(std::string eventName) 51 | { 52 | keyUpEvents.erase(eventName); 53 | } 54 | 55 | HotkeyManager* HotkeyManager::instance = nullptr; 56 | 57 | LRESULT HotkeyManager::hotkeyWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 58 | { 59 | switch (uMsg) { 60 | case WM_KEYDOWN: 61 | for (auto event : instance->keyDownEvents) event.second(); 62 | break; 63 | case WM_KEYUP: 64 | for (auto event : instance->keyUpEvents) event.second(); 65 | break; 66 | case WM_SYSKEYDOWN: 67 | break; 68 | case WM_SYSKEYUP: 69 | break; 70 | } 71 | 72 | return CallWindowProcW(instance->originalWindowProc, hwnd, uMsg, wParam, lParam); 73 | } 74 | 75 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/hotkey_manager.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class HotkeyManager : public ScriptModule 13 | { 14 | public: 15 | bool onAttach(); 16 | 17 | void execute(); 18 | 19 | bool onDetach(); 20 | 21 | std::string getName() 22 | { 23 | return "hotkey_manager"; 24 | } 25 | 26 | void registerKeyDownEvent(std::string eventName, std::function callback); 27 | 28 | void unregisterKeyDownEvent(std::string eventName); 29 | 30 | void registerKeyUpEvent(std::string eventName, std::function callback); 31 | 32 | void unregisterKeyUpEvent(std::string eventName); 33 | private: 34 | HWND windowHandle; 35 | WNDPROC originalWindowProc = 0; 36 | std::unordered_map> keyDownEvents; 37 | std::unordered_map> keyUpEvents; 38 | 39 | static HotkeyManager* instance; 40 | 41 | static LRESULT hotkeyWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); 42 | }; 43 | 44 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/imposter_sound_cosmetic.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "imposter_sound_cosmetic.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include 6 | #include 7 | #include 8 | 9 | namespace ds3runtime { 10 | 11 | bool ImposterSoundCosmetic::onAttach() 12 | { 13 | if (!ds3runtime_global->accessScript("fmod_system_handler") 14 | || !((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler"))->getFMODSystem()) return false; 15 | 16 | ((SessionReceiveHook*)ds3runtime_global 17 | ->accessHook("session_receive_hook")) 18 | ->installPacketFilter("imposter_sound_cosmetic", [&](uintptr_t networkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength, uint32_t receiveLength) -> uint32_t { 19 | auto session = PlayerNetworkSession(networkSession); 20 | auto sessionManager = SprjSessionManager(SprjSessionManager::getInstance()); 21 | 22 | if (id == 8) { 23 | auto packet = packet::PlayerStruct(buffer, receiveLength); 24 | const int8_t summonType = packet.getField("summon_type"); 25 | 26 | if (summonType == 3 || summonType == 17 || summonType == 18) { 27 | FMOD::System* fmodSystem = ((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler")) 28 | ->getFMODSystem(); 29 | FMOD::Sound* imposterSound = nullptr; 30 | fmodSystem->createStream("DS3RuntimeScripting\\assets\\sounds\\imposter.wav", FMOD_DEFAULT, nullptr, &imposterSound); 31 | fmodSystem->playSound(imposterSound, nullptr, false, nullptr); 32 | } 33 | } 34 | 35 | return receiveLength; 36 | }); 37 | 38 | return true; 39 | } 40 | 41 | void ImposterSoundCosmetic::execute() 42 | { 43 | } 44 | 45 | bool ImposterSoundCosmetic::onDetach() 46 | { 47 | ((SessionReceiveHook*)ds3runtime_global 48 | ->accessHook("session_receive_hook")) 49 | ->uninstallPacketFilter("imposter_sound_cosmetic"); 50 | return true; 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/imposter_sound_cosmetic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class ImposterSoundCosmetic : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "imposter_sound_cosmetic"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/interrupt_attacks.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class InterruptAttacks : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "interrupt_attacks"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/jmp_table_status_reset.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "jmp_table_status_reset.h" 4 | #include "ds3runtime/hooks/jmp_table_status.h" 5 | 6 | namespace ds3runtime { 7 | 8 | bool JmpTableStatusReset::onAttach() 9 | { 10 | return true; 11 | } 12 | 13 | void JmpTableStatusReset::execute() 14 | { 15 | reinterpret_cast(ds3runtime_global->accessHook("jmp_table_status"))->tickJmpTableStatus(); 16 | } 17 | 18 | bool JmpTableStatusReset::onDetach() 19 | { 20 | return true; 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/jmp_table_status_reset.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class JmpTableStatusReset : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "jmp_table_status_reset"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/latency_simulator.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/async_module.h" 9 | #include "ds3runtime/game_packet.h" 10 | #include "ds3runtime/hooks/session_send_hook.h" 11 | 12 | namespace ds3runtime { 13 | 14 | struct LatencyAttributes { 15 | uint64_t flatOutLatency; 16 | uint64_t flatInLatency; 17 | uint64_t jitterOut; 18 | uint64_t jitterIn; 19 | float dropRateOut; 20 | float dropRateIn; 21 | }; 22 | 23 | struct DelayedPacket { 24 | uint64_t timeToSend; 25 | uintptr_t* networkHandle; 26 | std::optional packet; 27 | }; 28 | 29 | class LatencySimulator : public ScriptModule 30 | { 31 | public: 32 | LatencySimulator(LatencyAttributes latencyAttributes); 33 | 34 | bool onAttach(); 35 | 36 | bool onDetach(); 37 | 38 | void execute(); 39 | 40 | std::string getName() 41 | { 42 | return "latency_simulator"; 43 | } 44 | private: 45 | std::vector delayedPackets; 46 | LatencyAttributes latencyAttributes; 47 | }; 48 | 49 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/mod_p2p_filter.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include 4 | #include 5 | #include 6 | 7 | namespace ds3runtime { 8 | 9 | bool ModP2PFilter::onAttach() 10 | { 11 | ((SessionReceiveHook*)ds3runtime_global 12 | ->accessHook("session_receive_hook"))->installPacketFilter("mod_p2p_filter", [&](uintptr_t networkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength, uint32_t receiveLength) -> uint32_t { 13 | if (id != 73) return receiveLength; 14 | 15 | if (*(uint16_t*)(buffer + 1) == modKey) { 16 | *(uint16_t*)(buffer + 1) = 0; 17 | *(uint8_t*)buffer = *(uint8_t*)(buffer + 3); 18 | } 19 | else { 20 | *(uint8_t*)buffer = 1; 21 | } 22 | 23 | return receiveLength; 24 | }); 25 | 26 | ((SessionSendHook*)ds3runtime_global 27 | ->accessHook("session_send_hook"))->installPacketFilter("mod_p2p_filter", [&](uintptr_t playerNetworkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength) -> uint32_t { 28 | if (id != 73) return maxLength; 29 | *(uint16_t*)(buffer + 1) = modKey; 30 | *(uint8_t*)(buffer + 3) = *(uint8_t*)buffer; 31 | *(uint8_t*)buffer = 1; 32 | return maxLength; 33 | }); 34 | 35 | return true; 36 | } 37 | 38 | void ModP2PFilter::execute() 39 | { 40 | } 41 | 42 | bool ModP2PFilter::onDetach() 43 | { 44 | ((SessionReceiveHook*)ds3runtime_global 45 | ->accessHook("session_receive_hook")) 46 | ->uninstallPacketFilter("mod_p2p_filter"); 47 | ((SessionReceiveHook*)ds3runtime_global 48 | ->accessHook("session_send_hook")) 49 | ->uninstallPacketFilter("mod_p2p_filter"); 50 | return true; 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/mod_p2p_filter.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime{ 12 | 13 | class ModP2PFilter : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "mod_p2p_fitler"; 25 | } 26 | private: 27 | uint16_t modKey = 163; 28 | }; 29 | 30 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/npc_mod_test.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "npc_mod_test.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include 6 | #include 7 | 8 | namespace ds3runtime { 9 | 10 | bool NPCModTest::onAttach() 11 | { 12 | ParamHandler drakeBloodKnight("npc_mod_test", L"CharaInitParam", 28800); 13 | drakeBloodKnight.patch("equip_Wep_Right", 4070005); 14 | drakeBloodKnight.patch("equip_Wep_Left", 21100005); 15 | drakeBloodKnight.patch("equip_Helm", 88000000); 16 | drakeBloodKnight.patch("equip_Armor", 88001000); 17 | drakeBloodKnight.patch("equip_Gaunt", 88002000); 18 | drakeBloodKnight.patch("equip_Leg", 88003000); 19 | return true; 20 | } 21 | 22 | void NPCModTest::execute() 23 | { 24 | } 25 | 26 | bool NPCModTest::onDetach() 27 | { 28 | ((ParamPatcher*)ds3runtime_global->accessScript("param_patcher"))->restore("npc_mod_test"); 29 | return true; 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/npc_mod_test.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class NPCModTest : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "npc_mod_test"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/sync_call_script.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "sync_call_script.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | void SyncCallScript::execute() 14 | { 15 | for (auto bulletSpawn : syncBullets) bulletSpawn.launch(); 16 | syncBullets.clear(); 17 | } 18 | 19 | void SyncCallScript::launchBulletSync(BulletSpawn bulletSpawn) { 20 | syncBullets.push_back(bulletSpawn); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/sync_call_script.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/bullet_spawn.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class SyncCallScript : public ScriptModule 14 | { 15 | public: 16 | void execute(); 17 | 18 | std::string getName() 19 | { 20 | return "sync_call_script"; 21 | } 22 | 23 | void launchBulletSync(BulletSpawn bulletSpawn); 24 | private: 25 | std::vector syncBullets; 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/talk_with_player_name.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "talk_with_player_name.h" 4 | #include "ds3runtime/ds3runtime.h" 5 | #include 6 | #include 7 | 8 | namespace ds3runtime { 9 | 10 | bool TalkWithPlayerName::onAttach() 11 | { 12 | ((SessionReceiveHook*)ds3runtime_global 13 | ->accessHook("session_receive_hook") 14 | .get())->installPacketFilter("talk_with_player_name", [&](uintptr_t networkSession, uintptr_t* networkHandle, int id, char* buffer, uint32_t maxLength, uint32_t receiveLength) -> uint32_t { 15 | auto session = PlayerNetworkSession(networkSession); 16 | auto sessionManager = SprjSessionManager(SprjSessionManager::getInstance()); 17 | 18 | if (id == 8) { 19 | auto packet = packet::PlayerStruct(buffer, receiveLength); 20 | 21 | } 22 | 23 | return receiveLength; 24 | }); 25 | 26 | return true; 27 | } 28 | 29 | void TalkWithPlayerName::execute() 30 | { 31 | } 32 | 33 | void TalkWithPlayerName::onDetach() 34 | { 35 | ((SessionReceiveHook*)ds3runtime_global 36 | ->accessHook("session_receive_hook") 37 | .get())->uninstallPacketFilter("player_name_talk"); 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/talk_with_player_name.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class TalkWithPlayerName : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | void onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "talk_with_player_name"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/yhorm_scream_on_warcry_cosmetic.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "yhorm_scream_on_warcry_cosmetic.h" 4 | #include 5 | #include "fmod_system_handler.h" 6 | 7 | namespace ds3runtime { 8 | 9 | bool YhormScreamOnWarcry::onAttach() 10 | { 11 | if (!ds3runtime_global->accessScript("fmod_system_handler") 12 | || !((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler"))->getFMODSystem()) return false; 13 | 14 | ((PlayAnimationHook*)ds3runtime_global 15 | ->accessHook("play_anim_hook"))->installFilter("yhorm_scream_on_warcry_cosmetic", [this](uintptr_t hkbCharacter, int32_t animationPlayId) -> int32_t { 16 | if (!PlayerIns::isMainChrLoaded()) return animationPlayId; 17 | ChrIns chr(PlayerIns::getMainChrAddress()); 18 | if (!chr.isValid() || !chr.hasHkbCharacter() || hkbCharacter != chr.getHkbCharacter() || animationPlayId != 3338) return animationPlayId; 19 | FMOD::System* fmodSystem = ((FMODSystemHandler*)ds3runtime_global->accessScript("fmod_system_handler"))->getFMODSystem(); 20 | FMOD::Sound* yhormScreamSound = nullptr; 21 | fmodSystem->createStream("DS3RuntimeScripting\\assets\\sounds\\yhorm_scream.wav", FMOD_DEFAULT, nullptr, &yhormScreamSound); 22 | fmodSystem->playSound(yhormScreamSound, nullptr, false, nullptr); 23 | return animationPlayId; 24 | }); 25 | 26 | return true; 27 | } 28 | 29 | void YhormScreamOnWarcry::execute() 30 | { 31 | 32 | } 33 | 34 | bool YhormScreamOnWarcry::onDetach() 35 | { 36 | ((PlayAnimationHook*)ds3runtime_global->accessHook("play_anim_hook"))->uninstallFilter("yhorm_scream_on_warcry_cosmetic"); 37 | return true; 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /ds3runtime/scripts/yhorm_scream_on_warcry_cosmetic.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "ds3runtime/script_module.h" 9 | #include "ds3runtime/ds3runtime.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class YhormScreamOnWarcry : public ScriptModule 14 | { 15 | public: 16 | bool onAttach(); 17 | 18 | bool onDetach(); 19 | 20 | void execute(); 21 | 22 | std::string getName() 23 | { 24 | return "yhorm_scream_on_warcry_cosmetic"; 25 | } 26 | }; 27 | 28 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_bullet_state.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_bullet_state.h" 4 | 5 | namespace ds3runtime { 6 | 7 | SprjBulletState::SprjBulletState(uintptr_t address) 8 | { 9 | } 10 | 11 | bool SprjBulletState::isValid() 12 | { 13 | return true; //Fix! 14 | } 15 | 16 | std::vector SprjBulletState::getCoordinates() 17 | { 18 | std::vector vector(3); 19 | memcpy(&vector[0], (void*)(address + 0x10), 12); 20 | return vector; 21 | } 22 | 23 | std::vector SprjBulletState::getLaunchVector() 24 | { 25 | std::vector vector(3); 26 | for (uintptr_t i = 0; i < 3; i++) memcpy(&vector[i], (void*)(address + 0xAC8 + i * 0x10), 4); 27 | return vector; 28 | } 29 | 30 | float SprjBulletState::getDuration() 31 | { 32 | return *accessMultilevelPointer(address + 0xC9C); 33 | } 34 | 35 | int32_t SprjBulletState::getId() 36 | { 37 | return *accessMultilevelPointer(address + 0xC88); 38 | } 39 | 40 | int32_t SprjBulletState::getOwnerHandle() 41 | { 42 | int handle = *accessMultilevelPointer(address + 0x4EC); 43 | if (handle != -1) return handle; 44 | handle = *accessMultilevelPointer(address + 0xB98); 45 | if (handle != -1) return handle; 46 | handle = *accessMultilevelPointer(address + 0x1898); 47 | return handle; 48 | } 49 | 50 | bool SprjBulletState::isBullet(uintptr_t address) 51 | { 52 | return true; //Fix! 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_bullet_state.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | * 6 | * -Setters- Online limitations. 7 | * Almost any changes done by writing data to the pointers of this handle will result in desync of this bullet 8 | * over the network, it is therefor only recommended to use getters. 9 | */ 10 | 11 | #pragma once 12 | #include "pch.h" 13 | #include "memory_util.h" 14 | 15 | namespace ds3runtime { 16 | 17 | class SprjBulletState 18 | { 19 | public: 20 | SprjBulletState(uintptr_t address); 21 | 22 | /* 23 | * Check if this bullet and it's base address is valid. 24 | * 25 | * Peformes several multi-level pointer checks. 26 | * 27 | * @return True if bullet is valid. 28 | */ 29 | bool isValid(); 30 | 31 | /* 32 | * Gets the coordinates of this bullet. 33 | * 34 | * @return A 3-value vector that contains the coordinates of this bullet. 35 | */ 36 | std::vector getCoordinates(); 37 | 38 | /* 39 | * Gets the initial launch vector of this bullet. 40 | * 41 | * This is not the active direction the bullet, this is the absolute direction vector that the bullet initially launched 42 | * off of. 43 | * 44 | * @return A 3-value vector that contains the vector this bullet initially launched off of. 45 | */ 46 | std::vector getLaunchVector(); 47 | 48 | /* 49 | * Gets the time elapsed since this bullet was launched. 50 | * 51 | * @return The time elapsed since this bullet was launched as a floating point value. 52 | */ 53 | float getDuration(); 54 | 55 | /* 56 | * Gets the "Bullet" param id of this bullet. 57 | * 58 | * @return The "Bullet" param id of this bullet. 59 | */ 60 | int32_t getId(); 61 | 62 | /* 63 | * Gets the handle id which is used to identify the owning ChrIns of this bullet. 64 | * 65 | * @return The handle id which is used to identify the owning ChrIns of this bullet. 66 | */ 67 | int32_t getOwnerHandle(); 68 | 69 | static bool isBullet(uintptr_t address); 70 | private: 71 | protected: 72 | uintptr_t address; 73 | }; 74 | 75 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_chr_damage_module.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_chr_damage_module.h" 4 | #include "databaseaddress.h" 5 | #include "player_ins.h" 6 | #include "ds3runtime.h" 7 | 8 | namespace ds3runtime { 9 | 10 | SprjChrDamageModule::SprjChrDamageModule(uintptr_t address) 11 | { 12 | this->address = address; 13 | } 14 | 15 | void SprjChrDamageModule::applyAttackFromChr(uintptr_t attackerChr, S_ChrDamage* chrDamageData) 16 | { 17 | auto hook = ds3runtime_global->accessHook("sprj_chr_damage_module_hook"); 18 | void (*function)(...); 19 | *(uintptr_t*)&function = *accessMultilevelPointer(address, 0x40); 20 | function(address, attackerChr, chrDamageData); 21 | } 22 | 23 | }; -------------------------------------------------------------------------------- /ds3runtime/sprj_chr_damage_module.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | 10 | namespace ds3runtime { 11 | 12 | struct S_ChrDamage { 13 | float AtkPhys; 14 | float AtkMagic; 15 | float AtkFire; 16 | float AtkLightning; 17 | float AtkDark; 18 | int16_t AtkPhysCorrection; 19 | int16_t AtkMagicCorrection; 20 | int16_t AtkFireCorrection; 21 | int16_t AtkLightningCorrection; 22 | int16_t AtkDarkCorrection; 23 | uint8_t Unknown1[6]; 24 | int32_t DamageLevel; 25 | int32_t SpAttribute; 26 | float AtkStam; 27 | uint8_t Unknown2[20]; 28 | int32_t AtkId; 29 | uint8_t Unknown3[52]; 30 | int32_t DisableHit; 31 | int32_t SpEffect1; 32 | int32_t SpEffect2; 33 | int32_t SpEffect3; 34 | int32_t SpEffect4; 35 | int32_t SpEffect5; 36 | uint8_t Unknown4[32]; 37 | float Unknown5; 38 | float Unknown6; 39 | float Unknown7; 40 | float Unknown8; 41 | int32_t Hit0_DmyPoly1; //??? Could be something else 42 | int32_t Hit1_DmyPoly1; 43 | uint8_t Unknown9[8]; 44 | float AtkSuperArmor; 45 | uint8_t Unknown10[9]; 46 | bool BypassIFrames; 47 | uint8_t Unknown11[62]; 48 | float PositionX; 49 | float PositionY; 50 | float PositionZ; 51 | uint8_t Unknown12[36]; 52 | int32_t HeadshotFlag; 53 | uint8_t Unknown13[3]; 54 | int8_t GuardFlag; 55 | uint8_t Unknown14[16]; 56 | float AtkPhysRate; 57 | float AtkMagicRate; 58 | float AtkFireRate; 59 | float AtkLightningRate; 60 | float AtkDarkRate; 61 | uint8_t Unknown15[60]; 62 | int8_t GuardBreakFlag; 63 | uint8_t Unknown16[4]; 64 | int8_t WasDodging; 65 | uint8_t Unknown17[1000]; 66 | }; 67 | 68 | class SprjChrDamageModule 69 | { 70 | public: 71 | SprjChrDamageModule(uintptr_t address); 72 | 73 | void applyAttackFromChr(uintptr_t attackerChr, S_ChrDamage* chrDamageData); 74 | private: 75 | uintptr_t address; 76 | }; 77 | 78 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_gaitem_imp.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_gaitem_imp.h" 4 | #include "databaseaddress.h" 5 | 6 | namespace ds3runtime { 7 | 8 | SprjGaitemImp::SprjGaitemImp(uintptr_t address) 9 | { 10 | this->address = address; 11 | } 12 | 13 | std::optional SprjGaitemImp::getItemByUniqueId(uint32_t uniqueId) 14 | { 15 | std::optional item; 16 | uintptr_t* itemPointer = accessMultilevelPointer(address + (uniqueId % 0x10000ull) * 8ull + 0x40ull); 17 | 18 | if (itemPointer) { 19 | auto itemCheck = SprjGaitemIns(*itemPointer); 20 | if (itemCheck.isValid()) item = itemCheck; 21 | } 22 | 23 | return item; 24 | } 25 | 26 | uintptr_t SprjGaitemImp::getInstance() 27 | { 28 | return *accessMultilevelPointer(DataBaseAddress::SprjGaitem); 29 | } 30 | 31 | bool SprjGaitemImp::hasInstance() 32 | { 33 | return accessMultilevelPointer(DataBaseAddress::SprjGaitem) != nullptr; 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_gaitem_imp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | #include "sprj_gaitem_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class SprjGaitemImp 14 | { 15 | public: 16 | SprjGaitemImp(uintptr_t address); 17 | 18 | std::optional getItemByUniqueId(uint32_t uniqueId); 19 | 20 | static uintptr_t getInstance(); 21 | 22 | static bool hasInstance(); 23 | private: 24 | uintptr_t address; 25 | }; 26 | 27 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_gaitem_ins.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_gaitem_ins.h" 4 | 5 | namespace ds3runtime { 6 | 7 | SprjGaitemIns::SprjGaitemIns(uintptr_t address) 8 | { 9 | this->address = address; 10 | } 11 | 12 | int32_t SprjGaitemIns::getId() 13 | { 14 | return *accessMultilevelPointer(address + 0xC); 15 | } 16 | 17 | bool SprjGaitemIns::isValid() 18 | { 19 | auto vtablePtr = accessMultilevelPointer(address); 20 | return vtablePtr && (*vtablePtr == 0x14289A8C8 || *vtablePtr == 0x14289A7D8); 21 | } 22 | 23 | uintptr_t SprjGaitemIns::getVtablePtr() 24 | { 25 | return *accessMultilevelPointer(address); 26 | } 27 | 28 | uintptr_t SprjGaitemIns::getAddress() 29 | { 30 | return address; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_gaitem_ins.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | #include "sprj_gaitem_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class SprjGaitemIns 14 | { 15 | public: 16 | SprjGaitemIns(uintptr_t address); 17 | 18 | int32_t getId(); 19 | 20 | bool isValid(); 21 | 22 | uintptr_t getVtablePtr(); 23 | private: 24 | uintptr_t address; 25 | protected: 26 | uintptr_t getAddress(); 27 | }; 28 | 29 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_lua_event_condition_item.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_lua_event_condition_item.h" 4 | #include "databaseaddress.h" 5 | 6 | namespace ds3runtime { 7 | 8 | SprjLuaEventConditionItem::SprjLuaEventConditionItem(uintptr_t address) 9 | { 10 | this->address = address; 11 | } 12 | 13 | void SprjLuaEventConditionItem::giveItem(int32_t quantity, int32_t giveItemId, int32_t durablity) 14 | { 15 | static int countAdded = 0; 16 | countAdded++; 17 | int32_t input1[4] = {}; 18 | int32_t input2[8] = {}; 19 | input1[0] = 1; 20 | input1[1] = giveItemId; 21 | input1[2] = quantity; 22 | input1[3] = durablity; 23 | void (*function)(...); 24 | *(uintptr_t*)&function = 0x1407BBA70; 25 | function(address, input1, input2); 26 | } 27 | 28 | uintptr_t SprjLuaEventConditionItem::getInstance() 29 | { 30 | return *accessMultilevelPointer(DataBaseAddress::SprjLuaEventConditionItem); 31 | } 32 | 33 | bool SprjLuaEventConditionItem::hasInstance() 34 | { 35 | return accessMultilevelPointer(DataBaseAddress::SprjLuaEventConditionItem) != nullptr; 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_lua_event_condition_item.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | 10 | namespace ds3runtime { 11 | 12 | class SprjLuaEventConditionItem 13 | { 14 | public: 15 | SprjLuaEventConditionItem(uintptr_t address); 16 | 17 | void giveItem(int32_t quantity, int32_t giveItemId, int32_t durablity); 18 | 19 | static uintptr_t getInstance(); 20 | 21 | static bool hasInstance(); 22 | private: 23 | uintptr_t address; 24 | }; 25 | 26 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_session_manager.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | */ 6 | 7 | #pragma once 8 | #include "pch.h" 9 | #include "memory_util.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class SprjSessionManager 14 | { 15 | public: 16 | enum class NetworkState : uint8_t 17 | { 18 | None = 0, 19 | TrytoCreateSession = 1, 20 | FailedToCreateSessio =2, 21 | Host = 3, 22 | TrytoJoinSession = 4, 23 | FailedToJoinSession = 5, 24 | Client = 6, 25 | OnLeaveSession = 7, 26 | FailedToLeaveSession = 8 27 | }; 28 | 29 | SprjSessionManager(uintptr_t address); 30 | 31 | NetworkState getState(); 32 | 33 | bool areHandlesEqual(uintptr_t* networkHandle, uintptr_t* networkHandleOther); 34 | 35 | bool isValidNetworkHandle(uintptr_t* networkHandle); 36 | 37 | void disconnectNetworkHandle(uintptr_t* networkHandle); 38 | 39 | std::vector getNetworkHandles(); 40 | 41 | bool anyActiveConnections(); 42 | 43 | uintptr_t getPlayerInsByNetworkHandle(uintptr_t* networkHandle); 44 | 45 | uint64_t getSteamIdByNetworkHandle(uintptr_t* networkHandle); 46 | 47 | void leaveSession(); 48 | 49 | static uintptr_t getPlayerGameDataByNetworkHandle(uintptr_t* networkHandle); 50 | 51 | static uintptr_t getInstance(); 52 | 53 | static bool hasInstance(); 54 | private: 55 | uintptr_t address; 56 | }; 57 | 58 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_wep_gaitem_ins.cpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include "pch.h" 3 | #include "sprj_wep_gaitem_ins.h" 4 | 5 | namespace ds3runtime { 6 | 7 | int32_t SprjWepGaitemIns::getDurablity() 8 | { 9 | return *accessMultilevelPointer(getAddress() + 0x10); 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /ds3runtime/sprj_wep_gaitem_ins.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | */ 5 | 6 | #pragma once 7 | #include "pch.h" 8 | #include "memory_util.h" 9 | #include "sprj_gaitem_ins.h" 10 | 11 | namespace ds3runtime { 12 | 13 | class SprjWepGaitemIns : public SprjGaitemIns 14 | { 15 | public: 16 | int32_t getDurablity(); 17 | }; 18 | 19 | } -------------------------------------------------------------------------------- /ds3runtime/world_chr_man.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DS3RuntimeScripting 3 | * Contributers: Amir 4 | * Further notes on how to use this class: 5 | */ 6 | 7 | #pragma once 8 | #include "pch.h" 9 | #include "memory_util.h" 10 | #include "chr_ins.h" 11 | 12 | namespace ds3runtime { 13 | 14 | class WorldChrMan 15 | { 16 | public: 17 | WorldChrMan(uintptr_t address); 18 | 19 | void reloadCharacterFiles(std::wstring characterId); 20 | 21 | void findEntityTest(int32_t id); 22 | 23 | uintptr_t getInsByHandle(int32_t handle); 24 | 25 | /** 26 | * Gets the camera quaternion angle. 27 | * 28 | * @return The camera quaternion angle. 29 | */ 30 | std::array getCamVector() const; 31 | 32 | bool doesChrHaveSpEffect(ChrIns chr, const int32_t& spEffectId) const; 33 | 34 | static uintptr_t getInstance(); 35 | 36 | static bool hasInstance(); 37 | private: 38 | uintptr_t address; 39 | }; 40 | 41 | } -------------------------------------------------------------------------------- /pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: source file corresponding to the pre-compiled header 2 | 3 | #include "pch.h" 4 | 5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed. 6 | -------------------------------------------------------------------------------- /pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: This is a precompiled header file. 2 | // Files listed below are compiled only once, improving build performance for future builds. 3 | // This also affects IntelliSense performance, including code completion and many code browsing features. 4 | // However, files listed here are ALL re-compiled if any one of them is updated between builds. 5 | // Do not add files here that you will be updating frequently as this negates the performance advantage. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // add headers that you want to pre-compile here 11 | #include 12 | #undef min 13 | #undef max 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include 35 | #include 36 | #include 37 | #include 38 | #include 39 | 40 | #endif //PCH_H 41 | --------------------------------------------------------------------------------