diff --git a/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs b/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs index 948e25d22c..82dd10aa56 100644 --- a/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs +++ b/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs @@ -12,6 +12,7 @@ namespace BrewMonster private void Awake() { Initialize(); + SkillStubs.Init(); DontDestroyOnLoad(gameObject); } diff --git a/Assets/PerfectWorld/Scripts/Common/DataProcess/elementdataman.cs b/Assets/PerfectWorld/Scripts/Common/DataProcess/elementdataman.cs index 23c91ba67a..9f5690121a 100644 --- a/Assets/PerfectWorld/Scripts/Common/DataProcess/elementdataman.cs +++ b/Assets/PerfectWorld/Scripts/Common/DataProcess/elementdataman.cs @@ -600,13 +600,11 @@ namespace ModelRenderer.Scripts.GameData add_id_index(ID_SPACE.ID_SPACE_ESSENCE, item.id, DATA_TYPE.DT_WEAPON_SUB_TYPE); add_id_data(ID_SPACE.ID_SPACE_ESSENCE, item.id, item); } - foreach (var item in npc_essence_array) { add_id_index(ID_SPACE.ID_SPACE_ESSENCE, item.id, DATA_TYPE.DT_NPC_ESSENCE); add_id_data(ID_SPACE.ID_SPACE_ESSENCE, item.id, item); } - foreach (var item in weapon_essence_array) { add_id_index(ID_SPACE.ID_SPACE_ESSENCE, item.id, DATA_TYPE.DT_WEAPON_ESSENCE); @@ -1519,12 +1517,11 @@ namespace ModelRenderer.Scripts.GameData return 0; } - public T GetMap(ID_SPACE type) where T : class + public T GetDataTypeMap(ID_SPACE type) where T : class { object result = type switch { - ID_SPACE.ID_SPACE_ESSENCE => essence_index_id_map, - ID_SPACE.ID_SPACE_CONFIG => config_id_data_map, + ID_SPACE.ID_SPACE_ESSENCE => essence_id_data_type_map, _ => null }; @@ -1651,7 +1648,42 @@ namespace ModelRenderer.Scripts.GameData } return DATA_TYPE.DT_INVALID; } + public object[] GetAllDataTypeWithType(ID_SPACE idspace,DATA_TYPE dataType ) + { + List results = new List(); + switch (idspace) + { + case ID_SPACE.ID_SPACE_ESSENCE: + foreach (var kvp in essence_id_data_type_map) + { + if (kvp.Value == dataType) + { + if (essence_id_data_map.TryGetValue(kvp.Key, out var data)) + { + results.Add(data); + } + } + } + break; + + // Optionally add other cases if you have other *_id_data_type_map dictionaries + // case ID_SPACE.ID_SPACE_CONFIG: + // foreach (var kvp in config_id_data_type_map) + // { + // if (kvp.Value == dataType) + // { + // if (config_id_data_map.TryGetValue(kvp.Key, out var data)) + // { + // results.Add(data); + // } + // } + // } + // break; + } + + return results.ToArray(); + } public object get_data_ptr(uint id, ID_SPACE idspace, ref DATA_TYPE dataType) { object data = null; diff --git a/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs index 1ac8e27d3a..545b96df93 100644 --- a/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs +++ b/Assets/PerfectWorld/Scripts/Common/EC_StringTab.cs @@ -82,13 +82,13 @@ namespace BrewMonster.Common if (string.IsNullOrEmpty(pstr)) { ScriptFile.Close(); - BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Not enough memory"); + BMLogger.LogWarning($"EC_StringTab::LoadWideStrings: {szFile} Not enough memory"); return false; } if (!m_WStrTab.TryAdd(n, pstr)) { - BMLogger.LogError($"EC_StringTab::LoadWideStrings: {szFile} Failed to add string to dictionary"); + BMLogger.LogWarning($"EC_StringTab::LoadWideStrings: {szFile} Failed to add string to dictionary"); return false; } } diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 876cfbfbf7..f8a29d7045 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -487,4 +487,16 @@ namespace PerfectWorld.Scripts.Managers } } } + public struct EC_PLAYERLOADRESULT + { + public uint dwValidMask; + public CECModel pPlayerModel; + public int iShape; + public CECModel pDummyModel; + public CECModel pPetModel; + /* CECFace pFaceModel; + A3DShader pBodyShaders[3];*/ + public CECModel pFlyNviagteModel; + //CECPlayer::EquipsLoadResult EquipResult; + }; } \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index cb805e4e3e..fb153bbfea 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -797,7 +797,7 @@ public class CECNPC : CECObject if (model == null) { model = GameObject.CreatePrimitive(PrimitiveType.Capsule); - BMLogger.LogError($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} "); + BMLogger.LogWarning($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} "); } var monsterModel = Instantiate(model, transform); diff --git a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs index 82c7811dc4..c1d37d1cbb 100644 --- a/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs +++ b/Assets/PerfectWorld/Scripts/NPC/NPCBuilder.cs @@ -25,17 +25,6 @@ public class NPCBuilder : MonoSingleton private Dictionary modelNPCDic; - private void Awake() - { - if (modelNPCList == null || modelNPCList.Count == 0) - { - Debug.LogError("[NPCBuilder] modelNPCList rỗng �? hãy quét l�?i prefab! " + transform.gameObject.name); - } - - modelNPCDic = modelNPCList - .GroupBy(obj => obj.name) - .ToDictionary(g => g.Key, g => g.First()); - } public GameObject GetModelByPath(string path) { diff --git a/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs index 77c4bf502f..7fd6e7b440 100644 --- a/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs +++ b/Assets/PerfectWorld/Scripts/Skills/EC_HostSkillModel.cs @@ -7,7 +7,7 @@ using System.Runtime.InteropServices; namespace BrewMonster.Scripts.Skills { - class CECHostSkillModel + public class CECHostSkillModel { public static CECHostSkillModel instance; public static CECHostSkillModel Instance @@ -222,20 +222,10 @@ namespace BrewMonster.Scripts.Skills { DATA_TYPE dt = DATA_TYPE.DT_NPC_ESSENCE; elementdataman pDB = ElementDataManProvider.GetElementDataMan(); - var map = pDB.GetMap>(ID_SPACE.ID_SPACE_ESSENCE); - uint id; - foreach (var item in map) + var map = pDB.GetAllDataTypeWithType(ID_SPACE.ID_SPACE_ESSENCE, dt); + foreach (var obj in map) { - if (item.Value == dt) - { - id = item.Key; - } - else - { - continue; - } - - NPC_ESSENCE npcEssence = (NPC_ESSENCE)pDB.get_data_ptr(id, ID_SPACE.ID_SPACE_ESSENCE, ref dt); + NPC_ESSENCE npcEssence = (NPC_ESSENCE)obj; if (npcEssence.id_skill_service != 0 && (npcEssence.combined_switch & (uint)NPC_COMBINED_SWITCH.NCS_IGNORE_DISTANCE_CHECK) != 0) { @@ -270,20 +260,10 @@ namespace BrewMonster.Scripts.Skills elementdataman pDB = ElementDataManProvider.GetElementDataMan(); DATA_TYPE dt = DATA_TYPE.DT_NPC_ESSENCE; // uint id = pDB.get_id_with_data_type(ID_SPACE.ID_SPACE_ESSENCE, dt); - var map = pDB.GetMap>(ID_SPACE.ID_SPACE_ESSENCE); - uint id; - foreach (var item in map) + var map = pDB.GetAllDataTypeWithType(ID_SPACE.ID_SPACE_ESSENCE, dt); + foreach (var obj in map) { - if (item.Value == dt) - { - id = item.Key; - } - else - { - continue; - } - - NPC_ESSENCE npcEssence = (NPC_ESSENCE)pDB.get_data_ptr(id, ID_SPACE.ID_SPACE_ESSENCE, ref dt); + NPC_ESSENCE npcEssence = (NPC_ESSENCE)obj; if (npcEssence.id_skill_service != 0 && (npcEssence.combined_switch & (uint)NPC_COMBINED_SWITCH.NCS_IGNORE_DISTANCE_CHECK) != 0) { @@ -297,7 +277,7 @@ namespace BrewMonster.Scripts.Skills if (skillId != 0 && CECComboSkillState.Instance.GetInherentSkillByID(skillId) == null) { - npcSkills.Add(skillId); + npcSkills.Add(skillId); } } } @@ -356,7 +336,22 @@ namespace BrewMonster.Scripts.Skills private void Release() { - throw new System.NotImplementedException(); + m_allProfSkills.Clear(); + + // Dọn sạch tất cả dictionary / map + m_allProfSkills.Clear(); + m_allRankProfSkills.Clear(); + + m_evilRootMap.Clear(); + m_godRootMap.Clear(); + m_baseRootMap.Clear(); + m_treeHeightMap.Clear(); + + m_allProfNPCs.Clear(); + m_curServiceSkills.Clear(); + + m_skillLearnNPCNID = 0; + m_bInitialized = false; } } diff --git a/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs b/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs new file mode 100644 index 0000000000..c195910128 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs @@ -0,0 +1,190 @@ +using System.Runtime.InteropServices; +using UnityEngine; + +namespace BrewMonster +{ + + public class PlayerInfo { } + + public struct ComboArg + { + public const int MAX_COMBO_ARG = 3; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = MAX_COMBO_ARG)] + public int[] arg; + + public int GetValue(uint index) + { + if (arg == null) + arg = new int[MAX_COMBO_ARG]; + return index < MAX_COMBO_ARG ? arg[index] : 0; + } + + public void SetValue(uint index, int value) + { + if (arg == null) + arg = new int[MAX_COMBO_ARG]; + if (index < MAX_COMBO_ARG) + arg[index] = value; + } + } + + public class PlayerWrapper + { + + public float range; + public float pray_range_plus; + public int elf_level; + public ComboArg comboarg; + + private PlayerInfo object_; + + public PlayerWrapper() + { + range = 0; + pray_range_plus = 0; + elf_level = 0; + comboarg = new ComboArg { arg = new int[ComboArg.MAX_COMBO_ARG] }; + } + + public PlayerWrapper(PlayerInfo o) + { + range = 0; + pray_range_plus = 0; + elf_level = 0; + object_ = o; + comboarg = new ComboArg { arg = new int[ComboArg.MAX_COMBO_ARG] }; + } + + public int GetLevel() { return 50; } + + public void SetRange(float r) { range = r; } + + public void SetPrayrangeplus(float p) { pray_range_plus = p; } + + public int GetMP() + { + return 10000; + } + + public int GetMp() + { + return 0; + } + + public int GetSp() + { + return 10000; + } + + public bool IsRiding() + { + return false; + } + + public bool IsUsingWeapon(int weapon) + { + return true; + } + + public bool HasSkillBook(uint id) + { + return true; + } + + public bool SetDecsp(int sp) + { + return true; + } + + public bool SetDistance(float d) + { + return true; + } + + public float GetWeapondistance() + { + return -1; + } + + public bool SetDecmp(int m) + { + return true; + } + + public bool SetPray(bool value) + { + return true; + } + + public bool SetInform(bool value) + { + return true; + } + + public bool SetPerform(bool value) + { + return true; + } + + public bool SetDamage(int value) + { + return true; + } + + public int GetPerform() + { + return 1; + } + + public int GetDamage() + { + return 1; + } + + public float GetRange() + { + return range; + } + + public float GetPrayrangeplus() + { + return pray_range_plus; + } + + public bool SetCheckbook(int i) { return true; } + + public int GetCheckbook() { return 0; } + + public bool SetCheckmoney(int m) { return true; } + + public int GetCheckmoney() { return 0; } + + public bool SetUsebook(int i) { return true; } + + public int GetUsebook() { return 0; } + + public bool SetUsemoney(int m) { return true; } + + public int GetUsemoney() { return 0; } + + public void SetElflevel(int iLevel) { elf_level = iLevel; } + + public int GetElflevel() { return elf_level; } + + public ref ComboArg GetComboarg() { return ref comboarg; } + + public int GetForm() { return 0; } + } + + public class TargetWrapper + { + public int id; + + public TargetWrapper(int i) + { + id = i; + } + + public bool IsValid() { return -1 != id; } + } +} diff --git a/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs.meta b/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs.meta new file mode 100644 index 0000000000..3213f5f2de --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/PlayerWrapper.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 04cb4df0f3d12eb45a583da23d83ad5d \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs new file mode 100644 index 0000000000..baf87c430f --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs @@ -0,0 +1,526 @@ +using BrewMonster.Scripts.Skills; +using UnityEngine; + +namespace BrewMonster +{ + public static class SkillStubs + { + public static void Init() { int i = 0; } + // Skill stub declarations + public static Skill1Stub __stub_Skill1Stub = new Skill1Stub(); + /*public static Skill2Stub __stub_Skill2Stub = new Skill2Stub(); + public static Skill3Stub __stub_Skill3Stub = new Skill3Stub(); + public static Skill4Stub __stub_Skill4Stub = new Skill4Stub(); + public static Skill5Stub __stub_Skill5Stub = new Skill5Stub(); + public static Skill6Stub __stub_Skill6Stub = new Skill6Stub(); + public static Skill54Stub __stub_Skill54Stub = new Skill54Stub(); + public static Skill55Stub __stub_Skill55Stub = new Skill55Stub(); + public static Skill56Stub __stub_Skill56Stub = new Skill56Stub(); + public static Skill57Stub __stub_Skill57Stub = new Skill57Stub(); + public static Skill58Stub __stub_Skill58Stub = new Skill58Stub(); + public static Skill59Stub __stub_Skill59Stub = new Skill59Stub(); + public static Skill60Stub __stub_Skill60Stub = new Skill60Stub(); + public static Skill61Stub __stub_Skill61Stub = new Skill61Stub(); + public static Skill62Stub __stub_Skill62Stub = new Skill62Stub(); + public static Skill63Stub __stub_Skill63Stub = new Skill63Stub(); + public static Skill64Stub __stub_Skill64Stub = new Skill64Stub(); + public static Skill65Stub __stub_Skill65Stub = new Skill65Stub(); + public static Skill66Stub __stub_Skill66Stub = new Skill66Stub(); + public static Skill67Stub __stub_Skill67Stub = new Skill67Stub(); + public static Skill68Stub __stub_Skill68Stub = new Skill68Stub(); + public static Skill69Stub __stub_Skill69Stub = new Skill69Stub(); + public static Skill70Stub __stub_Skill70Stub = new Skill70Stub(); + public static Skill71Stub __stub_Skill71Stub = new Skill71Stub(); + public static Skill72Stub __stub_Skill72Stub = new Skill72Stub(); + public static Skill73Stub __stub_Skill73Stub = new Skill73Stub(); + public static Skill74Stub __stub_Skill74Stub = new Skill74Stub(); + public static Skill75Stub __stub_Skill75Stub = new Skill75Stub(); + public static Skill76Stub __stub_Skill76Stub = new Skill76Stub(); + public static Skill77Stub __stub_Skill77Stub = new Skill77Stub(); + public static Skill78Stub __stub_Skill78Stub = new Skill78Stub(); + public static Skill79Stub __stub_Skill79Stub = new Skill79Stub(); + public static Skill80Stub __stub_Skill80Stub = new Skill80Stub(); + public static Skill176Stub __stub_Skill176Stub = new Skill176Stub(); + public static Skill177Stub __stub_Skill177Stub = new Skill177Stub(); + public static Skill178Stub __stub_Skill178Stub = new Skill178Stub(); + public static Skill179Stub __stub_Skill179Stub = new Skill179Stub(); + public static Skill187Stub __stub_Skill187Stub = new Skill187Stub(); + public static Skill226Stub __stub_Skill226Stub = new Skill226Stub(); + public static Skill227Stub __stub_Skill227Stub = new Skill227Stub(); + public static Skill362Stub __stub_Skill362Stub = new Skill362Stub(); + public static Skill363Stub __stub_Skill363Stub = new Skill363Stub(); + public static Skill374Stub __stub_Skill374Stub = new Skill374Stub(); + public static Skill375Stub __stub_Skill375Stub = new Skill375Stub(); + public static Skill376Stub __stub_Skill376Stub = new Skill376Stub(); + public static Skill377Stub __stub_Skill377Stub = new Skill377Stub(); + public static Skill378Stub __stub_Skill378Stub = new Skill378Stub(); + public static Skill379Stub __stub_Skill379Stub = new Skill379Stub(); + public static Skill380Stub __stub_Skill380Stub = new Skill380Stub(); + public static Skill381Stub __stub_Skill381Stub = new Skill381Stub(); + public static Skill382Stub __stub_Skill382Stub = new Skill382Stub(); + public static Skill383Stub __stub_Skill383Stub = new Skill383Stub(); + public static Skill384Stub __stub_Skill384Stub = new Skill384Stub(); + public static Skill385Stub __stub_Skill385Stub = new Skill385Stub(); + public static Skill386Stub __stub_Skill386Stub = new Skill386Stub(); + public static Skill387Stub __stub_Skill387Stub = new Skill387Stub(); + public static Skill388Stub __stub_Skill388Stub = new Skill388Stub(); + public static Skill389Stub __stub_Skill389Stub = new Skill389Stub(); + public static Skill390Stub __stub_Skill390Stub = new Skill390Stub(); + public static Skill391Stub __stub_Skill391Stub = new Skill391Stub(); + public static Skill392Stub __stub_Skill392Stub = new Skill392Stub(); + public static Skill393Stub __stub_Skill393Stub = new Skill393Stub(); + public static Skill394Stub __stub_Skill394Stub = new Skill394Stub(); + public static Skill395Stub __stub_Skill395Stub = new Skill395Stub(); + public static Skill396Stub __stub_Skill396Stub = new Skill396Stub(); + public static Skill397Stub __stub_Skill397Stub = new Skill397Stub(); + public static Skill398Stub __stub_Skill398Stub = new Skill398Stub(); + public static Skill399Stub __stub_Skill399Stub = new Skill399Stub(); + public static Skill400Stub __stub_Skill400Stub = new Skill400Stub(); + public static Skill401Stub __stub_Skill401Stub = new Skill401Stub(); + public static Skill402Stub __stub_Skill402Stub = new Skill402Stub(); + public static Skill403Stub __stub_Skill403Stub = new Skill403Stub(); + public static Skill404Stub __stub_Skill404Stub = new Skill404Stub(); + public static Skill405Stub __stub_Skill405Stub = new Skill405Stub(); + public static Skill406Stub __stub_Skill406Stub = new Skill406Stub(); + public static Skill407Stub __stub_Skill407Stub = new Skill407Stub(); + public static Skill408Stub __stub_Skill408Stub = new Skill408Stub(); + public static Skill409Stub __stub_Skill409Stub = new Skill409Stub(); + public static Skill410Stub __stub_Skill410Stub = new Skill410Stub(); + public static Skill411Stub __stub_Skill411Stub = new Skill411Stub(); + public static Skill412Stub __stub_Skill412Stub = new Skill412Stub(); + public static Skill413Stub __stub_Skill413Stub = new Skill413Stub(); + public static Skill414Stub __stub_Skill414Stub = new Skill414Stub(); + public static Skill415Stub __stub_Skill415Stub = new Skill415Stub(); + public static Skill416Stub __stub_Skill416Stub = new Skill416Stub(); + public static Skill417Stub __stub_Skill417Stub = new Skill417Stub(); + public static Skill418Stub __stub_Skill418Stub = new Skill418Stub(); + public static Skill419Stub __stub_Skill419Stub = new Skill419Stub(); + public static Skill420Stub __stub_Skill420Stub = new Skill420Stub(); + public static Skill421Stub __stub_Skill421Stub = new Skill421Stub(); + public static Skill422Stub __stub_Skill422Stub = new Skill422Stub(); + public static Skill423Stub __stub_Skill423Stub = new Skill423Stub(); + public static Skill424Stub __stub_Skill424Stub = new Skill424Stub(); + public static Skill425Stub __stub_Skill425Stub = new Skill425Stub(); + public static Skill426Stub __stub_Skill426Stub = new Skill426Stub(); + public static Skill427Stub __stub_Skill427Stub = new Skill427Stub(); + public static Skill428Stub __stub_Skill428Stub = new Skill428Stub(); + public static Skill429Stub __stub_Skill429Stub = new Skill429Stub(); + public static Skill430Stub __stub_Skill430Stub = new Skill430Stub(); + public static Skill431Stub __stub_Skill431Stub = new Skill431Stub(); + public static Skill432Stub __stub_Skill432Stub = new Skill432Stub(); + public static Skill433Stub __stub_Skill433Stub = new Skill433Stub(); + public static Skill434Stub __stub_Skill434Stub = new Skill434Stub(); + public static Skill435Stub __stub_Skill435Stub = new Skill435Stub(); + public static Skill436Stub __stub_Skill436Stub = new Skill436Stub(); + public static Skill437Stub __stub_Skill437Stub = new Skill437Stub(); + public static Skill438Stub __stub_Skill438Stub = new Skill438Stub(); + public static Skill439Stub __stub_Skill439Stub = new Skill439Stub(); + public static Skill896Stub __stub_Skill896Stub = new Skill896Stub(); + public static Skill897Stub __stub_Skill897Stub = new Skill897Stub(); + public static Skill898Stub __stub_Skill898Stub = new Skill898Stub(); + public static Skill899Stub __stub_Skill899Stub = new Skill899Stub(); + public static Skill900Stub __stub_Skill900Stub = new Skill900Stub(); + public static Skill923Stub __stub_Skill923Stub = new Skill923Stub(); + public static Skill924Stub __stub_Skill924Stub = new Skill924Stub(); + public static Skill1195Stub __stub_Skill1195Stub = new Skill1195Stub(); + public static Skill1815Stub __stub_Skill1815Stub = new Skill1815Stub(); + public static Skill1816Stub __stub_Skill1816Stub = new Skill1816Stub(); + public static Skill1817Stub __stub_Skill1817Stub = new Skill1817Stub(); + public static Skill1818Stub __stub_Skill1818Stub = new Skill1818Stub(); + public static Skill1819Stub __stub_Skill1819Stub = new Skill1819Stub(); + public static Skill1868Stub __stub_Skill1868Stub = new Skill1868Stub(); + public static Skill1871Stub __stub_Skill1871Stub = new Skill1871Stub(); + public static Skill1872Stub __stub_Skill1872Stub = new Skill1872Stub(); + public static Skill2206Stub __stub_Skill2206Stub = new Skill2206Stub(); + public static Skill2207Stub __stub_Skill2207Stub = new Skill2207Stub(); + public static Skill2208Stub __stub_Skill2208Stub = new Skill2208Stub(); + public static Skill2209Stub __stub_Skill2209Stub = new Skill2209Stub(); + public static Skill2210Stub __stub_Skill2210Stub = new Skill2210Stub(); + public static Skill2211Stub __stub_Skill2211Stub = new Skill2211Stub(); + public static Skill2352Stub __stub_Skill2352Stub = new Skill2352Stub(); + public static Skill2367Stub __stub_Skill2367Stub = new Skill2367Stub(); + public static Skill2368Stub __stub_Skill2368Stub = new Skill2368Stub(); + public static Skill2369Stub __stub_Skill2369Stub = new Skill2369Stub(); + public static Skill2370Stub __stub_Skill2370Stub = new Skill2370Stub(); + public static Skill2371Stub __stub_Skill2371Stub = new Skill2371Stub(); + public static Skill2372Stub __stub_Skill2372Stub = new Skill2372Stub(); + public static Skill2373Stub __stub_Skill2373Stub = new Skill2373Stub(); + public static Skill2374Stub __stub_Skill2374Stub = new Skill2374Stub(); + public static Skill2375Stub __stub_Skill2375Stub = new Skill2375Stub(); + public static Skill7Stub __stub_Skill7Stub = new Skill7Stub(); + public static Skill8Stub __stub_Skill8Stub = new Skill8Stub(); + public static Skill9Stub __stub_Skill9Stub = new Skill9Stub(); + public static Skill10Stub __stub_Skill10Stub = new Skill10Stub(); + public static Skill53Stub __stub_Skill53Stub = new Skill53Stub(); + public static Skill81Stub __stub_Skill81Stub = new Skill81Stub(); + public static Skill84Stub __stub_Skill84Stub = new Skill84Stub(); + public static Skill85Stub __stub_Skill85Stub = new Skill85Stub(); + public static Skill86Stub __stub_Skill86Stub = new Skill86Stub(); + public static Skill87Stub __stub_Skill87Stub = new Skill87Stub(); + public static Skill88Stub __stub_Skill88Stub = new Skill88Stub(); + public static Skill89Stub __stub_Skill89Stub = new Skill89Stub(); + public static Skill90Stub __stub_Skill90Stub = new Skill90Stub(); + public static Skill91Stub __stub_Skill91Stub = new Skill91Stub(); + public static Skill92Stub __stub_Skill92Stub = new Skill92Stub(); + public static Skill93Stub __stub_Skill93Stub = new Skill93Stub(); + public static Skill94Stub __stub_Skill94Stub = new Skill94Stub(); + public static Skill95Stub __stub_Skill95Stub = new Skill95Stub(); + public static Skill96Stub __stub_Skill96Stub = new Skill96Stub(); + public static Skill97Stub __stub_Skill97Stub = new Skill97Stub(); + public static Skill98Stub __stub_Skill98Stub = new Skill98Stub(); + public static Skill99Stub __stub_Skill99Stub = new Skill99Stub(); + public static Skill100Stub __stub_Skill100Stub = new Skill100Stub(); + public static Skill101Stub __stub_Skill101Stub = new Skill101Stub(); + public static Skill180Stub __stub_Skill180Stub = new Skill180Stub(); + public static Skill181Stub __stub_Skill181Stub = new Skill181Stub(); + public static Skill182Stub __stub_Skill182Stub = new Skill182Stub(); + public static Skill183Stub __stub_Skill183Stub = new Skill183Stub(); + public static Skill184Stub __stub_Skill184Stub = new Skill184Stub(); + public static Skill228Stub __stub_Skill228Stub = new Skill228Stub(); + public static Skill229Stub __stub_Skill229Stub = new Skill229Stub(); + public static Skill364Stub __stub_Skill364Stub = new Skill364Stub(); + public static Skill365Stub __stub_Skill365Stub = new Skill365Stub(); + public static Skill440Stub __stub_Skill440Stub = new Skill440Stub(); + public static Skill441Stub __stub_Skill441Stub = new Skill441Stub(); + public static Skill442Stub __stub_Skill442Stub = new Skill442Stub(); + public static Skill443Stub __stub_Skill443Stub = new Skill443Stub(); + public static Skill444Stub __stub_Skill444Stub = new Skill444Stub(); + public static Skill445Stub __stub_Skill445Stub = new Skill445Stub(); + public static Skill446Stub __stub_Skill446Stub = new Skill446Stub(); + public static Skill447Stub __stub_Skill447Stub = new Skill447Stub(); + public static Skill448Stub __stub_Skill448Stub = new Skill448Stub(); + public static Skill449Stub __stub_Skill449Stub = new Skill449Stub(); + public static Skill450Stub __stub_Skill450Stub = new Skill450Stub(); + public static Skill451Stub __stub_Skill451Stub = new Skill451Stub(); + public static Skill452Stub __stub_Skill452Stub = new Skill452Stub(); + public static Skill453Stub __stub_Skill453Stub = new Skill453Stub(); + public static Skill454Stub __stub_Skill454Stub = new Skill454Stub(); + public static Skill455Stub __stub_Skill455Stub = new Skill455Stub(); + public static Skill456Stub __stub_Skill456Stub = new Skill456Stub(); + public static Skill457Stub __stub_Skill457Stub = new Skill457Stub(); + public static Skill458Stub __stub_Skill458Stub = new Skill458Stub(); + public static Skill459Stub __stub_Skill459Stub = new Skill459Stub(); + public static Skill460Stub __stub_Skill460Stub = new Skill460Stub(); + public static Skill461Stub __stub_Skill461Stub = new Skill461Stub(); + public static Skill462Stub __stub_Skill462Stub = new Skill462Stub(); + public static Skill463Stub __stub_Skill463Stub = new Skill463Stub(); + public static Skill464Stub __stub_Skill464Stub = new Skill464Stub(); + public static Skill465Stub __stub_Skill465Stub = new Skill465Stub(); + public static Skill466Stub __stub_Skill466Stub = new Skill466Stub(); + public static Skill467Stub __stub_Skill467Stub = new Skill467Stub(); + public static Skill468Stub __stub_Skill468Stub = new Skill468Stub(); + public static Skill469Stub __stub_Skill469Stub = new Skill469Stub(); + public static Skill470Stub __stub_Skill470Stub = new Skill470Stub(); + public static Skill471Stub __stub_Skill471Stub = new Skill471Stub(); + public static Skill472Stub __stub_Skill472Stub = new Skill472Stub(); + public static Skill473Stub __stub_Skill473Stub = new Skill473Stub(); + public static Skill474Stub __stub_Skill474Stub = new Skill474Stub(); + public static Skill475Stub __stub_Skill475Stub = new Skill475Stub(); + public static Skill476Stub __stub_Skill476Stub = new Skill476Stub(); + public static Skill477Stub __stub_Skill477Stub = new Skill477Stub(); + public static Skill478Stub __stub_Skill478Stub = new Skill478Stub(); + public static Skill479Stub __stub_Skill479Stub = new Skill479Stub(); + public static Skill480Stub __stub_Skill480Stub = new Skill480Stub(); + public static Skill481Stub __stub_Skill481Stub = new Skill481Stub(); + public static Skill482Stub __stub_Skill482Stub = new Skill482Stub(); + public static Skill483Stub __stub_Skill483Stub = new Skill483Stub(); + public static Skill484Stub __stub_Skill484Stub = new Skill484Stub(); + public static Skill485Stub __stub_Skill485Stub = new Skill485Stub(); + public static Skill486Stub __stub_Skill486Stub = new Skill486Stub(); + public static Skill487Stub __stub_Skill487Stub = new Skill487Stub(); + public static Skill488Stub __stub_Skill488Stub = new Skill488Stub(); + public static Skill489Stub __stub_Skill489Stub = new Skill489Stub(); + public static Skill490Stub __stub_Skill490Stub = new Skill490Stub(); + public static Skill491Stub __stub_Skill491Stub = new Skill491Stub(); + public static Skill901Stub __stub_Skill901Stub = new Skill901Stub(); + public static Skill902Stub __stub_Skill902Stub = new Skill902Stub(); + public static Skill903Stub __stub_Skill903Stub = new Skill903Stub(); + public static Skill904Stub __stub_Skill904Stub = new Skill904Stub(); + public static Skill905Stub __stub_Skill905Stub = new Skill905Stub(); + public static Skill925Stub __stub_Skill925Stub = new Skill925Stub(); + public static Skill926Stub __stub_Skill926Stub = new Skill926Stub(); + public static Skill1805Stub __stub_Skill1805Stub = new Skill1805Stub(); + public static Skill1806Stub __stub_Skill1806Stub = new Skill1806Stub(); + public static Skill1807Stub __stub_Skill1807Stub = new Skill1807Stub(); + public static Skill1808Stub __stub_Skill1808Stub = new Skill1808Stub(); + public static Skill1809Stub __stub_Skill1809Stub = new Skill1809Stub(); + public static Skill1864Stub __stub_Skill1864Stub = new Skill1864Stub(); + public static Skill1865Stub __stub_Skill1865Stub = new Skill1865Stub(); + public static Skill1873Stub __stub_Skill1873Stub = new Skill1873Stub(); + public static Skill1874Stub __stub_Skill1874Stub = new Skill1874Stub(); + public static Skill1951Stub __stub_Skill1951Stub = new Skill1951Stub(); + public static Skill2254Stub __stub_Skill2254Stub = new Skill2254Stub(); + public static Skill2255Stub __stub_Skill2255Stub = new Skill2255Stub(); + public static Skill2256Stub __stub_Skill2256Stub = new Skill2256Stub(); + public static Skill2257Stub __stub_Skill2257Stub = new Skill2257Stub(); + public static Skill2258Stub __stub_Skill2258Stub = new Skill2258Stub(); + public static Skill2259Stub __stub_Skill2259Stub = new Skill2259Stub(); + public static Skill2260Stub __stub_Skill2260Stub = new Skill2260Stub(); + public static Skill2261Stub __stub_Skill2261Stub = new Skill2261Stub(); + public static Skill2262Stub __stub_Skill2262Stub = new Skill2262Stub(); + public static Skill2263Stub __stub_Skill2263Stub = new Skill2263Stub(); + public static Skill2264Stub __stub_Skill2264Stub = new Skill2264Stub(); + public static Skill2265Stub __stub_Skill2265Stub = new Skill2265Stub(); + public static Skill2452Stub __stub_Skill2452Stub = new Skill2452Stub(); + public static Skill2453Stub __stub_Skill2453Stub = new Skill2453Stub();*/ + +#if SKILL_SERVER + public static Skill1 __stub_Skill1 = new Skill1(); + public static Skill2 __stub_Skill2 = new Skill2(); + public static Skill3 __stub_Skill3 = new Skill3(); + public static Skill4 __stub_Skill4 = new Skill4(); + public static Skill5 __stub_Skill5 = new Skill5(); + public static Skill6 __stub_Skill6 = new Skill6(); + public static Skill54 __stub_Skill54 = new Skill54(); + public static Skill55 __stub_Skill55 = new Skill55(); + public static Skill56 __stub_Skill56 = new Skill56(); + public static Skill57 __stub_Skill57 = new Skill57(); + public static Skill58 __stub_Skill58 = new Skill58(); + public static Skill59 __stub_Skill59 = new Skill59(); + public static Skill60 __stub_Skill60 = new Skill60(); + public static Skill61 __stub_Skill61 = new Skill61(); + public static Skill62 __stub_Skill62 = new Skill62(); + public static Skill63 __stub_Skill63 = new Skill63(); + public static Skill64 __stub_Skill64 = new Skill64(); + public static Skill65 __stub_Skill65 = new Skill65(); + public static Skill66 __stub_Skill66 = new Skill66(); + public static Skill67 __stub_Skill67 = new Skill67(); + public static Skill68 __stub_Skill68 = new Skill68(); + public static Skill69 __stub_Skill69 = new Skill69(); + public static Skill70 __stub_Skill70 = new Skill70(); + public static Skill71 __stub_Skill71 = new Skill71(); + public static Skill72 __stub_Skill72 = new Skill72(); + public static Skill73 __stub_Skill73 = new Skill73(); + public static Skill74 __stub_Skill74 = new Skill74(); + public static Skill75 __stub_Skill75 = new Skill75(); + public static Skill76 __stub_Skill76 = new Skill76(); + public static Skill77 __stub_Skill77 = new Skill77(); + public static Skill78 __stub_Skill78 = new Skill78(); + public static Skill79 __stub_Skill79 = new Skill79(); + public static Skill80 __stub_Skill80 = new Skill80(); + public static Skill176 __stub_Skill176 = new Skill176(); + public static Skill177 __stub_Skill177 = new Skill177(); + public static Skill178 __stub_Skill178 = new Skill178(); + public static Skill179 __stub_Skill179 = new Skill179(); + public static Skill187 __stub_Skill187 = new Skill187(); + public static Skill226 __stub_Skill226 = new Skill226(); + public static Skill227 __stub_Skill227 = new Skill227(); + public static Skill362 __stub_Skill362 = new Skill362(); + public static Skill363 __stub_Skill363 = new Skill363(); + public static Skill374 __stub_Skill374 = new Skill374(); + public static Skill375 __stub_Skill375 = new Skill375(); + public static Skill376 __stub_Skill376 = new Skill376(); + public static Skill377 __stub_Skill377 = new Skill377(); + public static Skill378 __stub_Skill378 = new Skill378(); + public static Skill379 __stub_Skill379 = new Skill379(); + public static Skill380 __stub_Skill380 = new Skill380(); + public static Skill381 __stub_Skill381 = new Skill381(); + public static Skill382 __stub_Skill382 = new Skill382(); + public static Skill383 __stub_Skill383 = new Skill383(); + public static Skill384 __stub_Skill384 = new Skill384(); + public static Skill385 __stub_Skill385 = new Skill385(); + public static Skill386 __stub_Skill386 = new Skill386(); + public static Skill387 __stub_Skill387 = new Skill387(); + public static Skill388 __stub_Skill388 = new Skill388(); + public static Skill389 __stub_Skill389 = new Skill389(); + public static Skill390 __stub_Skill390 = new Skill390(); + public static Skill391 __stub_Skill391 = new Skill391(); + public static Skill392 __stub_Skill392 = new Skill392(); + public static Skill393 __stub_Skill393 = new Skill393(); + public static Skill394 __stub_Skill394 = new Skill394(); + public static Skill395 __stub_Skill395 = new Skill395(); + public static Skill396 __stub_Skill396 = new Skill396(); + public static Skill397 __stub_Skill397 = new Skill397(); + public static Skill398 __stub_Skill398 = new Skill398(); + public static Skill399 __stub_Skill399 = new Skill399(); + public static Skill400 __stub_Skill400 = new Skill400(); + public static Skill401 __stub_Skill401 = new Skill401(); + public static Skill402 __stub_Skill402 = new Skill402(); + public static Skill403 __stub_Skill403 = new Skill403(); + public static Skill404 __stub_Skill404 = new Skill404(); + public static Skill405 __stub_Skill405 = new Skill405(); + public static Skill406 __stub_Skill406 = new Skill406(); + public static Skill407 __stub_Skill407 = new Skill407(); + public static Skill408 __stub_Skill408 = new Skill408(); + public static Skill409 __stub_Skill409 = new Skill409(); + public static Skill410 __stub_Skill410 = new Skill410(); + public static Skill411 __stub_Skill411 = new Skill411(); + public static Skill412 __stub_Skill412 = new Skill412(); + public static Skill413 __stub_Skill413 = new Skill413(); + public static Skill414 __stub_Skill414 = new Skill414(); + public static Skill415 __stub_Skill415 = new Skill415(); + public static Skill416 __stub_Skill416 = new Skill416(); + public static Skill417 __stub_Skill417 = new Skill417(); + public static Skill418 __stub_Skill418 = new Skill418(); + public static Skill419 __stub_Skill419 = new Skill419(); + public static Skill420 __stub_Skill420 = new Skill420(); + public static Skill421 __stub_Skill421 = new Skill421(); + public static Skill422 __stub_Skill422 = new Skill422(); + public static Skill423 __stub_Skill423 = new Skill423(); + public static Skill424 __stub_Skill424 = new Skill424(); + public static Skill425 __stub_Skill425 = new Skill425(); + public static Skill426 __stub_Skill426 = new Skill426(); + public static Skill427 __stub_Skill427 = new Skill427(); + public static Skill428 __stub_Skill428 = new Skill428(); + public static Skill429 __stub_Skill429 = new Skill429(); + public static Skill430 __stub_Skill430 = new Skill430(); + public static Skill431 __stub_Skill431 = new Skill431(); + public static Skill432 __stub_Skill432 = new Skill432(); + public static Skill433 __stub_Skill433 = new Skill433(); + public static Skill434 __stub_Skill434 = new Skill434(); + public static Skill435 __stub_Skill435 = new Skill435(); + public static Skill436 __stub_Skill436 = new Skill436(); + public static Skill437 __stub_Skill437 = new Skill437(); + public static Skill438 __stub_Skill438 = new Skill438(); + public static Skill439 __stub_Skill439 = new Skill439(); + public static Skill896 __stub_Skill896 = new Skill896(); + public static Skill897 __stub_Skill897 = new Skill897(); + public static Skill898 __stub_Skill898 = new Skill898(); + public static Skill899 __stub_Skill899 = new Skill899(); + public static Skill900 __stub_Skill900 = new Skill900(); + public static Skill923 __stub_Skill923 = new Skill923(); + public static Skill924 __stub_Skill924 = new Skill924(); + public static Skill1195 __stub_Skill1195 = new Skill1195(); + public static Skill1815 __stub_Skill1815 = new Skill1815(); + public static Skill1816 __stub_Skill1816 = new Skill1816(); + public static Skill1817 __stub_Skill1817 = new Skill1817(); + public static Skill1818 __stub_Skill1818 = new Skill1818(); + public static Skill1819 __stub_Skill1819 = new Skill1819(); + public static Skill1868 __stub_Skill1868 = new Skill1868(); + public static Skill1871 __stub_Skill1871 = new Skill1871(); + public static Skill1872 __stub_Skill1872 = new Skill1872(); + public static Skill2206 __stub_Skill2206 = new Skill2206(); + public static Skill2207 __stub_Skill2207 = new Skill2207(); + public static Skill2208 __stub_Skill2208 = new Skill2208(); + public static Skill2209 __stub_Skill2209 = new Skill2209(); + public static Skill2210 __stub_Skill2210 = new Skill2210(); + public static Skill2211 __stub_Skill2211 = new Skill2211(); + public static Skill2352 __stub_Skill2352 = new Skill2352(); + public static Skill2367 __stub_Skill2367 = new Skill2367(); + public static Skill2368 __stub_Skill2368 = new Skill2368(); + public static Skill2369 __stub_Skill2369 = new Skill2369(); + public static Skill2370 __stub_Skill2370 = new Skill2370(); + public static Skill2371 __stub_Skill2371 = new Skill2371(); + public static Skill2372 __stub_Skill2372 = new Skill2372(); + public static Skill2373 __stub_Skill2373 = new Skill2373(); + public static Skill2374 __stub_Skill2374 = new Skill2374(); + public static Skill2375 __stub_Skill2375 = new Skill2375(); + public static Skill7 __stub_Skill7 = new Skill7(); + public static Skill8 __stub_Skill8 = new Skill8(); + public static Skill9 __stub_Skill9 = new Skill9(); + public static Skill10 __stub_Skill10 = new Skill10(); + public static Skill53 __stub_Skill53 = new Skill53(); + public static Skill81 __stub_Skill81 = new Skill81(); + public static Skill84 __stub_Skill84 = new Skill84(); + public static Skill85 __stub_Skill85 = new Skill85(); + public static Skill86 __stub_Skill86 = new Skill86(); + public static Skill87 __stub_Skill87 = new Skill87(); + public static Skill88 __stub_Skill88 = new Skill88(); + public static Skill89 __stub_Skill89 = new Skill89(); + public static Skill90 __stub_Skill90 = new Skill90(); + public static Skill91 __stub_Skill91 = new Skill91(); + public static Skill92 __stub_Skill92 = new Skill92(); + public static Skill93 __stub_Skill93 = new Skill93(); + public static Skill94 __stub_Skill94 = new Skill94(); + public static Skill95 __stub_Skill95 = new Skill95(); + public static Skill96 __stub_Skill96 = new Skill96(); + public static Skill97 __stub_Skill97 = new Skill97(); + public static Skill98 __stub_Skill98 = new Skill98(); + public static Skill99 __stub_Skill99 = new Skill99(); + public static Skill100 __stub_Skill100 = new Skill100(); + public static Skill101 __stub_Skill101 = new Skill101(); + public static Skill180 __stub_Skill180 = new Skill180(); + public static Skill181 __stub_Skill181 = new Skill181(); + public static Skill182 __stub_Skill182 = new Skill182(); + public static Skill183 __stub_Skill183 = new Skill183(); + public static Skill184 __stub_Skill184 = new Skill184(); + public static Skill228 __stub_Skill228 = new Skill228(); + public static Skill229 __stub_Skill229 = new Skill229(); + public static Skill364 __stub_Skill364 = new Skill364(); + public static Skill365 __stub_Skill365 = new Skill365(); + public static Skill440 __stub_Skill440 = new Skill440(); + public static Skill441 __stub_Skill441 = new Skill441(); + public static Skill442 __stub_Skill442 = new Skill442(); + public static Skill443 __stub_Skill443 = new Skill443(); + public static Skill444 __stub_Skill444 = new Skill444(); + public static Skill445 __stub_Skill445 = new Skill445(); + public static Skill446 __stub_Skill446 = new Skill446(); + public static Skill447 __stub_Skill447 = new Skill447(); + public static Skill448 __stub_Skill448 = new Skill448(); + public static Skill449 __stub_Skill449 = new Skill449(); + public static Skill450 __stub_Skill450 = new Skill450(); + public static Skill451 __stub_Skill451 = new Skill451(); + public static Skill452 __stub_Skill452 = new Skill452(); + public static Skill453 __stub_Skill453 = new Skill453(); + public static Skill454 __stub_Skill454 = new Skill454(); + public static Skill455 __stub_Skill455 = new Skill455(); + public static Skill456 __stub_Skill456 = new Skill456(); + public static Skill457 __stub_Skill457 = new Skill457(); + public static Skill458 __stub_Skill458 = new Skill458(); + public static Skill459 __stub_Skill459 = new Skill459(); + public static Skill460 __stub_Skill460 = new Skill460(); + public static Skill461 __stub_Skill461 = new Skill461(); + public static Skill462 __stub_Skill462 = new Skill462(); + public static Skill463 __stub_Skill463 = new Skill463(); + public static Skill464 __stub_Skill464 = new Skill464(); + public static Skill465 __stub_Skill465 = new Skill465(); + public static Skill466 __stub_Skill466 = new Skill466(); + public static Skill467 __stub_Skill467 = new Skill467(); + public static Skill468 __stub_Skill468 = new Skill468(); + public static Skill469 __stub_Skill469 = new Skill469(); + public static Skill470 __stub_Skill470 = new Skill470(); + public static Skill471 __stub_Skill471 = new Skill471(); + public static Skill472 __stub_Skill472 = new Skill472(); + public static Skill473 __stub_Skill473 = new Skill473(); + public static Skill474 __stub_Skill474 = new Skill474(); + public static Skill475 __stub_Skill475 = new Skill475(); + public static Skill476 __stub_Skill476 = new Skill476(); + public static Skill477 __stub_Skill477 = new Skill477(); + public static Skill478 __stub_Skill478 = new Skill478(); + public static Skill479 __stub_Skill479 = new Skill479(); + public static Skill480 __stub_Skill480 = new Skill480(); + public static Skill481 __stub_Skill481 = new Skill481(); + public static Skill482 __stub_Skill482 = new Skill482(); + public static Skill483 __stub_Skill483 = new Skill483(); + public static Skill484 __stub_Skill484 = new Skill484(); + public static Skill485 __stub_Skill485 = new Skill485(); + public static Skill486 __stub_Skill486 = new Skill486(); + public static Skill487 __stub_Skill487 = new Skill487(); + public static Skill488 __stub_Skill488 = new Skill488(); + public static Skill489 __stub_Skill489 = new Skill489(); + public static Skill490 __stub_Skill490 = new Skill490(); + public static Skill491 __stub_Skill491 = new Skill491(); + public static Skill901 __stub_Skill901 = new Skill901(); + public static Skill902 __stub_Skill902 = new Skill902(); + public static Skill903 __stub_Skill903 = new Skill903(); + public static Skill904 __stub_Skill904 = new Skill904(); + public static Skill905 __stub_Skill905 = new Skill905(); + public static Skill925 __stub_Skill925 = new Skill925(); + public static Skill926 __stub_Skill926 = new Skill926(); + public static Skill1805 __stub_Skill1805 = new Skill1805(); + public static Skill1806 __stub_Skill1806 = new Skill1806(); + public static Skill1807 __stub_Skill1807 = new Skill1807(); + public static Skill1808 __stub_Skill1808 = new Skill1808(); + public static Skill1809 __stub_Skill1809 = new Skill1809(); + public static Skill1864 __stub_Skill1864 = new Skill1864(); + public static Skill1865 __stub_Skill1865 = new Skill1865(); + public static Skill1873 __stub_Skill1873 = new Skill1873(); + public static Skill1874 __stub_Skill1874 = new Skill1874(); + public static Skill1951 __stub_Skill1951 = new Skill1951(); + public static Skill2254 __stub_Skill2254 = new Skill2254(); + public static Skill2255 __stub_Skill2255 = new Skill2255(); + public static Skill2256 __stub_Skill2256 = new Skill2256(); + public static Skill2257 __stub_Skill2257 = new Skill2257(); + public static Skill2258 __stub_Skill2258 = new Skill2258(); + public static Skill2259 __stub_Skill2259 = new Skill2259(); + public static Skill2260 __stub_Skill2260 = new Skill2260(); + public static Skill2261 __stub_Skill2261 = new Skill2261(); + public static Skill2262 __stub_Skill2262 = new Skill2262(); + public static Skill2263 __stub_Skill2263 = new Skill2263(); + public static Skill2264 __stub_Skill2264 = new Skill2264(); + public static Skill2265 __stub_Skill2265 = new Skill2265(); + public static Skill2452 __stub_Skill2452 = new Skill2452(); + public static Skill2453 __stub_Skill2453 = new Skill2453(); +#endif + } +} diff --git a/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs.meta b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs.meta new file mode 100644 index 0000000000..6eb83fd08f --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/SkillStubs1.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: de0c956f1778a204c99aab11791923eb \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Skills/skill.cs b/Assets/PerfectWorld/Scripts/Skills/skill.cs index cf42b8ff2e..e9d07591d9 100644 --- a/Assets/PerfectWorld/Scripts/Skills/skill.cs +++ b/Assets/PerfectWorld/Scripts/Skills/skill.cs @@ -6,7 +6,7 @@ namespace BrewMonster.Scripts.Skills public class Range { /// 0=point 1=line 2=self sphere 3=target sphere 4=cone 5=self - public char type; // 0�� 1�� 2������ 3Ŀ���� 4Բ׶�� 5���� + public byte type; // 0�� 1�� 2������ 3Ŀ���� 4Բ׶�� 5���� public bool IsPoint() { return type == 0; } public bool IsLine() { return type == 1; } @@ -15,38 +15,47 @@ namespace BrewMonster.Scripts.Skills public bool IsSector() { return type == 4; } public bool IsSelf() { return type == 5; } public bool NoTarget() { return type == 2 || type == 5; } - + } - + // ռλ������ // Placeholder Skill class public class Skill : ElementSkill { - protected SkillStub stub; - // protected PlayerWrapper player; + protected SkillStub stub; + protected PlayerWrapper player; - protected uint id; + protected uint id; protected uint level; - Skill(uint i, SkillStub s) - { - id = i; + Skill(uint i, SkillStub s) + { + id = i; stub = s; } - public static Skill Create(uint id, int n) + public static Skill Create(uint id, int n) { - SkillStub stub = SkillStub.GetStub(id); - if(stub == null) + SkillStub stub = SkillStub.GetStub(id); + if (stub == null) return null; Skill skill = new Skill(id, stub); int max = skill.GetMaxLevel(); - if(n>max) + if (n > max) skill.SetLevel(max); else skill.SetLevel(n); return skill; } + public int GetLevel() { return (int)level; } + public PlayerWrapper GetPlayer() + { + return player; + } + public override int GetCls() + { + return stub.GetCls(); + } } - + public abstract class SkillStub { public const int MIN_LEVEL = 1; @@ -55,9 +64,9 @@ namespace BrewMonster.Scripts.Skills // Base info public uint id; // Ψһ���ֱ�ʶ // Unique identifier public int cls; // ְҵ // Class/Profession - public ushort[] name; // �������� // Skill name - public byte[] nativename; // ������ // Native name - public byte[] icon; // ����ͼ�� // Skill icon + public string name; // �������� // Skill name + public string nativename; // ������ // Native name + public string icon; // ����ͼ�� // Skill icon public int max_level; // ������󼶱�? // Maximum level public byte type; // �������? 1�������� 2�������� 3�����ٻ� 4���� 5���� // Skill type: 1-Normal 2-Special 3-Partner 4-Mount 5-Other @@ -88,33 +97,47 @@ namespace BrewMonster.Scripts.Skills public bool restrict_change; // �Ƿ���Ա��� // Whether can transform public bool restrict_attach; // �Ƿ���Ը��� // Whether can possess public bool auto_attack; // ʹ�ú��Ƿ��Զ����� // Whether to auto attack after use - public char time_type; // ˲������ // Instant cast type - public char long_range; - public char posdouble; // λ��ѡ�� // Position selection + public byte time_type; // ˲������ // Instant cast type + public byte long_range; + public byte posdouble; // λ��ѡ�� // Position selection public int clslimit; // ְҵ���� // Class restriction public int commoncooldown; // ������ȴmask bit0-4 ������ȴ0-4 bit5-9 ��Ʒ��ȴ0-4 - // Common cooldown mask bit0-4 skill cooldown 0-4 bit5-9 item cooldown 0-4 + // Common cooldown mask bit0-4 skill cooldown 0-4 bit5-9 item cooldown 0-4 public int commoncooldowntime; // ��ȴʱ�䣬��λ���� // Cooldown time in milliseconds public int itemcost; // �ͷ�ʱ������Ʒ >0��Ч // Item cost when casting, effective if >0 // ������� // Combo related - public int combosk_preskill; + public int combosk_preskill; public int combosk_interval; public int combosk_nobreak; - public byte[] effect; - public byte[] aerial_effect; + public string effect; + public string aerial_effect; public Range range; public bool has_stateattack; - public List restrict_weapons; - public static Dictionary map; + public List restrict_weapons = new List(); + public static Dictionary map = new Dictionary(); public static Dictionary GetMap() => map; public static Dictionary> inheritSkillMap = new(); + public SkillStub(uint i) + { + id = i; + is_inherent = (false); + is_movingcast = (false); + itemcost = (0); + combosk_preskill = (0); + combosk_interval = (0); + combosk_nobreak = (0); + if (GetStub(id) == null) + { + GetMap().Add(id, this); + } + } public static List GetInherentSkillList(uint cls) { return inheritSkillMap[cls]; @@ -149,8 +172,8 @@ namespace BrewMonster.Scripts.Skills // ����Ϊ��C++ת���Ľӿ� // The following methods are converted from C++ public uint GetId() { return id; } public int GetCls() { return cls; } - public ushort[] GetName() { return name; } - public byte[] GetIcon() { return icon; } + public string GetName() { return name; } + public string GetIcon() { return icon; } public int GetMaxLevel() { return max_level; } public Range GetRange() { return range; } public int GetItemCost() { return itemcost; } @@ -171,7 +194,7 @@ namespace BrewMonster.Scripts.Skills public virtual bool CheckHpCondition(int hp, int max_hp) { return true; } public virtual bool CheckComboSkExtraCondition(Skill skill) { return true; } public virtual int GetIntroduction(Skill skill, ushort[] descBuffer, int descBufferLen, ushort[] titleBuffer) { return 0; } - + // ������Ч�Լ�� // Validate weapon restriction public bool ValidWeapon(int weapon) { diff --git a/Assets/PerfectWorld/Scripts/Skills/skill1.cs b/Assets/PerfectWorld/Scripts/Skills/skill1.cs new file mode 100644 index 0000000000..ad206d9911 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/skill1.cs @@ -0,0 +1,309 @@ +#define SKILL_CLIENT +using BrewMonster.Scripts.Skills; +using System.Text; +using UnityEngine; +using static BrewMonster.PET_EVOLVE_CONFIG; + +namespace BrewMonster +{ + +#if SKILL_SERVER + public class Skill1 : Skill + { + public const int SKILL_ID = 1; + + public Skill1() : base(SKILL_ID) + { + } + } +#endif + + public class Skill1Stub : SkillStub + { + // Static arrays for skill requirements + private static readonly int[] RequiredLevelArray = { 0, 5, 10, 15, 20, 25, 30, 35, 40, 45 }; + private static readonly int[] RequiredSpArray = { 0, 300, 1200, 2800, 5200, 8400, 12800, 18600, 26300, 36500 }; + private static readonly int[] RequiredMoneyArray = { 0, 30, 130, 280, 480, 730, 1180, 1630, 2080, 2580 }; + +#if SKILL_SERVER + public class State1 : SkillStub.State + { + public int GetTime(Skill skill) + { + return 400; + } + + public bool Quit(Skill skill) + { + return false; + } + + public bool Loop(Skill skill) + { + return false; + } + + public bool Bypass(Skill skill) + { + return false; + } + + public void Calculate(Skill skill) + { + skill.GetPlayer().SetDecmp(0.2f * (-5 + 7 * skill.GetLevel())); + skill.GetPlayer().SetPray(1); + } + + public bool Interrupt(Skill skill) + { + return false; + } + + public bool Cancel(Skill skill) + { + return true; + } + + public bool Skip(Skill skill) + { + return false; + } + } +#endif + +#if SKILL_SERVER + public class State2 : SkillStub.State + { + public int GetTime(Skill skill) + { + return 700; + } + + public bool Quit(Skill skill) + { + return false; + } + + public bool Loop(Skill skill) + { + return false; + } + + public bool Bypass(Skill skill) + { + return false; + } + + public void Calculate(Skill skill) + { + skill.GetPlayer().SetDecmp(0.8f * (-5 + 7 * skill.GetLevel())); + skill.SetPlus(1.9f * skill.GetLevel() * skill.GetLevel() + 64 * skill.GetLevel() + 36.7f); + skill.SetRatio(0); + skill.SetDamage(skill.GetAttack()); + skill.GetPlayer().SetPerform(1); + } + + public bool Interrupt(Skill skill) + { + return false; + } + + public bool Cancel(Skill skill) + { + return false; + } + + public bool Skip(Skill skill) + { + return false; + } + } +#endif + +#if SKILL_SERVER + public class State3 : SkillStub.State + { + public int GetTime(Skill skill) + { + return 0; + } + + public bool Quit(Skill skill) + { + return false; + } + + public bool Loop(Skill skill) + { + return false; + } + + public bool Bypass(Skill skill) + { + return false; + } + + public void Calculate(Skill skill) + { + } + + public bool Interrupt(Skill skill) + { + return false; + } + + public bool Cancel(Skill skill) + { + return false; + } + + public bool Skip(Skill skill) + { + return false; + } + } +#endif + public Skill1Stub() : base(1) + { + cls = 0; + name = ""; + nativename = ""; + icon = ".dds"; + max_level = 10; + type = 1; + apcost = 0; + arrowcost = 0; + apgain = 10; + attr = 1; + rank = 0; + eventflag = 0; + posdouble = 0; + clslimit = 0; + time_type = 0; + showorder = 1101; + allow_land = true; + allow_air = true; + allow_water = true; + allow_ride = false; + auto_attack = true; + long_range = 0; + restrict_corpse = 0; + allow_forms = 1; + restrict_weapons.Add(0); + restrict_weapons.Add(1); + restrict_weapons.Add(182); + restrict_weapons.Add(5); + restrict_weapons.Add(292); + restrict_weapons.Add(9); + effect = ".sgc"; + range = new Range(); + range.type = 0; + doenchant = 0; + dobless = 0; + commoncooldown = 0; + commoncooldowntime = 0; +#if SKILL_SERVER + statestub.Add(new State1()); + statestub.Add(new State2()); + statestub.Add(new State3()); +#endif + } + + ~Skill1Stub() + { + } + + public float GetMpcost(Skill skill) + { + return (float)(-5 + 7 * skill.GetLevel()); + } + + public int GetExecutetime(Skill skill) + { + return 700; + } + + public int GetCoolingtime(Skill skill) + { + return 3000; + } + + public int GetRequiredLevel(Skill skill) + { + return RequiredLevelArray[skill.GetLevel() - 1]; + } + + public int GetRequiredSp(Skill skill) + { + return RequiredSpArray[skill.GetLevel() - 1]; + } + + public int GetRequiredMoney(Skill skill) + { + return RequiredMoneyArray[skill.GetLevel() - 1]; + } + + public float GetRadius(Skill skill) + { + return 0f; + } + + public float GetAttackdistance(Skill skill) + { + return 0f; + } + + public float GetAngle(Skill skill) + { + return (float)(1 - 0.0111111 * 0); + } + + public float GetPraydistance(Skill skill) + { + return (float)skill.GetPlayer().GetRange(); + } + +#if SKILL_CLIENT + public int GetIntroduction(Skill skill, StringBuilder buffer, int length, string format) + { + string result = string.Format(format, + skill.GetLevel(), + -5 + 7 * skill.GetLevel(), + 1.9 * skill.GetLevel() * skill.GetLevel() + 64 * skill.GetLevel() + 36.7); + if (result.Length < length) + { + buffer.Append(result); + return result.Length; + } + return 0; + } +#endif + +#if SKILL_SERVER + public int GetEnmity(Skill skill) + { + return 0; + } + + public bool TakeEffect(Skill skill) + { + return true; + } + + public float GetEffectdistance(Skill skill) + { + return 13.3f; + } + + public int GetAttackspeed(Skill skill) + { + return 3; + } + + public float GetHitrate(Skill skill) + { + return (float)(1.2 + 0.05 * skill.GetLevel()); + } +#endif + } +} diff --git a/Assets/PerfectWorld/Scripts/Skills/skill1.cs.meta b/Assets/PerfectWorld/Scripts/Skills/skill1.cs.meta new file mode 100644 index 0000000000..af5f2470cf --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Skills/skill1.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d0031361f3c360648b74e192f6aa04f7 \ No newline at end of file diff --git a/Assets/Scenes/NPCRender.unity b/Assets/Scenes/NPCRender.unity index 45e412aef5..ac2b0d6276 100644 --- a/Assets/Scenes/NPCRender.unity +++ b/Assets/Scenes/NPCRender.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7685a162030cafe46182d3dd6e0f23ba90796a2d72493060343a268535d3630 -size 33045827 +oid sha256:a2f2874de75b6144fd921c9dd6aebe4328a5014a23ca4d2f40e2ae722233aa4c +size 33045353 diff --git a/Assets/Scenes/a61.unity b/Assets/Scenes/a61.unity index 47aee35b64..d4bd652b8a 100644 --- a/Assets/Scenes/a61.unity +++ b/Assets/Scenes/a61.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6dac5f0e4751a89a031bf1a86b9494891fd913ef5efb1605a27f95f6e81652e3 -size 533673959 +oid sha256:3df77e654f3a5255269e6a12859be0c185eef6bba1246f1f593148e2112d50c5 +size 533674545 diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 60066f96ea..61a9aea88a 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -4,6 +4,7 @@ using BrewMonster.Network; using BrewMonster.Scripts; using BrewMonster.Scripts.Managers; using BrewMonster.Scripts.Player; +using BrewMonster.Scripts.Skills; using CSNetwork; using CSNetwork.Common; using CSNetwork.GPDataType; @@ -34,34 +35,38 @@ public class CECHostPlayer : CECPlayer [SerializeField] private Button btnJump; [SerializeField] private Button btnRun; - PlayerStateMachine _playerStateMachine; - PlayerMoveState _moveState; - PlayerIdleState _idleState; + private PlayerStateMachine _playerStateMachine; + private PlayerMoveState _moveState; + private PlayerIdleState _idleState; public CECHostMove m_MoveCtrl; - CECHPWorkMan m_pWorkMan; // Host work manager - uint m_dwLIES; // Logic-influence extend states - FACTION_FORTRESS_ENTER m_fortressEnter; // ½øÈë»ùµØÐÅÏ¢ - PVPINFO m_pvp; // pvp information - bool m_bInSanctuary = false; // true, player is in sanctuary - int m_idFaction = 0; // ID of player's faction + private CECHPWorkMan m_pWorkMan; // Host work manager + private uint m_dwLIES; // Logic-influence extend states + private FACTION_FORTRESS_ENTER m_fortressEnter; // ½øÈë»ùµØÐÅÏ¢ + private PVPINFO m_pvp; // pvp information + private bool m_bInSanctuary = false; // true, player is in sanctuary + private int m_idFaction = 0; // ID of player's faction public bool m_bPrepareFight = false; // true, prepare to fight - int m_iJumpCount = 0; - bool m_bJumpInWater = false; + private int m_iJumpCount = 0; + private bool m_bJumpInWater = false; public A3DVECTOR3 m_vVelocity; // Velocity - List m_aTabSels = new List(); + private int m_iRoleCreateTime; + private int m_iRoleLastLoginTime; // Role last login time + private int m_iAccountTotalCash; + private List m_aTabSels = new List(); - float playerSpeed = 5.0f; - float jumpHeight = 1.5f; - float gravityValue = -9.81f; - StateAnim stateAnim = StateAnim.Idle; - Vector3 playerVelocity; - bool isGrounded = false; - bool isRun = false; - Vector3 m_vLastSevPos; + + private float playerSpeed = 5.0f; + private float jumpHeight = 1.5f; + private float gravityValue = -9.81f; + private StateAnim stateAnim = StateAnim.Idle; + private Vector3 playerVelocity; + private bool isGrounded = false; + private bool isRun = false; + private Vector3 m_vLastSevPos; public CDR_INFO m_CDRInfo; public GNDINFO m_GndInfo; - int m_idUCSelTarget; // Uncertificately selected object's ID + private int m_idUCSelTarget; // Uncertificately selected object's ID public float m_fVertSpeed = 0f; // ====== Ground cast config ====== @@ -103,9 +108,56 @@ public class CECHostPlayer : CECPlayer } } - public void LoadResources() + public bool LoadResources() { RoleInfo RoleInfo = UnityGameSession.Instance.GetRoleInfo(); + m_iProfession = RoleInfo.occupation; + m_iGender = RoleInfo.gender; + + m_iRoleCreateTime = RoleInfo.create_time; + m_iRoleLastLoginTime = RoleInfo.lastlogin_time; + m_iAccountTotalCash = RoleInfo.cash_add; + + if (!LoadPlayerSkeleton(true)) + { + BMLogger.LogError("HoangDev CECHostPlayer::LoadResources, Failed to load skeleton"); + return false; + } + return true; + } + + private bool LoadPlayerSkeleton(bool bAtOnce) + { + EC_PLAYERLOADRESULT Ret = default; + if (bAtOnce /*|| !IsLoadThreadReady()*/) + { + // Under normal circumstances, only HostPlayer can reach here + /* if (!LoadPlayerModel(m_iProfession, m_iGender, m_CustomizeData.bodyID, aEquips, szPetPath, Ret, false, false)) + { + a_LogOutput(1, "CECPlayer::Init, failed to call LoadPlayerModel() !"); + return false; + }*/ + + SetPlayerLoadedResult(Ret); + + /* if (IsShapeChanged() && !QueueLoadDummyModel(m_iShape, true)) + { + // ignore the dummy model loading failure + a_LogOutput(1, "CECPlayer::Init, failed to call QueueLoadDummyModel() !"); + }*/ + } + return true; + } + + private bool SetPlayerLoadedResult(EC_PLAYERLOADRESULT ret) + { + OnAllResourceReady(); + return true; + } + + private void OnAllResourceReady() + { + CECHostSkillModel.Instance.Initialize(); } private void Start() @@ -576,21 +628,21 @@ public class CECHostPlayer : CECPlayer // Add item to inventory EC_Inventory.SetItem(byPackage, bySlot, newItem); - //Debug.Log($"[Inventory] Successfully added item {tid} to package {byPackage}, slot {bySlot} with count {iAmount}"); + //Debug.Log($"[Inventory] Successfully added item {tid} to package {byPackage}, slot {bySlot} with count {iAmount}"); - // Trigger UI refresh if an EC_InventoryUI is present in scene - var ui = GameObject.FindFirstObjectByType(); - if (ui != null) - { - ui.RefreshAll(); + // Trigger UI refresh if an EC_InventoryUI is present in scene + var ui = GameObject.FindFirstObjectByType(); + if (ui != null) + { + ui.RefreshAll(); + } } + else + { + Debug.LogWarning("[Inventory] PICKUP_ITEM: Invalid data length"); + } + break; } - else - { - Debug.LogWarning("[Inventory] PICKUP_ITEM: Invalid data length"); - } - break; - } } } public void OnMsgHstItemOperation(ECMSG Msg) @@ -870,7 +922,7 @@ public class CECHostPlayer : CECPlayer { BMLogger.LogError("HostPlayer InitCharacter no CharacterController"); } - + //if (role.name != null && role.name.ByteArray != null) //{ // roleName = Encoding.UTF8.GetString(role.name.ByteArray, 0, role.name.Length); @@ -902,6 +954,8 @@ public class CECHostPlayer : CECPlayer m_CDRInfo.vExtent = EC_Utility.ToVector3(m_aabbServer.Extents); // Create work manager m_pWorkMan = new CECHPWorkMan(this); + + LoadResources(); if (m_pWorkMan == null) { return; @@ -1698,7 +1752,10 @@ public class CECHostPlayer : CECPlayer return bRet; } - + public int GetProfession() + { + return m_iProfession; + } public void SetSelectedTarget(int id) { m_idSelTarget = id; @@ -1782,7 +1839,7 @@ public struct NPCINFO public int MaxHealth; // Attacking properties public int IDNPC; // Attacking properties - public NPCINFO(string name, int currentHealth, int maxHealth,int idnpc) + public NPCINFO(string name, int currentHealth, int maxHealth, int idnpc) { Name = name; CurrentHealth = currentHealth; diff --git a/Assets/Scripts/GameController.cs b/Assets/Scripts/GameController.cs index f4f2d14339..500b807049 100644 --- a/Assets/Scripts/GameController.cs +++ b/Assets/Scripts/GameController.cs @@ -66,7 +66,6 @@ public class GameController : MonoBehaviour hostPlayer.InitCharacter(info); cinemachineCamera.Follow = hostPlayer.transform; cinemachineCamera.ForceCameraPosition(hostPlayer.transform.position, Quaternion.identity); - CinemachineTouchOrbit.Instance.SetOrbitTarget(hostPlayer.transform); //Vector3 pos = new Vector3(info.pos.x, info.pos.y, info.pos.z); //Vector3 posCam = pos; //posCam.z -= 10f; diff --git a/Assets/Scripts/PlayerVisual.cs b/Assets/Scripts/PlayerVisual.cs index 873b355a1b..6e08a259a7 100644 --- a/Assets/Scripts/PlayerVisual.cs +++ b/Assets/Scripts/PlayerVisual.cs @@ -32,16 +32,15 @@ public class PlayerVisual : MonoBehaviour namedAnimancer = GetComponentInChildren(); if (namedAnimancer == null) { - BrewMonster.BMLogger.LogError("InitPlayerEventDoneHandler animancer == null"); + BrewMonster.BMLogger.LogWarning("InitPlayerEventDoneHandler animancer == null"); return; } var player = GetComponentInParent(); if (player == null) { - BrewMonster.BMLogger.LogError("player == null"); + BrewMonster.BMLogger.LogWarning("player == null"); return; } - BrewMonster.BMLogger.LogError("HoangDev: player:"+ player); _playerInfo = player.GetPlayInfo(); id = _playerInfo.cid;