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