Exemplo n.º 1
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> targets, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref targets, ref effectState))
            {
                return(false);
            }

            if (targets == null)
            {
                return(false);
            }

            targets = targets
                      .OfType <Pawn>()
                      .Where(i => i.MaxHitPoints > 0)
                      .Where(i => i.health.summaryHealth.SummaryHealthPercent < this.healthTrashHold)
                      .Cast <Thing>()
                      .ToList();

            if (targets.Any())
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 2
0
        public IEnumerable <Thing> Filter(AbilityDef ability, Saveable_Caster pawn)
        {
            foreach (Thing thing in this.optionalSource.Targets(ability, pawn))
            {
                Pawn thingPawn = thing as Pawn;
                if (thingPawn != null)
                {
                    if (thingPawn.Faction == pawn.pawn.Faction)
                    {
                        yield return(thing);
                    }
                    continue;
                }

                Corpse corpsePawn = thing as Corpse;
                if (corpsePawn != null)
                {
                    if (corpsePawn.innerPawn.Faction == pawn.pawn.Faction)
                    {
                        yield return(thing);
                    }
                    continue;
                }
            }
        }
Exemplo n.º 3
0
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.optionalSource == null)
         return GenAI.PawnTargetsFor(pawn.pawn.Faction).Cast<Thing>();
     else
         return this.Filter(ability, pawn);
 }
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     Brain brain = pawn.pawn.GetSquadBrain();
     if (brain == null)
         return AbilityTarget_ThingInCategory.emptyThings;
     return brain.ownedPawns.OfType<Thing>();
 }
Exemplo n.º 5
0
        public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
        {
            foreach (Thing thing in this.target.Targets(ability, pawn))
            {
                Pawn thingPawn = thing as Pawn;
                if (thingPawn != null)
                {
                    if (this.races.Contains(thingPawn.def))
                    {
                        yield return(thing);
                    }
                    continue;
                }

                Corpse corpsePawn = thing as Corpse;
                if (corpsePawn != null)
                {
                    if (this.races.Contains(corpsePawn.innerPawn.def))
                    {
                        yield return(thing);
                    }
                    continue;
                }
            }
        }
Exemplo n.º 6
0
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.optionalSource == null)
         return Find.ListerPawns.PawnsInFaction(pawn.pawn.Faction).OfType<Thing>();
     else
         return this.Filter(ability, pawn);
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.target == null)
         return ability.target.Targets(ability, pawn).Any();
     else
         return this.target.Targets(ability, pawn).Any();
 }
Exemplo n.º 8
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List<Thing> targets, ref IExposable effectState)
        {
            AbilityEffect_RandomState state = new AbilityEffect_RandomState();
            state.item = Rand.Range(0, this.items.Count);
            effectState = state;

            return this.items[state.item].TryStart(ability, caster, ref targets, ref state.effectState);
        }
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     IEnumerable<Thing> things = Find.ListerThings.ThingsMatching(new ThingRequest() { group = this.group });
     if (things == null)
         return AbilityTarget_ThingInCategory.emptyThings;
     else
         return things;
 }
Exemplo n.º 10
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.items == null)
         return false;
     foreach (AbilityRequeriment requeriment in this.items)
         if (requeriment.Sucess(ability, pawn))
             return true;
     return false;
 }
Exemplo n.º 11
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> targets, ref IExposable effectState)
        {
            AbilityEffect_RandomState state = new AbilityEffect_RandomState();

            state.item  = Rand.Range(0, this.items.Count);
            effectState = state;

            return(this.items[state.item].TryStart(ability, caster, ref targets, ref state.effectState));
        }
Exemplo n.º 12
0
        public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
        {
            Brain brain = pawn.pawn.GetSquadBrain();

            if (brain == null)
            {
                return(AbilityTarget_ThingInCategory.emptyThings);
            }
            return(brain.ownedPawns.OfType <Thing>());
        }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     Saveable_ExecutionLog log = pawn.GetLog(ability);
     int ticks = this.initial + log.numberOfExecution * this.between;
     if (this.minimum > 0)
         ticks = Math.Max(this.minimum, ticks);
     if (this.maximum > 0)
         ticks = Math.Min(this.maximum, ticks);
     return log.ticksSinceExecution >= ticks;
 }
