示例#1
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <SwordmanE1> (own, targets, t => {
         t.gainPoint = gainPoint;
     });
     return(true);
 }
示例#2
0
文件: Potion.cs 项目: khiemnd777/Mob
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <Potion> (own, targets, x => {
         x.extraHp = extraHp;
     });
     return(true);
 }
 public override void Execute()
 {
     own.GetModule <AffectModule>((a) => {
         a.RemoveAffect(m => typeof(INegativeAffect).IsAssignableFrom(m.GetType()));
     });
     Affect.CreatePrimitiveAndUse <HealthPowerRestoring> (own, new[] { own }, hp => hp.extraHp = extraHp);
 }
示例#4
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <BurnAffect> (own, targets, x => {
         x.subtractHp = subtractHp;
         x.turnNumber = turnNumber;
     });
     return(true);
 }
示例#5
0
 public void HandleAttack(Race target)
 {
     OnSetTimeout(() => {
         Affect.CreatePrimitiveAndUse <StunAffect> (own, new Race[] { target }, x => {
             x.turnNumber = 1;
         });
     }, 3f);
 }
示例#6
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <StunAffectAndDamageDealing> (own, targets, x => {
         x.turnNumber = turnNumber;
         x.damage     = damage;
     });
     return(true);
 }
示例#7
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <SwordmanD1> (own, targets, t => {
         t.gainPoint    = gainPoint;
         t.storedEnergy = Mathf.Max(1f, own.GetModule <EnergyModule> ().energy);
     });
     return(true);
 }
示例#8
0
 public void HandleAttack(Race target)
 {
     OnSetTimeout(() => {
         Affect.CreatePrimitiveAndUse <BurnAffect> (own, new Race[] { target }, x => {
             x.subtractHp = 6f;
             x.turnNumber = 3;
         });
     }, 3f);
 }
示例#9
0
 public override bool Use(Race[] targets)
 {
     if (Affect.HasAffect <SwordmanB3> (own))
     {
         return(false);
     }
     Affect.CreatePrimitiveAndUse <SwordmanB3> (own, targets);
     return(true);
 }
示例#10
0
        public override bool Use(Race[] targets)
        {
            if (Affect.HasAffect <Artifact1> (own))
            {
                return(false);
            }

            Affect.CreatePrimitiveAndUse <Artifact2> (own, targets);
            return(true);
        }
示例#11
0
文件: Sword.cs 项目: khiemnd777/Mob
        public override bool Use(Race[] targets)
        {
            if (Affect.HasAffect <Sword> (own))
            {
                return(false);
            }

            Affect.CreatePrimitiveAndUse <Sword> (own, targets);
            upgradePrice *= 1.2f;
            return(true);
        }
示例#12
0
文件: Race.cs 项目: khiemnd777/Mob
 public virtual void StartTurn()
 {
     _isTurn    = true;
     _isEndTurn = false;
     _turnNumber++;
     GetModule <StatModule> (s => {
         GetModule <HealthPowerModule>(hp => {
             Affect.CreatePrimitiveAndUse <HealthPowerRestoring> (this, new Race[] { this }, hpr => hpr.extraHp = s.regenerateHp * hp.hp);
         });
     });
 }
示例#13
0
        public override bool Use(Race[] targets)
        {
            Affect.CreatePrimitiveAndUse <SwordmanA1> (own, targets, t => {
                t.gainPoint = gainPoint;

                if (usedNumber == 9)
                {
                    own.GetModule <SkillModule> (s => {
                        s.Add <SwordmanA2Skill> (1);
                    });
                    SetVisible(false);
                }
            });
            return(true);
        }
示例#14
0
 void Update()
 {
     foreach (var target in targets)
     {
         ExecuteInTurn(target, () => {
             if (turn <= turnNumber)
             {
                 Affect.CreatePrimitiveAndUse <DamageDealing>(own, new Race[] { target }, d => d.damage = damage);
                 target.AllowAttack(false);
             }
             else
             {
                 target.AllowAttack(true);
                 Destroy(gameObject);
             }
         });
     }
 }
示例#15
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <StatDamageAdding> (own, targets, d => d.extraDamage = extraDamage);
     return(true);
 }
示例#16
0
文件: Potion.cs 项目: khiemnd777/Mob
 public override void Execute()
 {
     Affect.CreatePrimitiveAndUse <HealthPowerRestoring> (own, targets, hp => hp.extraHp = extraHp);
 }
