Example #1
0
        private void AddSkillBuffToUnit(Soldier s)
        {
            if (s == null || !s.Alive())
            {
                return;
            }

            List <AttributeEffect> attributeEffects = new List <AttributeEffect>();

            for (int i = 0; i < base.attributeEffects.Count; i++)
            {
                int buffId = base.attributeEffects[i];

                AttributeEffect ae = GenerateAttributeEffect(buffId);

                // Notice skill the buff has been detached for some reason, maybe the unit has been dead
                ae.RegisterNoticeGiverDestroyMethod((b) =>
                {
                    if (attributeEffectOwnerDic.ContainsKey(b.taker.id))
                    {
                        attributeEffectOwnerDic[b.taker.id].Remove(b);
                        if (attributeEffectOwnerDic[b.taker.id].Count == 0)
                        {
                            attributeEffectOwnerDic.Remove(b.taker.id);
                        }
                    }
                });

                ae.Attach(owner, s);

                attributeEffects.Add(ae);
            }

            attributeEffectOwnerDic.Add(s.id, attributeEffects);
        }
Example #2
0
        //When town create new solider use this.
        public void AddSoliderInEffectedSoldier(Soldier solider)
        {
            for (int i = 0; i < usedInstituteSkills.Count; i++)
            {
                List <int> buffsID;

                buffsID = GetBuffsID(usedInstituteSkills[i].BuffsID.Split('|'));

                AttributeEffect buff = GenerateAttributeEffect(buffsID[0]);
                buff.Attach(this, solider);
                buff.RegisterNoticeGiverDestroyMethod(SoldierDieRemoveBuff);
                playerSkillBuffs.Add(buff);

                AttributeEffect debuff = GenerateAttributeEffect(buffsID[1]);
                debuff.Attach(this, solider);
                debuff.RegisterNoticeGiverDestroyMethod(SoldierDieRemoveDebuff);
                playerSkillDeBuffs.Add(debuff);
            }

            effectedSoldier.Add(solider);
        }