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;
 }
Beispiel #2
0
        public override ThinkResult TryIssueJobPackage(Pawn pawn)
        {
            Saveable_Caster cachePawn = MapComponent_Ability.GetOrCreate().GetPawnHabilty(pawn);

            if (cachePawn.whaitingForThinkNode)
            {
                cachePawn.whaitingForThinkNode = false;
                Saveable_ExecutionLog log = cachePawn.GetLog(cachePawn.currentAbility);
                log.numberOfExecution++;
                log.ticksSinceExecution = 0;
                return(new ThinkResult(new Job(cachePawn.currentAbility.effect.StartJob(cachePawn.effectState)), this));
            }
            return(ThinkResult.NoJob);
        }
        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);
        }
        public Saveable_Caster GetPawnHabilty(Pawn pawn)
        {
            Saveable_Caster value;

            if (!this.TryGetPawnHability(pawn, out value))
            {
                if (this.manaCache == null)
                {
                    this.manaCache = new Dictionary <ThingDef, ManaDef>();
                    foreach (ManaDef ability in DefDatabase <ManaDef> .AllDefs)
                    {
                        foreach (ThingDef race in ability.races)
                        {
                            this.manaCache.Add(race, ability);
                        }
                    }
                }


                value      = new Saveable_Caster();
                value.pawn = pawn;
                this.pawnCache.Add(value);
                this.InjectTab(pawn.def);

                if (this.manaCache.TryGetValue(pawn.def, out value.manaDef))
                {
                    value.manaValue = value.manaDef.initial;
                }

                foreach (AbilityDef ability in this.GetAllowedAbilities(value.pawn))
                {
                    value.GetLog(ability);
                }
            }

            return(value);
        }
Beispiel #5
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(pawn.GetLog(ability).numberOfExecution < this.limit);
 }
        public Saveable_Caster GetPawnHabilty(Pawn pawn)
        {
            Saveable_Caster value;

            if (!this.TryGetPawnHability(pawn, out value))
            {
                if (this.manaCache == null)
                {
                    this.manaCache = new Dictionary<ThingDef, ManaDef>();
                    foreach (ManaDef ability in DefDatabase<ManaDef>.AllDefs)
                    {
                        foreach (ThingDef race in ability.races)
                            this.manaCache.Add(race, ability);
                    }
                }

                value = new Saveable_Caster();
                value.pawn = pawn;
                this.pawnCache.Add(value);
                this.InjectTab(pawn.def);

                if (this.manaCache.TryGetValue(pawn.def, out value.manaDef))
                    value.manaValue = value.manaDef.initial;

                foreach (AbilityDef ability in this.GetAllowedAbilities(value.pawn))
                    value.GetLog(ability);
            }

            return value;
        }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return pawn.GetLog(ability).numberOfExecution < this.limit;
 }
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return pawn.GetLog(ability).ticksSinceExecution >= this.value;
 }
Beispiel #9
0
 public override bool Sucess(AbilityDef ability, Saveable_Caster pawn)
 {
     return(pawn.GetLog(ability).ticksSinceExecution >= this.value);
 }