// 接收到消息 public void psstNotifyBattleCardPropertyUserCmd(stNotifyBattleCardPropertyUserCmd msg) { Ctx.m_instance.m_logSys.fightLog("[Fight] 接收到攻击数据"); m_curParseRound.psstNotifyBattleCardPropertyUserCmd(msg); //nextOneAttactRound(); }
override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); m_being = att; Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者攻击前属性值 {0}", msg.m_origAttObject.log())); Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者攻击后属性值 {0}", 0)); }
// 技能攻击攻击者不会伤血 m_damage = 0 override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); skillId = msg.dwMagicType; foreach (var item in msg.defList) { m_hurtIdList.Add(item.qwThisID); } }
// 技能攻击攻击者不会伤血 m_damage = 0 override public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); skillId = msg.dwMagicType; foreach (var item in msg.defList) { m_hurtIdList.Add(item.qwThisID); } m_attThisId = att.sceneCardItem.svrCard.qwThisID; }
// 攻击返回 protected void psstNotifyBattleCardPropertyUserCmd(ByteBuffer bu) { stNotifyBattleCardPropertyUserCmd cmd = new stNotifyBattleCardPropertyUserCmd(); cmd.derialize(bu); UISceneDZ uiSceneDZ = Ctx.m_instance.m_uiSceneMgr.getSceneUI <UISceneDZ>(UISceneFormID.eUISceneDZ); if (uiSceneDZ != null && uiSceneDZ.isVisible()) { uiSceneDZ.psstNotifyBattleCardPropertyUserCmd(cmd); } }
override public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); // 普通被击伤血是对方的伤血值,不是血量的减少 m_bDamage = att.sceneCardItem.svrCard.damage > 0; if (m_bDamage) { m_damage = (int)att.sceneCardItem.svrCard.damage; } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 被击者掉血 {0}", m_damage)); m_hurtEffectId = 7; // 普通被击,根据攻击力播放不同的特效,并且播放掉血特效 }
override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); // 普通被击伤血是对方的伤血值,不是血量的减少 m_bDamage = true; if (m_bDamage) { m_damage = 10; } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 被击者掉血 {0}", m_damage)); m_hurtEffectId = 7; // 普通被击,根据攻击力播放不同的特效,并且播放掉血特效 }
override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); skillId = msg.dwMagicType; this.delayTime = m_skillTableItem.m_effectMoveTime; // 技能被击伤血是血量值差 m_bDamage = true; if (m_bDamage) { m_damage = 10; } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 被击者掉血 {0}", m_damage)); }
override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); // 播放 Fly 数字,攻击者和被击者都有可能伤血,播放掉血数字 // 普通攻击者掉血是被击者的伤血量 m_bDamage = true; if (m_bDamage) // 攻击力可能为 0 { m_damage = 11; } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者掉血 {0}", m_damage)); m_hurterId = 11; m_attackEffectId = 0; // 普通攻击没有攻击特效 }
override public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); // 播放 Fly 数字,攻击者和被击者都有可能伤血,播放掉血数字 // 普通攻击者掉血是被击者的伤血量 m_bDamage = def.sceneCardItem.svrCard.damage > 0; if (m_bDamage) // 攻击力可能为 0 { m_damage = (int)def.sceneCardItem.svrCard.damage; } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者掉血 {0}", m_damage)); m_hurterId = def.sceneCardItem.svrCard.qwThisID; m_attackEffectId = 0; // 普通攻击没有攻击特效 }
override public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); m_svrCard = def.sceneCardItem.svrCard; // 保存这次被击的属性,可能这个会被后面的给改掉 skillId = msg.dwMagicType; this.delayTime = m_skillTableItem.m_effectMoveTime; // 技能被击伤血是血量值差 m_bDamage = hasDamageHp(msg.m_origDefObject, def.sceneCardItem.svrCard); if (m_bDamage) { m_damage = (int)(msg.m_origDefObject.hp - def.sceneCardItem.svrCard.hp); } Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 被击者掉血 {0}", m_damage)); }
override public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); m_card = att; m_svrCard = att.sceneCardItem.svrCard; // 保存这次攻击的属性,可能这个会被后面的给改掉 Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者攻击前属性值 {0}", msg.m_origAttObject.log())); Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者攻击后属性值 {0}", att.sceneCardItem.svrCard.log())); // 回血统一接口 m_bAddHp = hasAddHp(msg.m_origAttObject, att.sceneCardItem.svrCard); m_addHp = (int)(att.sceneCardItem.svrCard.hp - msg.m_origAttObject.hp); if (m_bAddHp) { Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者加血 {0}", m_addHp)); } updateStateChange(msg.m_origAttObject.state, att.sceneCardItem.svrCard.state); }
// 普通攻击,必然造成伤害 protected void commonAttack(stNotifyBattleCardPropertyUserCmd msg) { Ctx.m_instance.m_logSys.fightLog("[Fight] 开始一次普通攻击"); SceneCardBase att = null; SceneCardBase def = null; if (!attackCheck(msg.A_object.qwThisID, ref att) || !attackCheck(msg.defList[0].qwThisID, ref def)) { Ctx.m_instance.m_logSys.fightLog("[Fight] 普通攻击攻击失败"); } else { msg.m_origAttObject = att.sceneCardItem.svrCard; msg.m_origDefObject = def.sceneCardItem.svrCard; att.sceneCardItem.svrCard = msg.A_object; def.sceneCardItem.svrCard = msg.defList[0]; startAtt(att, def, EAttackType.eCommon, msg); attackTo(att, def, EAttackType.eCommon, msg); } }
public void psstNotifyBattleCardPropertyUserCmd(stNotifyBattleCardPropertyUserCmd msg) { m_bHasFightData = true; FightRoundItemBase attItem = null; if (0 == msg.type) // 攻击 { attItem = new FightRoundAttItem(m_sceneDZData); } else if (1 == msg.type) // 召唤 { attItem = new FightRoundSummonItem(m_sceneDZData); } else if (2 == msg.type) // 抽牌 { attItem = new FightRoundGetItem(m_sceneDZData); } attItem.addOneAttackAndHurtEndHandle(onOneAttackAndHurtEndHandle); attItem.psstNotifyBattleCardPropertyUserCmd(msg); m_cacheList.Add(attItem); //nextOneAttact(); }
// 法术攻击有攻击木目标,如果不用选择攻击目标的法术攻击,服务器发送过来的攻击者是释放一边的英雄,技能攻击可能给自己回血,也可能给对方伤血 protected void skillAttack(stNotifyBattleCardPropertyUserCmd msg) { Ctx.m_instance.m_logSys.fightLog("[Fight] 开始一次技能攻击"); SceneCardBase att = null; SceneCardBase def = null; if (!attackCheck(msg.A_object.qwThisID, ref att)) { Ctx.m_instance.m_logSys.fightLog("[Fight] 技能攻击攻击者无效"); } if (att == null || att.sceneCardItem == null) { Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 技能攻击攻击者卡牌 {0} 数据为null", att.getDesc())); } msg.m_origAttObject = att.sceneCardItem.svrCard; att.sceneCardItem.svrCard = msg.A_object; startAtt(att, null, EAttackType.eSkill, msg); foreach (var svrCard in msg.defList) { if (!attackCheck(svrCard.qwThisID, ref def)) { Ctx.m_instance.m_logSys.fightLog("[Fight] 技能攻击被击者无效"); } else { msg.m_origDefObject = def.sceneCardItem.svrCard; def.sceneCardItem.svrCard = svrCard; attackTo(att, def, EAttackType.eSkill, msg); } } }
// 初始化数据 virtual public void initItemData(SceneCardBase att, SceneCardBase def, stNotifyBattleCardPropertyUserCmd msg) { }
// 初始化数据 virtual public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { }
override public void initItemData(BeingEntity att, BeingEntity def, stNotifyBattleCardPropertyUserCmd msg) { base.initItemData(att, def, msg); m_being = def; }
virtual public void psstNotifyBattleCardPropertyUserCmd(stNotifyBattleCardPropertyUserCmd msg) { }
// 生成攻击数据,普通攻击 def 是有值的,技能攻击没有值 protected void startAtt(SceneCardBase att, SceneCardBase def, EAttackType attackType, stNotifyBattleCardPropertyUserCmd msg) { if (att != null) { Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 攻击者详细信息 {0}", att.getDesc())); // 攻击 AttackItemBase attItem = null; attItem = att.fightData.attackData.createItem(attackType); attItem.initItemData(att, def, msg); } }
override public void psstNotifyBattleCardPropertyUserCmd(stNotifyBattleCardPropertyUserCmd msg) { m_attCmd = msg; }
// 攻击者攻击被击者 protected void attackTo(SceneCardBase att, SceneCardBase def, EAttackType attackType, stNotifyBattleCardPropertyUserCmd msg) { if (att != null && def != null) { Ctx.m_instance.m_logSys.fightLog(string.Format("[Fight] 被击者详细信息 {0}", def.getDesc())); // 受伤 HurtItemBase hurtItem = null; hurtItem = def.fightData.hurtData.createItem((EHurtType)attackType); hurtItem.initItemData(att, def, msg); def.fightData.hurtData.allHurtExecEndDisp.addEventHandle(onOneAttackAndHurtEndHandle); m_hurtList.Add(def.fightData.hurtData); } }
public void psstNotifyBattleCardPropertyUserCmd(stNotifyBattleCardPropertyUserCmd msg) { m_sceneDZData.m_fightMsgMgr.psstNotifyBattleCardPropertyUserCmd(msg); }