Exemplo n.º 14
0
 public void NotifyCompleted(bool sucess)
 {
     foreach (Saveable_Mote mote in this.currentMotes)
     {
         mote.Completed(this, sucess, i => this.currentMotes.Remove(i));
     }
     this.currentAbility = null;
     this.currentTargets = null;
     this.effectState    = null;
 }
Exemplo n.º 15
0
        public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster saveablePawn)
        {
            float maximumSquared = this.maximumRange * this.maximumRange;
            float minimumSquared = this.minimumRange * this.minimumRange;

            if (closestFirst)
            {
                List <KeyValuePair <float, Thing> > ranges = new List <KeyValuePair <float, Thing> >();

                foreach (Thing thing in this.target.Targets(ability, saveablePawn))
                {
                    float lengthHorizontalSquared = (saveablePawn.pawn.Position - thing.Position).LengthHorizontalSquared;

                    if ((maximumSquared > 0) &&
                        (maximumSquared < lengthHorizontalSquared))
                    {
                        continue;
                    }

                    if ((minimumSquared > 0) &&
                        (minimumSquared > lengthHorizontalSquared))
                    {
                        continue;
                    }

                    ranges.Add(new KeyValuePair <float, Thing>(lengthHorizontalSquared, thing));
                }
                ranges.Sort((x, y) => x.Key.CompareTo(y.Key));
                foreach (KeyValuePair <float, Thing> t in ranges)
                {
                    yield return(t.Value);
                }
            }
            else
            {
                foreach (Thing thing in this.target.Targets(ability, saveablePawn))
                {
                    float lengthHorizontalSquared = (saveablePawn.pawn.Position - thing.Position).LengthHorizontalSquared;

                    if ((maximumSquared > 0) &&
                        (maximumSquared < lengthHorizontalSquared))
                    {
                        continue;
                    }

                    if ((minimumSquared > 0) &&
                        (minimumSquared > lengthHorizontalSquared))
                    {
                        continue;
                    }

                    yield return(thing);
                }
            }
        }
Exemplo n.º 16
0
 public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.optionalSource == null)
     {
         return(Find.ListerPawns.PawnsInFaction(pawn.pawn.Faction).OfType <Thing>());
     }
     else
     {
         return(this.Filter(ability, pawn));
     }
 }
Exemplo n.º 17
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.target == null)
     {
         return(ability.target.Targets(ability, pawn).Any());
     }
     else
     {
         return(this.target.Targets(ability, pawn).Any());
     }
 }
Exemplo n.º 18
0
 public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.optionalSource == null)
     {
         return(GenAI.PawnTargetsFor(pawn.pawn.Faction).Cast <Thing>());
     }
     else
     {
         return(this.Filter(ability, pawn));
     }
 }
Exemplo n.º 19
0
        public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
        {
            Brain squad = pawn.pawn.GetSquadBrain();

            if (squad == null)
            {
                return(true);
            }
            else
            {
                return(squad.ownedPawns.Sum(i => i.kindDef.combatPower) * this.squadPowerMultiplier < AbilityRequeriment_ColonyBiggerThan.ColonySize());
            }
        }
Exemplo n.º 20
0
        public Saveable_ExecutionLog GetLog(AbilityDef ability)
        {
            foreach (Saveable_ExecutionLog l in this.executionLogs)
            {
                if (l.ability == ability)
                    return l;
            }

            Saveable_ExecutionLog newLog = new Saveable_ExecutionLog();
            newLog.ability = ability;
            this.executionLogs.Add(newLog);
            return newLog;
        }
