sdBuff FindBuffByCastActor(int id, sdActorInterface castActor) { sdBuff buff = null; for (int i = 0; i < buffs.Count; i++) { buff = buffs[i]; if (buff.GetTemplateID() == id) { if (castActor == buff.m_CasterActor || castActor == null) { return(buff); } } } for (int i = 0; i < HideBuffs.Count; i++) { buff = HideBuffs[i]; if (buff.GetTemplateID() == id) { if (castActor == buff.m_CasterActor || castActor == null) { return(buff); } } } return(null); }
public bool AddBuffLayer(int id, Hashtable buffinfo, sdActorInterface casterActor) { int iMaxLayerCount = (int)buffinfo["byAugment"]; if (iMaxLayerCount > 1) { int isShare = (int)buffinfo["IsShare"]; sdBuff layeredBuff = null; if (isShare != 0) { layeredBuff = FindBuffByCastActor(id, casterActor); } else { layeredBuff = FindBuff(id); } if (layeredBuff != null) { layeredBuff.AddLayer(); if (!layeredBuff.IsHide()) { BuffChange(buffs); } return(true); } } return(false); }
public bool RemoveBuff(int id) { bool bRet = false; for (int i = 0; i < HideBuffs.Count; i++) { sdBuff buff = HideBuffs[i]; if (buff.GetTemplateID() == id) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); HideBuffs.RemoveAt(i); bRet = true; } } bool buffchanged = false; for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; if (buff.GetTemplateID() == id) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); buffs.RemoveAt(i); buffchanged = true; bRet = true; } } if (buffchanged) { BuffChange(buffs); } return(bRet); }
// Update is called once per frame void Update() { if (actor != null) { foreach (DictionaryEntry e in actor.Property) { sdConfDataMgr.SetMemberValue(this, e.Key as string, e.Value); } } { List <sdBuff> lstBuff = actor.GetBuffs(); if (lstBuff.Count > 0) { Hashtable table = (Hashtable)sdConfDataMgr.Instance().GetTable("buff"); if (buff == null) { buff = new string[lstBuff.Count]; } if (buff.Length != lstBuff.Count) { buff = new string[lstBuff.Count]; } for (int i = 0; i < lstBuff.Count; i++) { sdBuff sbuff = lstBuff[i]; int id = sbuff.GetTemplateID(); Hashtable prop = table[id.ToString()] as Hashtable; buff[i] = id.ToString() + "_" + prop["szName[ROLE_NAME_LEN]"] as string + "_" + prop["szDescription[DESCRIPTION_LEN]"] as string; } } else { buff = null; } } STAY = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_STAY); HOLD = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_HOLD); STUN = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_STUN); LIMIT_SKILL = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_LIMIT_SKILL); UNBEAT = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_UNBEAT); KNOCKBACK = actor.CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_KNOCKBACK); }
public void SetBuffId(sdBuff buff) { if (buff == null) { gameObject.GetComponent <UISprite>().spriteName = ""; if (icon != null) { icon.GetComponent <UISprite>().spriteName = ""; } lastTime = -1; if (mask != null) { mask.GetComponent <UISprite>().fillAmount = 0; } return; } gameObject.GetComponent <UISprite>().spriteName = "FightingSystem_Img_Buff"; buffid = buff.GetTemplateID(); Hashtable buffTable = sdConfDataMgr.Instance().GetTable("buff"); Hashtable item = buffTable[buffid.ToString()] as Hashtable; if (item != null) { if (icon != null) { icon.GetComponent <UISprite>().spriteName = item["icon"].ToString(); if (sdConfDataMgr.Instance().BuffAtlas != null) { icon.GetComponent <UISprite>().atlas = sdConfDataMgr.Instance().BuffAtlas; } else if (!isLoadAtlas) { LoadBuffIcon(); isLoadAtlas = true; } } lastTime = float.Parse(item["nTotalTime"].ToString()) / 1000 - buff.GetLifeTime(); if (mask != null) { mask.GetComponent <UISprite>().fillAmount = lastTime / (float.Parse(item["nTotalTime"].ToString()) / 1000); } } }
public virtual bool RemoveAllBuff() { bool bRet = false; for (int index = 0; index < HideBuffs.Count;) { sdBuff buff = HideBuffs[index]; buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); HideBuffs.RemoveAt(index); bRet = true; } for (int index = 0; index < buffs.Count;) { sdBuff buff = buffs[index]; buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); buffs.RemoveAt(index); bRet = true; } return(bRet); }
sdBuff FindBuff(int id) { sdBuff buff = null; for (int i = 0; i < buffs.Count; i++) { buff = buffs[i]; if (buff.GetTemplateID() == id) { return(buff); } } for (int i = 0; i < HideBuffs.Count; i++) { buff = HideBuffs[i]; if (buff.GetTemplateID() == id) { return(buff); } } return(null); }
sdBuff FindBuffByClass(int classID) { sdBuff buff = null; for (int i = 0; i < buffs.Count; i++) { buff = buffs[i]; if (buff.GetClassID() == classID) { return(buff); } } for (int i = 0; i < HideBuffs.Count; i++) { buff = HideBuffs[i]; if (buff.GetClassID() == classID) { return(buff); } } return(null); }
sdBuff FindBuffBySwapFlag(int dwSwapFlag) { sdBuff buff = null; for (int i = 0; i < buffs.Count; i++) { buff = buffs[i]; if (buff.GetSwapFlag() == dwSwapFlag) { return(buff); } } for (int i = 0; i < HideBuffs.Count; i++) { buff = HideBuffs[i]; if (buff.GetSwapFlag() == dwSwapFlag) { return(buff); } } return(null); }
public virtual bool RemoveBuffbyProperty(int property) { bool bRet = false; for (int index = 0; index < HideBuffs.Count;) { sdBuff buff = HideBuffs[index]; if (buff.GetIntProperty() == property) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); HideBuffs.RemoveAt(index); bRet = true; continue; } else { ++index; } } for (int index = 0; index < buffs.Count;) { sdBuff buff = buffs[index]; if (buff.GetIntProperty() == property) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); buffs.RemoveAt(index); bRet = true; continue; } else { ++index; } } return(bRet); }
public virtual bool RemoveBuffbySubType(int subclasstype) { bool bRet = false; for (int index = 0; index < HideBuffs.Count;) { sdBuff buff = HideBuffs[index]; if (buff.GetSubClass() == subclasstype) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); HideBuffs.RemoveAt(index); bRet = true; continue; } else { ++index; } } for (int index = 0; index < buffs.Count;) { sdBuff buff = buffs[index]; if (buff.GetSubClass() == subclasstype) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_DEAD); buffs.RemoveAt(index); bRet = true; continue; } else { ++index; } } return(bRet); }
bool CheckBuffReplace(int id, Hashtable buffinfo, sdActorInterface castActor) { int isShare = (int)buffinfo["IsShare"]; if (isShare != 0) { sdBuff buff = FindBuffByCastActor(id, castActor);//FindBuff(id); if (buff == null) { return(true); } else { int isRefresh = (int)buffinfo["IsRefresh"]; if (isRefresh != 0) { buff.Refresh(); return(false); } else { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); return(true); } } } else { int classID = (int)buffinfo["dwClassID"]; sdBuff buff = FindBuffByClass(classID); if (buff != null) { int newLevel = (int)buffinfo["byLevel"]; int oldLevel = buff.GetLevel(); if (newLevel > oldLevel) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); return(true); } else if (newLevel < oldLevel) { return(false); } else { int isRefresh = (int)buffinfo["IsRefresh"]; if (isRefresh != 0) { buff.Refresh(); return(false); } else { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); return(true); } } } else { int dwSwapFlag = (int)buffinfo["dwSwapFlag"]; buff = FindBuffBySwapFlag(dwSwapFlag); if (buff != null) { if (buff.IsShare() != 0) { return(true); } else { int IsSwap = (int)buffinfo["IsSwap"]; if (IsSwap != 0) { int newLevel = (int)buffinfo["byLevel"]; int oldLevel = buff.GetLevel(); if (newLevel > oldLevel) { buff.Stop(HeaderProto.EBuffEndType.BUFF_END_HAND); return(true); } else { return(false); } } else { return(false); } } } else { return(true); } } } return(false); }
//用于做触发效果. public void OnBuffBorn(sdBuff buff) { }
public bool CheckBuff(int type, int data) { //sdBuff[] allbuff = null;//m_BuffSys. if (type == (int)HeaderProto.ECheckBuffType.CHECK_BUFF_NONE) { return(true); } switch (type) { case (int)HeaderProto.ECheckBuffType.CHECK_BUFF_CLASS: { for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; if ((int)buff.GetProperty()["byClass"] == data) { return(true); } } } break; case (int)HeaderProto.ECheckBuffType.CHECK_BUFF_SUB_CLASS: { for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; int iClass = data / 10000; int iSubClass = data % 10000; if ((int)buff.GetProperty()["bySubClass"] == iSubClass && (int)buff.GetProperty()["byClass"] == iClass ) { return(true); } } } break; case (int)HeaderProto.ECheckBuffType.CHECK_BUFF_CLASS_ID: { for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; if ((int)buff.GetProperty()["dwClassID"] == data) { return(true); } } } break; case (int)HeaderProto.ECheckBuffType.CHECK_BUFF_TEMPLATE_ID: { for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; if (buff.GetTemplateID() == data) { return(true); } } } break; case (int)HeaderProto.ECheckBuffType.CHECK_BUFF_DAMAGE_PRO: { for (int i = 0; i < buffs.Count; i++) { sdBuff buff = buffs[i]; if ((int)buff.GetProperty()["byProperty"] == data) { return(true); } } } break; } return(false); }
public virtual bool AddBuff(int templateId, int life, sdActorInterface casterActor) { if (GetCurrentHP() <= 0) { return(false); } Hashtable buffInfoTable = sdConfDataMgr.Instance().GetTable("buff"); Hashtable buffinfo = buffInfoTable[templateId.ToString()] as Hashtable; if (buffinfo == null) { return(false); } //闪避状态 抵挡任何减益 buff if ((int)buffinfo["IsDebuff"] == 1) { if (CheckDebuffState(HeaderProto.ECreatureActionState.CREATURE_ACTION_STATE_UNBEAT)) { return(false); } } //Buff 替换规则.. if (!CheckBuffReplace(templateId, buffinfo, casterActor)) { int iHide = (int)buffinfo["IsHide"]; if (iHide != 1) { BuffChange(buffs); } return(false); } //免疫.. if (CheckImmunity(buffinfo)) { return(false); } //无敌判断 .. //todo //尝试添加buff层数 如果成功则已经存在同样的buff 直接更新层数即可 ... if (AddBuffLayer(templateId, buffinfo, casterActor)) { return(true); } //添加一个新的buff.. sdBuff buff = new sdBuff(); buff.SetCaster(casterActor); buff.SetTemplateId(templateId); buff.SetActor(this); if (buff.IsHide()) { HideBuffs.Add(buff); } else { buffs.Add(buff); BuffChange(buffs); } buff.Start(); return(true); }