fix 2 struct
This commit is contained in:
@@ -78,16 +78,16 @@ namespace BrewMonster
|
||||
private static Dictionary<uint, PLAYER_ACTION_INFO_CONFIG> _default_skill_actions
|
||||
= new Dictionary<uint, PLAYER_ACTION_INFO_CONFIG>();
|
||||
|
||||
protected int m_iBoothState = 0; // Booth state. 0, none; 1, prepare; 2, open booth; 3, visite other's booth
|
||||
public int m_idFRole = GNETRoles._R_UNMEMBER; // ID of player's faction role
|
||||
protected int m_idCountry = 0; // ¹úÕ½ÕóÓª id
|
||||
public static int MAX_REINCARNATION = 2;
|
||||
protected List<int> m_aCurEffects = new List<int>(); // Current effects
|
||||
byte m_ReincarnationCount = 0;
|
||||
string m_strName; // Player name
|
||||
// 需要是可能 || Need is possible
|
||||
protected bool m_bHangerOn = false;
|
||||
protected int m_iCurAction;
|
||||
protected int m_iBoothState = 0; // Booth state. 0, none; 1, prepare; 2, open booth; 3, visite other's booth
|
||||
public int m_idFRole = GNETRoles._R_UNMEMBER; // ID of player's faction role
|
||||
protected int m_idCountry = 0; // ¹úÕ½ÕóÓª id
|
||||
public static int MAX_REINCARNATION = 2;
|
||||
protected List<int> m_aCurEffects = new List<int>(); // Current effects
|
||||
byte m_ReincarnationCount = 0;
|
||||
string m_strName; // Player name
|
||||
// 需要是可能 || Need is possible
|
||||
protected bool m_bHangerOn = false;
|
||||
protected int m_iCurAction;
|
||||
|
||||
public MOVECONST m_MoveConst; // Const used when moving control
|
||||
public Move_Mode m_MoveMode;
|
||||
@@ -217,18 +217,18 @@ namespace BrewMonster
|
||||
}
|
||||
|
||||
|
||||
public static async Task<bool> LoadPlayerSkin(GameObject aSkins, int index, string szFile)
|
||||
{
|
||||
// these are LOD suffix
|
||||
string[] suffix1 = { "一�?", "二级", "三级" };
|
||||
string[] suffix2 = { "", "二级", "三级" };
|
||||
public static async Task<bool> LoadPlayerSkin(GameObject aSkins, int index, string szFile)
|
||||
{
|
||||
// these are LOD suffix
|
||||
string[] suffix1 = { "一�?", "二级", "三级" };
|
||||
string[] suffix2 = { "", "二级", "三级" };
|
||||
|
||||
string szSkinFile = "";
|
||||
string szSkinFile = "";
|
||||
|
||||
if (index == EC_Player_Skin_Const.SKIN_BODY_INDEX || index == EC_Player_Skin_Const.SKIN_HEAD_INDEX)
|
||||
szSkinFile = $"{szFile}{suffix2[0]}";
|
||||
else
|
||||
szSkinFile = $"{szFile}{suffix1[0]}";
|
||||
if (index == EC_Player_Skin_Const.SKIN_BODY_INDEX || index == EC_Player_Skin_Const.SKIN_HEAD_INDEX)
|
||||
szSkinFile = $"{szFile}{suffix2[0]}";
|
||||
else
|
||||
szSkinFile = $"{szFile}{suffix1[0]}";
|
||||
|
||||
aSkins = await AddressableManager.Instance.LoadPrefabAsync(szSkinFile);
|
||||
|
||||
@@ -388,38 +388,38 @@ namespace BrewMonster
|
||||
return PlayActionWithConfig(iAction, 0, bRestart, iTransTime, bQueue);
|
||||
}
|
||||
|
||||
private bool PlayActionWithConfig(int iAction, int actionConfigID, bool bRestart = true, int iTransTime = 200,
|
||||
bool bQueue = false)
|
||||
{
|
||||
if (iAction < 0 || iAction >= (int)PLAYER_ACTION_TYPE.ACT_MAX)
|
||||
private bool PlayActionWithConfig(int iAction, int actionConfigID, bool bRestart = true, int iTransTime = 200,
|
||||
bool bQueue = false)
|
||||
{
|
||||
return false;
|
||||
if (iAction < 0 || iAction >= (int)PLAYER_ACTION_TYPE.ACT_MAX)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (actionConfigID > 0)
|
||||
{
|
||||
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
|
||||
var p = ElementDataManProvider.GetElementDataMan()
|
||||
.get_data_ptr((uint)actionConfigID, ID_SPACE.ID_SPACE_CONFIG, ref dt);
|
||||
if (dt == DATA_TYPE.DT_PLAYER_ACTION_INFO_CONFIG)
|
||||
{
|
||||
PLAYER_ACTION actionConfig;
|
||||
actionConfig.type = (PLAYER_ACTION_TYPE)iAction;
|
||||
actionConfig.data = (PLAYER_ACTION_INFO_CONFIG)p;
|
||||
return PlayActionWithConfig(iAction, actionConfig, bRestart, iTransTime, bQueue);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
return PlayActionWithConfig(iAction, m_PlayerActions[iAction], bRestart, iTransTime, bQueue);
|
||||
}
|
||||
|
||||
if (actionConfigID > 0)
|
||||
private bool PlayActionWithConfig(int iAction, in PLAYER_ACTION actionConfig,
|
||||
bool bRestart = true, int iTransTime = 200, bool bQueue = false)
|
||||
{
|
||||
DATA_TYPE dt = DATA_TYPE.DT_INVALID;
|
||||
var p = ElementDataManProvider.GetElementDataMan()
|
||||
.get_data_ptr((uint)actionConfigID, ID_SPACE.ID_SPACE_CONFIG, ref dt);
|
||||
if (dt == DATA_TYPE.DT_PLAYER_ACTION_INFO_CONFIG)
|
||||
{
|
||||
PLAYER_ACTION actionConfig;
|
||||
actionConfig.type = (PLAYER_ACTION_TYPE)iAction;
|
||||
actionConfig.data = (PLAYER_ACTION_INFO_CONFIG)p;
|
||||
return PlayActionWithConfig(iAction, actionConfig, bRestart, iTransTime, bQueue);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
return PlayActionWithConfig(iAction, m_PlayerActions[iAction], bRestart, iTransTime, bQueue);
|
||||
}
|
||||
|
||||
private bool PlayActionWithConfig(int iAction, in PLAYER_ACTION actionConfig,
|
||||
bool bRestart = true, int iTransTime = 200, bool bQueue = false)
|
||||
{
|
||||
m_iCurAction = iAction;
|
||||
PLAYER_ACTION action = actionConfig;
|
||||
m_iCurAction = iAction;
|
||||
PLAYER_ACTION action = actionConfig;
|
||||
|
||||
var szAct = EC_Utility.BuildActionName(action, 0);
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
|
||||
@@ -501,50 +501,50 @@ namespace BrewMonster
|
||||
|
||||
CECAttackEvent pAttack = null;
|
||||
|
||||
// first try to find if there is already a skill attack event in attackman
|
||||
CECAttackerEvents attackerEvents = CECAttacksMan.Instance.FindAttackByAttacker(GetPlayerInfo().cid);
|
||||
if (attackerEvents)
|
||||
{
|
||||
CECAttackEvent pAttack1 = attackerEvents.Find(idSkill, nSection);
|
||||
if (pAttack1 != null)
|
||||
// first try to find if there is already a skill attack event in attackman
|
||||
CECAttackerEvents attackerEvents = CECAttacksMan.Instance.FindAttackByAttacker(GetPlayerInfo().cid);
|
||||
if (attackerEvents)
|
||||
{
|
||||
// Ãæ¹¥»÷µÄ·ÇµÚÒ»´ÎÉ˺¦ÏûÏ¢
|
||||
pAttack1.AddTarget(idTarget, dwModifier, nDamage);
|
||||
goto EXIT;
|
||||
CECAttackEvent pAttack1 = attackerEvents.Find(idSkill, nSection);
|
||||
if (pAttack1 != null)
|
||||
{
|
||||
// Ãæ¹¥»÷µÄ·ÇµÚÒ»´ÎÉ˺¦ÏûÏ¢
|
||||
pAttack1.AddTarget(idTarget, dwModifier, nDamage);
|
||||
goto EXIT;
|
||||
}
|
||||
else
|
||||
{
|
||||
attackerEvents.Signal();
|
||||
}
|
||||
}
|
||||
if (ElementSkill.IsGoblinSkill((uint)idSkill) &&
|
||||
ElementSkill.GetType((uint)idSkill) == 2)
|
||||
{
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, GetPlayerInfo().cid, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
else
|
||||
{
|
||||
attackerEvents.Signal();
|
||||
// begin a skill attack
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, m_idCurSkillTarget, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
}
|
||||
if (ElementSkill.IsGoblinSkill((uint)idSkill) &&
|
||||
ElementSkill.GetType((uint)idSkill) == 2)
|
||||
{
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, GetPlayerInfo().cid, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
else
|
||||
{
|
||||
// begin a skill attack
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, m_idCurSkillTarget, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
|
||||
if (pAttack != null)
|
||||
{
|
||||
int unusedInt = 0;
|
||||
pAttack.SetSkillSection(nSection);
|
||||
if (!IsDead() && (dwModifier & (uint)MOD.MOD_RETORT) == 0
|
||||
&& (dwModifier & (uint)MOD.MOD_ATTACK_AURA) == 0
|
||||
&& PlaySkillAttackAction(idSkill, nAttackSpeed, ref unusedInt, nSection, pAttack)
|
||||
&& (dwModifier & (uint)MOD.MOD_BEAT_BACK) == 0)
|
||||
if (pAttack != null)
|
||||
{
|
||||
int unusedInt = 0;
|
||||
pAttack.SetSkillSection(nSection);
|
||||
if (!IsDead() && (dwModifier & (uint)MOD.MOD_RETORT) == 0
|
||||
&& (dwModifier & (uint)MOD.MOD_ATTACK_AURA) == 0
|
||||
&& PlaySkillAttackAction(idSkill, nAttackSpeed, ref unusedInt, nSection, pAttack)
|
||||
&& (dwModifier & (uint)MOD.MOD_BEAT_BACK) == 0)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
pAttack.m_bSignaled = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pAttack.m_bSignaled = true;
|
||||
}
|
||||
}
|
||||
|
||||
EXIT:
|
||||
// // For skill attacking, time is always set to 0
|
||||
@@ -555,22 +555,12 @@ namespace BrewMonster
|
||||
|
||||
protected void ClearComActFlagAllRankNodes(bool v)
|
||||
{
|
||||
BMLogger.LogError("ClearComActFlagAllRankNodes " + gameObject.name + ": " + m_PlayerInfo.cid);
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new ClearComActFlagAllRankNodesEvent(v));
|
||||
}
|
||||
|
||||
public struct ClearComActFlagAllRankNodesEvent
|
||||
{
|
||||
public bool v;
|
||||
|
||||
public ClearComActFlagAllRankNodesEvent(bool value)
|
||||
public bool PlayAttackAction(int nAttackSpeed, ref int attackTime, CECAttackEvent attackEvent)
|
||||
{
|
||||
v = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool PlayAttackAction(int nAttackSpeed, ref int attackTime, CECAttackEvent attackEvent)
|
||||
{
|
||||
//attackTime = 0;
|
||||
//attackTime = 0;
|
||||
|
||||
//if (_pPlayerModel == null)
|
||||
// return false;
|
||||
@@ -589,35 +579,35 @@ namespace BrewMonster
|
||||
|
||||
ShowWeaponByConfig(action.data);
|
||||
|
||||
/* var pRightHandWeapon = GetRightHandWeapon();
|
||||
bool bHideFX = !CECOptimize.Instance.GFX.CanShowAttack(GetCharacterID(), GetClassID());*/
|
||||
// ==============================
|
||||
// Ground Attack
|
||||
// ==============================
|
||||
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
|
||||
{
|
||||
|
||||
// “起�? 动作(挥起)
|
||||
szAct = EC_Utility.BuildActionName(action, weapon_type, "起");
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
|
||||
szAct = EC_Utility.BuildActionName(action, weapon_type, "落");
|
||||
queueActionEvent.SetData(szAct, SetApplyDamage, true, attackEvent);
|
||||
EventBus.PublishChannelClass(m_PlayerInfo.cid, queueActionEvent);
|
||||
//PlayNonSkillActionWithName(iAction, szAct, true, 200, true, ref pActFlag, COMACT_FLAG_MODE_ONCE_MULTIIGNOREGFX);gagága
|
||||
/*
|
||||
if (pRightHandWeapon != null && IsUsingMagicWeapon())
|
||||
pRightHandWeapon.PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, true, 200, true, iAction, bHideFX);
|
||||
|
||||
nTime1 = _pPlayerModel.GetComActTimeSpanByName(szAct);
|
||||
|
||||
// “收” 动作(挥下)
|
||||
szAct = $"{action.data.action_prefix}_{action.data.action_weapon_suffix[weapon_type].suffix}Âä";
|
||||
QueueNonSkillActionWithName(iAction, szAct, 0, false, bHideFX);
|
||||
/* var pRightHandWeapon = GetRightHandWeapon();
|
||||
bool bHideFX = !CECOptimize.Instance.GFX.CanShowAttack(GetCharacterID(), GetClassID());*/
|
||||
// ==============================
|
||||
// Ground Attack
|
||||
// ==============================
|
||||
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
|
||||
{
|
||||
|
||||
// “起�? 动作(挥起)
|
||||
szAct = EC_Utility.BuildActionName(action, weapon_type, "起");
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
|
||||
szAct = EC_Utility.BuildActionName(action, weapon_type, "落");
|
||||
queueActionEvent.SetData(szAct, SetApplyDamage, true, attackEvent);
|
||||
EventBus.PublishChannelClass(m_PlayerInfo.cid, queueActionEvent);
|
||||
//PlayNonSkillActionWithName(iAction, szAct, true, 200, true, ref pActFlag, COMACT_FLAG_MODE_ONCE_MULTIIGNOREGFX);gagága
|
||||
/*
|
||||
if (pRightHandWeapon != null && IsUsingMagicWeapon())
|
||||
pRightHandWeapon.QueueAction(_GenWeaponActionName(szAct, m_iGender), 0, iAction, false, false, bHideFX);
|
||||
pRightHandWeapon.PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, true, 200, true, iAction, bHideFX);
|
||||
|
||||
nTime2 = _pPlayerModel.GetComActTimeSpanByName(szAct);*/
|
||||
nTime1 = _pPlayerModel.GetComActTimeSpanByName(szAct);
|
||||
|
||||
// “收” 动作(挥下)
|
||||
szAct = $"{action.data.action_prefix}_{action.data.action_weapon_suffix[weapon_type].suffix}Âä";
|
||||
QueueNonSkillActionWithName(iAction, szAct, 0, false, bHideFX);
|
||||
|
||||
if (pRightHandWeapon != null && IsUsingMagicWeapon())
|
||||
pRightHandWeapon.QueueAction(_GenWeaponActionName(szAct, m_iGender), 0, iAction, false, false, bHideFX);
|
||||
|
||||
nTime2 = _pPlayerModel.GetComActTimeSpanByName(szAct);*/
|
||||
}
|
||||
// ==============================
|
||||
// Air Attack
|
||||
@@ -1000,50 +990,50 @@ namespace BrewMonster
|
||||
// iAction = ACT_HANGINWATER;
|
||||
}
|
||||
|
||||
return iAction;
|
||||
}
|
||||
public A3DVECTOR3 GetModelMoveDir()
|
||||
{ // ÒÆ¶¯Ê±¡¢·µ»ØÒƶ¯³¯Ïò£¬¾²Ö¹Ê±¡¢·µ»ØÄ£Ðͳ¯Ïò
|
||||
return EC_Utility.ToA3DVECTOR3(transform.forward);
|
||||
}
|
||||
public void Damaged(int nDamage, uint dwModifier = 0, int skill = 0)
|
||||
{
|
||||
if (nDamage == -2)
|
||||
{
|
||||
// this message is caused by a help skill, so don't use a wounded action here
|
||||
/* if (dwModifier & CECAttackEvent::MOD_IMMUNE)
|
||||
BubbleText(BUBBLE_IMMUNE, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_NULLITY)
|
||||
BubbleText(BUBBLE_INVALIDHIT, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF)
|
||||
BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/
|
||||
return iAction;
|
||||
}
|
||||
else if (nDamage == -1)
|
||||
public A3DVECTOR3 GetModelMoveDir()
|
||||
{ // ÒÆ¶¯Ê±¡¢·µ»ØÒƶ¯³¯Ïò£¬¾²Ö¹Ê±¡¢·µ»ØÄ£Ðͳ¯Ïò
|
||||
return EC_Utility.ToA3DVECTOR3(transform.forward);
|
||||
}
|
||||
public void Damaged(int nDamage, uint dwModifier = 0, int skill = 0)
|
||||
{
|
||||
// when else player hit this player iDamage is -1,
|
||||
// Just play a wounded action
|
||||
if (!OnDamaged(skill))
|
||||
if (nDamage == -2)
|
||||
{
|
||||
// PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED);
|
||||
// this message is caused by a help skill, so don't use a wounded action here
|
||||
/* if (dwModifier & CECAttackEvent::MOD_IMMUNE)
|
||||
BubbleText(BUBBLE_IMMUNE, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_NULLITY)
|
||||
BubbleText(BUBBLE_INVALIDHIT, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF)
|
||||
BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/
|
||||
}
|
||||
/*if (dwModifier & CECAttackEvent::MOD_IMMUNE)
|
||||
BubbleText(BUBBLE_IMMUNE, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_NULLITY)
|
||||
BubbleText(BUBBLE_INVALIDHIT, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF)
|
||||
BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/
|
||||
}
|
||||
else
|
||||
{
|
||||
// Popup a damage decal
|
||||
if (nDamage > 0)
|
||||
else if (nDamage == -1)
|
||||
{
|
||||
int p1 = 0;
|
||||
/*if (dwModifier & CECAttackEvent::MOD_CRITICAL_STRIKE)
|
||||
p1 |= 0x0001;
|
||||
// when else player hit this player iDamage is -1,
|
||||
// Just play a wounded action
|
||||
if (!OnDamaged(skill))
|
||||
{
|
||||
// PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED);
|
||||
}
|
||||
/*if (dwModifier & CECAttackEvent::MOD_IMMUNE)
|
||||
BubbleText(BUBBLE_IMMUNE, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_NULLITY)
|
||||
BubbleText(BUBBLE_INVALIDHIT, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_DODGE_DEBUFF)
|
||||
BubbleText(BUBBLE_DODGE_DEBUFF, 0);*/
|
||||
}
|
||||
else
|
||||
{
|
||||
// Popup a damage decal
|
||||
if (nDamage > 0)
|
||||
{
|
||||
int p1 = 0;
|
||||
/*if (dwModifier & CECAttackEvent::MOD_CRITICAL_STRIKE)
|
||||
p1 |= 0x0001;
|
||||
|
||||
if (dwModifier & CECAttackEvent::MOD_RETORT)
|
||||
p1 |= 0x0002;*/
|
||||
if (dwModifier & CECAttackEvent::MOD_RETORT)
|
||||
p1 |= 0x0002;*/
|
||||
|
||||
if (!OnDamaged(skill))
|
||||
// PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED);
|
||||
@@ -1158,19 +1148,19 @@ namespace BrewMonster
|
||||
|
||||
int weapon_type = GetShowingWeaponType();
|
||||
|
||||
if (!_default_skill_actions.TryGetValue((uint)idSkill, out PLAYER_ACTION_INFO_CONFIG data) ||
|
||||
data.action_prefix == null || data.action_prefix.Length == 0 || data.action_prefix[0] == 0)
|
||||
{
|
||||
// Check if it's a target item skill / 检查是否为目标道具技能
|
||||
if (ElementSkill.GetCommonCoolDown((uint)idSkill) > 1 << 4)
|
||||
if (!_default_skill_actions.TryGetValue((uint)idSkill, out PLAYER_ACTION_INFO_CONFIG data) ||
|
||||
data.action_prefix == null || data.action_prefix.Length == 0 || data.action_prefix[0] == 0)
|
||||
{
|
||||
PLAYER_ACTION_INFO_CONFIG? data2 = m_PlayerActions[(int)PLAYER_ACTION_TYPE.ACT_USING_TARGET_ITEM].data;
|
||||
if (data2 == null || data2.Value.action_prefix == null || data2.Value.action_prefix.Length == 0 || data2.Value.action_prefix[0] == 0)
|
||||
// Check if it's a target item skill / 检查是否为目标道具技能
|
||||
if (ElementSkill.GetCommonCoolDown((uint)idSkill) > 1 << 4)
|
||||
{
|
||||
PLAYER_ACTION_INFO_CONFIG? data2 = m_PlayerActions[(int)PLAYER_ACTION_TYPE.ACT_USING_TARGET_ITEM].data;
|
||||
if (data2 == null || data2.Value.action_prefix == null || data2.Value.action_prefix.Length == 0 || data2.Value.action_prefix[0] == 0)
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
int nTime1, nTime2;
|
||||
bool bInfinite = false;
|
||||
@@ -1179,15 +1169,15 @@ namespace BrewMonster
|
||||
|
||||
var atkMan = CECAttacksMan.Instance;
|
||||
|
||||
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
|
||||
{
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, "_施放起_");
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, "_施放起_");
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// nTime1 = m_pPlayerModel->GetComActTimeSpanByName(szAct); // 获取动作时长 / Get action time span
|
||||
// pAct = m_pPlayerModel->GetComActByName(szAct);
|
||||
@@ -1198,36 +1188,36 @@ namespace BrewMonster
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
QueueSkillAttackActionWithName(idSkill, szAct, 0, bHideFX);
|
||||
|
||||
// nTime2 = m_pPlayerModel->GetComActTimeSpanByName(szAct);
|
||||
// pAct = m_pPlayerModel->GetComActByName(szAct);
|
||||
// if (pAct) bInfinite |= pAct->IsInfinite();
|
||||
nTime2 = 1000; // 临时值 / Temporary value
|
||||
}
|
||||
else
|
||||
{
|
||||
// 空中动作 / Air action
|
||||
string szActionMiddleName = null;
|
||||
if ((m_wingType == enumWingType.WINGTYPE_WING && IsFlying()) ||
|
||||
(m_iProfession == PROFESSION.PROF_ANGEL) ||
|
||||
(m_iProfession == PROFESSION.PROF_ARCHOR) ||
|
||||
(m_iProfession == PROFESSION.PROF_MONK) ||
|
||||
(m_iProfession == PROFESSION.PROF_GHOST))
|
||||
{
|
||||
szActionMiddleName = "_空中翅膀"; // Air with wings / 空中翅膀
|
||||
// nTime2 = m_pPlayerModel->GetComActTimeSpanByName(szAct);
|
||||
// pAct = m_pPlayerModel->GetComActByName(szAct);
|
||||
// if (pAct) bInfinite |= pAct->IsInfinite();
|
||||
nTime2 = 1000; // 临时值 / Temporary value
|
||||
}
|
||||
else
|
||||
{
|
||||
szActionMiddleName = "_空中飞剑"; // Air with sword / 空中飞剑
|
||||
}
|
||||
// 空中动作 / Air action
|
||||
string szActionMiddleName = null;
|
||||
if ((m_wingType == enumWingType.WINGTYPE_WING && IsFlying()) ||
|
||||
(m_iProfession == PROFESSION.PROF_ANGEL) ||
|
||||
(m_iProfession == PROFESSION.PROF_ARCHOR) ||
|
||||
(m_iProfession == PROFESSION.PROF_MONK) ||
|
||||
(m_iProfession == PROFESSION.PROF_GHOST))
|
||||
{
|
||||
szActionMiddleName = "_空中翅膀"; // Air with wings / 空中翅膀
|
||||
}
|
||||
else
|
||||
{
|
||||
szActionMiddleName = "_空中飞剑"; // Air with sword / 空中飞剑
|
||||
}
|
||||
|
||||
szActionMiddleName += "_施放起_";
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, szActionMiddleName);
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
szActionMiddleName += "_施放起_";
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, szActionMiddleName);
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// if (pRightHandWeapon && IsUsingMagicWeapon())
|
||||
// pRightHandWeapon->PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, true, 200, true, ACT_CASTSKILL, bHideFX);
|
||||
@@ -1353,7 +1343,7 @@ namespace BrewMonster
|
||||
public float GetGroundSpeed()
|
||||
{
|
||||
// return m_bWalkRun ? g_pGame.GetConfigs().GetHostRunSpeed() : m_ExtProps.mv.walk_speed;
|
||||
// return 5f;
|
||||
// return 5f;
|
||||
return m_bWalkRun ? m_ExtProps.mv.run_speed : m_ExtProps.mv.walk_speed;
|
||||
}
|
||||
|
||||
@@ -1492,45 +1482,45 @@ namespace BrewMonster
|
||||
|
||||
public byte GetReincarnationCount() { return m_ReincarnationCount; }
|
||||
|
||||
public string GetName()
|
||||
{
|
||||
return m_strName;
|
||||
}
|
||||
|
||||
public enumWingType GetWingType() { return m_wingType; }
|
||||
|
||||
|
||||
// Set part extend properties
|
||||
public void SetPartExtendProps(int iPropIdx, object pData)
|
||||
{
|
||||
switch (iPropIdx)
|
||||
public string GetName()
|
||||
{
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_BASE:
|
||||
return m_strName;
|
||||
}
|
||||
|
||||
m_ExtProps.bs = (ROLEEXTPROP_BASE)pData;
|
||||
break;
|
||||
public enumWingType GetWingType() { return m_wingType; }
|
||||
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_MOVE:
|
||||
|
||||
m_ExtProps.mv = (ROLEEXTPROP_MOVE)pData;
|
||||
break;
|
||||
// Set part extend properties
|
||||
public void SetPartExtendProps(int iPropIdx, object pData)
|
||||
{
|
||||
switch (iPropIdx)
|
||||
{
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_BASE:
|
||||
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_ATTACK:
|
||||
m_ExtProps.bs = (ROLEEXTPROP_BASE)pData;
|
||||
break;
|
||||
|
||||
m_ExtProps.ak = (ROLEEXTPROP_ATK)pData;
|
||||
break;
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_MOVE:
|
||||
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_DEF:
|
||||
m_ExtProps.mv = (ROLEEXTPROP_MOVE)pData;
|
||||
break;
|
||||
|
||||
m_ExtProps.df = (ROLEEXTPROP_DEF)pData;
|
||||
break;
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_ATTACK:
|
||||
|
||||
default:
|
||||
//ASSERT(0);
|
||||
return;
|
||||
m_ExtProps.ak = (ROLEEXTPROP_ATK)pData;
|
||||
break;
|
||||
|
||||
case (int)ExtendPropertyClass.EXTPROPIDX_DEF:
|
||||
|
||||
m_ExtProps.df = (ROLEEXTPROP_DEF)pData;
|
||||
break;
|
||||
|
||||
default:
|
||||
//ASSERT(0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public struct PlayActionEvent
|
||||
{
|
||||
|
||||
@@ -432,6 +432,8 @@ namespace CSNetwork
|
||||
case CommandID.OBJECT_STOP_MOVE:
|
||||
{
|
||||
int id1 = GPDataTypeHelper.FromBytes<int>(pDataBuf);
|
||||
BMLogger.LogError($"### GameDataSend: STOP MOVE ID: {id1}");
|
||||
|
||||
if (ISPLAYERID(id1))
|
||||
{
|
||||
EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERSTOPMOVE, (int)MANAGER_INDEX.MAN_PLAYER, -1,
|
||||
@@ -439,6 +441,7 @@ namespace CSNetwork
|
||||
}
|
||||
else if (ISNPCID(id1))
|
||||
{
|
||||
BMLogger.LogError($"### GameDataSend: NPC STOP MOVE ID: {id1}");
|
||||
EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCSTOPMOVE, (int)MANAGER_INDEX.MAN_NPC, 0, pDataBuf,
|
||||
pCmdHeader);
|
||||
}
|
||||
|
||||
@@ -1959,6 +1959,7 @@ namespace BrewMonster
|
||||
m_bMelee = false;
|
||||
//
|
||||
// // if there is an attack event currently, we should let it fire now.
|
||||
BMLogger.LogError("HoangDev: OnMsgHstStopAttack " + gameObject.name);
|
||||
ClearComActFlagAllRankNodes(true);
|
||||
|
||||
cmd_host_stop_attack pCmd = GPDataTypeHelper.FromBytes<cmd_host_stop_attack>((byte[])Msg.dwParam1);
|
||||
@@ -2135,7 +2136,7 @@ namespace BrewMonster
|
||||
//CECHPWorkDead pWork = (CECHPWorkDead*)m_pWorkMan.CreateWork(CECHPWork.Host_work_ID.WORK_DEAD);
|
||||
//pWork.SetBeDeadFlag(true);
|
||||
//m_pWorkMan.StartWork_p0(pWork);
|
||||
EventBus.PublishChannel(GetCharacterID(), new CECPlayer.ClearComActFlagAllRankNodesEvent(true));
|
||||
EventBus.PublishChannel(GetCharacterID(), new ClearComActFlagAllRankNodesEvent(true));
|
||||
PlayAction((int)PLAYER_ACTION_TYPE.ACT_GROUNDDIE);
|
||||
if (PopupManager.Instance != null)
|
||||
{
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace BrewMonster
|
||||
{
|
||||
if (_animationQueue.Count > 0)
|
||||
{
|
||||
BMLogger.Log("HoangDev : PlayActionEventHandler " + @event.AnimationName);
|
||||
_animationQueue.Enqueue(@event.AnimationName);
|
||||
_animationList = _animationQueue.ToList();
|
||||
return;
|
||||
@@ -89,7 +88,6 @@ namespace BrewMonster
|
||||
|
||||
private void QueueActionEventHandler(QueueActionEvent @event)
|
||||
{
|
||||
BMLogger.Log("HoangDev : QueueActionEventHandler " + @event.AnimationName);
|
||||
if (!EnqueueAnimation(@event))
|
||||
{
|
||||
BMLogger.LogError("HoangDev : EnqueueAnimation Failed");
|
||||
@@ -160,7 +158,6 @@ namespace BrewMonster
|
||||
/// <param name="fadeMode"></param>
|
||||
private void InternalPlayAnimation(string animationName, float duration = FadeTime, FadeMode fadeMode = FadeMode)
|
||||
{
|
||||
BMLogger.Log("HoangDev: InternalPlayAnimation " + animationName);
|
||||
_currentState = namedAnimancer.TryPlay(animationName, duration, fadeMode);
|
||||
if (_currentState == null)
|
||||
{
|
||||
|
||||
+52
-25
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user