Exemplo n.º 21
0
        private bool TryStartNextAbility(Saveable_Caster value, out AbilityDef ability, out List <Thing> targets, out IExposable effectState)
        {
            List <KeyValuePair <int, AbilityDef> > priorities = new List <KeyValuePair <int, AbilityDef> >();

            foreach (Saveable_ExecutionLog log in value.executionLogs)
            {
                if ((!log.ability.races.Contains(value.pawn.def)) ||
                    (log.ability.validity == null) ||
                    (!log.ability.validity.Sucess(log.ability, value)))
                {
                    log.isValid = false;
                    continue;
                }

                log.isValid = true;

                if ((log.ability.requeriment != null) &&
                    (!log.ability.requeriment.Sucess(log.ability, value)))
                {
                    continue;
                }

                priorities.Add(new KeyValuePair <int, AbilityDef>(log.ability.priority.GetPriority(log.ability, value.pawn), log.ability));
            }

            if (priorities.Any())
            {
                priorities.Sort((x, y) => y.Key.CompareTo(x.Key));

                foreach (KeyValuePair <int, AbilityDef> itm in priorities)
                {
                    effectState = null;
                    targets     = null;
                    if (itm.Value.target != null)
                    {
                        targets = itm.Value.target.Targets(itm.Value, value).ToList();
                    }

                    if (itm.Value.effect.TryStart(itm.Value, value, ref targets, ref effectState))
                    {
                        ability = itm.Value;
                        return(true);
                    }
                }
            }

            ability     = null;
            effectState = null;
            targets     = null;
            return(false);
        }
Exemplo n.º 22
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List<Thing> target, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref target, ref effectState))
                return false;

            if ((target == null) ||
                (this.items == null) ||
                (!this.items.Any()))
                return false;

            target = target.OfType<Pawn>().Where(i => this.items.SelectMany(j => j.from).Contains(i.def)).OfType<Thing>().ToList();

            return target.Any();
        }
Exemplo n.º 23
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     if (this.items == null)
     {
         return(false);
     }
     foreach (AbilityRequeriment requeriment in this.items)
     {
         if (!requeriment.Sucess(ability, pawn))
         {
             return(false);
         }
     }
     return(true);
 }
        public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
        {
            Saveable_ExecutionLog log = pawn.GetLog(ability);
            int ticks = this.initial + log.numberOfExecution * this.between;

            if (this.minimum > 0)
            {
                ticks = Math.Max(this.minimum, ticks);
            }
            if (this.maximum > 0)
            {
                ticks = Math.Min(this.maximum, ticks);
            }
            return(log.ticksSinceExecution >= ticks);
        }
Exemplo n.º 25
0
        public Saveable_ExecutionLog GetLog(AbilityDef ability)
        {
            foreach (Saveable_ExecutionLog l in this.executionLogs)
            {
                if (l.ability == ability)
                {
                    return(l);
                }
            }

            Saveable_ExecutionLog newLog = new Saveable_ExecutionLog();

            newLog.ability = ability;
            this.executionLogs.Add(newLog);
            return(newLog);
        }
        public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
        {
            IEnumerable <Thing> things = Find.ListerThings.ThingsMatching(new ThingRequest()
            {
                group = this.group
            });

            if (things == null)
            {
                return(AbilityTarget_ThingInCategory.emptyThings);
            }
            else
            {
                return(things);
            }
        }
Exemplo n.º 27
0
        public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster saveablePawn)
        {
            float maximumSquared = this.maximumRange * this.maximumRange;
            float minimumSquared = this.minimumRange * this.minimumRange;

            if (closestFirst)
            {
                List<KeyValuePair<float, Thing>> ranges = new List<KeyValuePair<float, Thing>>();

                foreach (Thing thing in this.target.Targets(ability, saveablePawn))
                {
                    float lengthHorizontalSquared = (saveablePawn.pawn.Position - thing.Position).LengthHorizontalSquared;

                    if ((maximumSquared > 0) &&
                        (maximumSquared < lengthHorizontalSquared))
                        continue;

                    if ((minimumSquared > 0) &&
                        (minimumSquared > lengthHorizontalSquared))
                        continue;

                    ranges.Add(new KeyValuePair<float, Thing>(lengthHorizontalSquared, thing));
                }
                ranges.Sort((x, y) => x.Key.CompareTo(y.Key));
                foreach (KeyValuePair<float, Thing> t in ranges)
                    yield return t.Value;
            }
            else
            {
                foreach (Thing thing in this.target.Targets(ability, saveablePawn))
                {
                    float lengthHorizontalSquared = (saveablePawn.pawn.Position - thing.Position).LengthHorizontalSquared;

                    if ((maximumSquared > 0) &&
                        (maximumSquared < lengthHorizontalSquared))
                        continue;

                    if ((minimumSquared > 0) &&
                        (minimumSquared > lengthHorizontalSquared))
                        continue;

                    yield return thing;
                }
            }
        }