示例#17
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <GoldAdding> (own, targets, g => g.extraGold = extraGold);
     return(true);
 }
示例#18
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <AddVitalityPoint> (own, targets, x => x.point = point);
     return(true);
 }
示例#19
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <Antidote> (own, targets);
     return(true);
 }
示例#20
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <StunAffect> (own, targets, x => x.turnNumber = turnNumber);
     return(true);
 }
示例#21
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <BurstStrength> (own, targets);
     return(true);
 }
示例#22
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <EnergyAdding> (own, targets, e => e.extraEnergy = extraEnergy);
     return(true);
 }
示例#23
0
        public static void OccurAffectChange(Race own, Race target)
        {
            var occurs           = new Dictionary <Type, float> ();
            var defineAffects    = new Dictionary <Type, DefineAffectArgs> ();
            var addAffectHandler = new Action <Affect, Type>((affect, t) => {
                var method = affect.GetType().GetMethod("AdditionalAffectChange"
                                                        , BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic
                                                        , null
                                                        , CallingConventions.Any
                                                        , new Type[] { t, target.GetType() }
                                                        , null);
                var useDefine = affect.GetType().GetMethod("UseDefineAffect"
                                                           , BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic
                                                           , null
                                                           , CallingConventions.Any
                                                           , new Type[] { t }
                                                           , null);
                if (method != null)
                {
                    var value           = method.Invoke(affect, new object[] { null, target });
                    var useDefineAffect = (bool)useDefine.Invoke(affect, new object[] { null });
                    if (value != null)
                    {
                        if (occurs.ContainsKey(t))
                        {
                            occurs[t] += (float)value;
                        }
                        else
                        {
                            occurs.Add(t, (float)value);
                        }
                    }
                    if (useDefineAffect && !defineAffects.ContainsKey(t))
                    {
                        var methodDefineAffect = affect.GetType().GetMethod("DefineAffect"
                                                                            , BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic
                                                                            , null
                                                                            , CallingConventions.Any
                                                                            , new Type[] { t }
                                                                            , null);
                        defineAffects.Add(t, new DefineAffectArgs {
                            affect             = affect,
                            methodDefineAffect = methodDefineAffect
                        });
                    }
                }
            });

            own.GetModule <AffectModule> (am => {
                foreach (var affect in am.affects)
                {
                    var interfaceTypes = affect.GetType().GetInterfaces();
                    foreach (var interfaceType in interfaceTypes)
                    {
                        if (interfaceType.IsGenericType && interfaceType.GetGenericTypeDefinition() == typeof(IAdditionalAffectChange <>))
                        {
                            var t = interfaceType.GetGenericArguments();
                            if (t.Length == 0)
                            {
                                continue;
                            }
                            var tt = t[0];
                            addAffectHandler(affect, tt);
                        }
                    }
                }
            });
            foreach (var occur in occurs)
            {
                var percent     = Mathf.Min(occur.Value * 100f, 100f);
                var probability = Probability.Initialize(new bool[] { false, true }, new float[] {
                    100f - percent,
                    percent
                });
                var result = Probability.GetValueInProbability(probability);
                if (!result)
                {
                    continue;
                }
                Affect.CreatePrimitiveAndUse(occur.Key, own, new Race[] { target }, af => {
                    foreach (var defineAffect in defineAffects.Where(d => d.Key == occur.Key))
                    {
                        var affect = defineAffect.Value.affect;
                        var method = defineAffect.Value.methodDefineAffect;
                        method.Invoke(affect, new object[] { af });
                    }
                });
            }
        }
示例#24
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <StatTechniqueAdding> (own, targets, x => x.extraTechnique = extraTechnique);
     return(true);
 }
示例#25
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <HeartOfHestia> (own, targets);
     return(true);
 }
示例#26
0
 public void AssignAttackableAffect(Race target)
 {
     Affect.CreatePrimitiveAndUse <BurnAffect> (own, new Race[] { target }, b => {
         b.subtractHp = 10f;
     });
 }
示例#27
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <NegativeAffectDissolving> (own, targets);
     return(true);
 }
示例#28
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <AddDefendChance> (own, targets, x => x.chance = chance);
     return(true);
 }
示例#29
0
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <BlessingOfAmphitrite> (own, targets);
     return(true);
 }
 public override bool Use(Race[] targets)
 {
     Affect.CreatePrimitiveAndUse <NegativeAffectDissolvingAndHealthPowerRestoring> (own, targets, n => n.extraHp = extraHp);
     return(true);
 }