using BrewMonster; using CSNetwork.GPDataType; using ModelRenderer.Scripts.GameData; using System; using System.Runtime.InteropServices; using System.Text; public class CECMonster : CECNPC { MONSTER_ESSENCE m_pDBEssence; public override void SetUpCECNPC(CECNPCMan pNPCMan) { base.SetUpCECNPC(pNPCMan); m_iCID = (int)Class_ID.OCID_MONSTER; m_pDBEssence = default; } public override bool Init(int tid, in info_npc info, ReadOnlySpan packet, int infoOffset) { base.Init(tid, info, packet, infoOffset); //BrewMonster.BMLogger.Log("HoangDev: MonsterInit"); var pDB = ElementDataManProvider.GetElementDataMan(); DATA_TYPE DataType = default; m_pDBEssence = (MONSTER_ESSENCE)pDB.get_data_ptr((uint)tid, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); m_fTouchRad = m_pDBEssence.size; m_BasicProps.iLevel = m_pDBEssence.level; QueueLoadNPCModel(); /* float fExt = m_fTouchRad * 1.5f; m_cdr.vExts.Set(fExt, fExt, fExt); m_pNPCModelPolicy.SetDefaultPickAABBExt(m_cdr.vExts);*/ // If NPC doesn't have specific name, use the name in database if ((info.state & (int)PlayerNPCState.GP_STATE_NPC_NAME) == 0) { //m_strName = Encoding.Unicode.GetString(MemoryMarshal.AsBytes(m_pDBEssence.name)); m_strName = Encoding.Unicode.GetString(MemoryMarshal.AsBytes(m_pDBEssence.name)); m_npcUI.SetName(m_strName); } if ((m_pDBEssence.combined_switch & (uint)MONSTER_COMBINED_SWITCH.MCS_FORBID_SELECTION) != 0) SetSelectable(false); transform.position = EC_Utility.ToVector3(info.pos); transform.forward = EC_Utility.ToVector3(EC_Utility.glb_DecompressDirH(info.dir)); StartWork((int)WorkType.WT_NOTHING, (int)WorkID.WORK_STAND); return true; } public MONSTER_ESSENCE GetDBEssence() { return m_pDBEssence; } }