Exemplo n.º 28
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> target, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref target, ref effectState))
            {
                return(false);
            }

            if ((target == null) ||
                (this.items == null) ||
                (!this.items.Any()))
            {
                return(false);
            }

            target = target.OfType <Pawn>().Where(i => this.items.SelectMany(j => j.from).Contains(i.def)).OfType <Thing>().ToList();

            return(target.Any());
        }
Exemplo n.º 29
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List<Thing> targets, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref targets, ref effectState))
                return false;

            if (targets == null)
                return false;

            targets = targets
                .OfType<Pawn>()
                .Where(i => i.MaxHitPoints > 0)
                .Where(i => i.health.summaryHealth.SummaryHealthPercent < this.healthTrashHold)
                .Cast<Thing>()
                .ToList();

            if (targets.Any())
                return true;
            else
                return false;
        }
Exemplo n.º 30
0
        public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
        {
            foreach (Thing thing in this.target.Targets(ability, pawn))
            {
                Pawn thingPawn = thing as Pawn;
                if (thingPawn != null)
                {
                    if (this.races.Contains(thingPawn.def))
                        yield return thing;
                    continue;
                }

                Corpse corpsePawn = thing as Corpse;
                if (corpsePawn != null)
                {
                    if (this.races.Contains(corpsePawn.innerPawn.def))
                        yield return thing;
                    continue;
                }
            }
        }
Exemplo n.º 31
0
        public IEnumerable<Thing> Filter(AbilityDef ability, Saveable_Caster pawn)
        {
            foreach (Thing thing in this.optionalSource.Targets(ability, pawn))
            {
                Pawn thingPawn = thing as Pawn;
                if (thingPawn != null)
                {
                    if (thingPawn.Faction == pawn.pawn.Faction)
                        yield return thing;
                    continue;
                }

                Corpse corpsePawn = thing as Corpse;
                if (corpsePawn != null)
                {
                    if (corpsePawn.innerPawn.Faction == pawn.pawn.Faction)
                        yield return thing;
                    continue;
                }
            }
        }
        public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
        {
            Brain brain = pawn.pawn.GetSquadBrain();
            if (brain == null)
                return false;

            MapComponent_Ability mapComponent = MapComponent_Ability.GetOrCreate();

            foreach (Pawn p in brain.ownedPawns)
            {
                if (p.def.defName == "Ant_Queen")
                    return false;

                Saveable_Caster save;
                if (mapComponent.TryGetPawnHability(p, out save))
                {
                    if ((save.currentAbility != null) &&
                        (save.currentAbility.defName == "AlienEvolveToPrincessAbility"))
                        return false;
                }
            }

            return true;
        }
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> targets, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref targets, ref effectState))
            {
                return(false);
            }

            if (targets == null)
            {
                return(false);
            }

            List <Thing> corpses = AbilityEffect_Revive.SelectCorpses(targets);

            if (corpses.Any())
            {
                targets = corpses;
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 34
0
 public abstract int GetPriority(AbilityDef ability, Pawn pawn);
Exemplo n.º 35
0
        public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List<Thing> targets, ref IExposable effectState)
        {
            if (!base.TryStart(ability, caster, ref targets, ref effectState))
                return false;

            if (targets == null)
                return false;

            List<Thing> corpses = AbilityEffect_Revive.SelectCorpses(targets);

            if (corpses.Any())
            {
                targets = corpses;
                return true;
            }
            else
                return false;
        }
Exemplo n.º 36
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(pawn.manaValue >= this.value);
 }
Exemplo n.º 37
0
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     return this.targets.SelectMany(i => i.Targets(ability, pawn));
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return pawn.GetLog(ability).numberOfExecution < this.limit;
 }
Exemplo n.º 39
0
 public override int GetPriority(AbilityDef ability, Pawn pawn)
 {
     return(this.value);
 }
Exemplo n.º 40
0
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     yield return pawn.pawn;
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return AbilityRequeriment_ColonyBiggerThan.ColonySize() >= this.value;
 }
Exemplo n.º 42
0
 public abstract int GetPriority(AbilityDef ability, Pawn pawn);
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return pawn.GetLog(ability).ticksSinceExecution >= this.value;
 }
Exemplo n.º 44
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(AbilityRequeriment_ColonyBiggerThan.ColonySize() >= this.value);
 }
Exemplo n.º 45
0
        private bool TryStartNextAbility(Saveable_Caster value, out AbilityDef ability, out List<Thing> targets, out IExposable effectState)
        {
            List<KeyValuePair<int, AbilityDef>> priorities = new List<KeyValuePair<int, AbilityDef>>();
            foreach (Saveable_ExecutionLog log in value.executionLogs)
            {
                if ((!log.ability.races.Contains(value.pawn.def)) ||
                    (log.ability.validity == null) ||
                    (!log.ability.validity.Sucess(log.ability, value)))
                {
                    log.isValid = false;
                    continue;
                }

                log.isValid = true;

                if ((log.ability.requeriment != null) &&
                    (!log.ability.requeriment.Sucess(log.ability, value)))
                    continue;

                priorities.Add(new KeyValuePair<int, AbilityDef>(log.ability.priority.GetPriority(log.ability, value.pawn), log.ability));
            }

            if (priorities.Any())
            {
                priorities.Sort((x, y) => y.Key.CompareTo(x.Key));

                foreach (KeyValuePair<int, AbilityDef> itm in priorities)
                {
                    effectState = null;
                    targets = null;
                    if (itm.Value.target != null)
                        targets = itm.Value.target.Targets(itm.Value, value).ToList();

                    if (itm.Value.effect.TryStart(itm.Value, value, ref targets, ref effectState))
                    {
                        ability = itm.Value;
                        return true;
                    }
                }
            }

            ability = null;
            effectState = null;
            targets = null;
            return false;
        }
Exemplo n.º 46
0
 public abstract IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn);
Exemplo n.º 47
0
 public override bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> target, ref IExposable effectState)
 {
     return(caster.manaValue >= this.manaCost);
 }
Exemplo n.º 48
0
 public abstract bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List <Thing> targets, ref IExposable effectState);
Exemplo n.º 49
0
 public override int GetPriority(AbilityDef ability, Pawn pawn)
 {
     return this.value;
 }
Exemplo n.º 50
0
 public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     return(this.targets.SelectMany(i => i.Targets(ability, pawn)));
 }
Exemplo n.º 51
0
 public abstract bool Sucess(AbilityDef ability, Saveable_Caster pawn);
Exemplo n.º 52
0
 public override IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     yield return(pawn.pawn);
 }
Exemplo n.º 53
0
 public abstract bool TryStart(AbilityDef ability, Saveable_Caster caster, ref List<Thing> targets, ref IExposable effectState);
Exemplo n.º 54
0
 public void NotifyCompleted(bool sucess)
 {
     foreach (Saveable_Mote mote in this.currentMotes)
         mote.Completed(this, sucess, i => this.currentMotes.Remove(i));
     this.currentAbility = null;
     this.currentTargets = null;
     this.effectState = null;
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(Rand.Range(0, this.total) < MapComponent_Ability.longTickOffet * this.accepts);
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return pawn.manaValue <= this.value;
 }
Exemplo n.º 57
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(pawn.GetLog(ability).numberOfExecution < this.limit);
 }
Exemplo n.º 58
0
 public override IEnumerable<Thing> Targets(AbilityDef ability, Saveable_Caster pawn)
 {
     return this.target.Targets(ability, pawn).Take(this.count);
 }
Exemplo n.º 59
0
 public abstract IEnumerable <Thing> Targets(AbilityDef ability, Saveable_Caster pawn);
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return Rand.Range(0, this.total) < MapComponent_Ability.longTickOffet * this.accepts;
 }