示例#1
0
        public PlayerCharacter ApplyHungerPenalties(PlayerCharacter entity, NWPlayer pc)
        {
            int penalty = 0;

            if (entity.CurrentHunger >= 40 && entity.CurrentHunger <= 50)
            {
                pc.FloatingText("You are starving! You should eat soon.");
            }
            else if (entity.CurrentHunger >= 30 && entity.CurrentHunger < 40)
            {
                penalty = 1;
                pc.FloatingText("You are starving! You are suffering from starvation penalties.");
            }
            else if (entity.CurrentHunger >= 20 && entity.CurrentHunger < 30)
            {
                penalty = 2;
                pc.FloatingText("You are starving! You are suffering from starvation penalties.");
            }
            else if (entity.CurrentHunger >= 10 && entity.CurrentHunger < 20)
            {
                penalty = 3;
                pc.FloatingText("You are starving! You are suffering from starvation penalties.");
            }
            else if (entity.CurrentHunger < 10)
            {
                penalty = 4;
                pc.FloatingText(_color.Red("You are starving! You are about to starve to death!"));
            }

            var effects = pc.Effects;

            foreach (Effect effect in effects)
            {
                if (_.GetEffectTag(effect) == "EFFECT_HUNGER_PENALTIES")
                {
                    _.RemoveEffect(pc.Object, effect);
                }
            }

            if (penalty > 0)
            {
                Effect effect = _.EffectAbilityDecrease(ABILITY_STRENGTH, penalty);
                effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_DEXTERITY, penalty));
                effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_CONSTITUTION, penalty));

                effect = _.TagEffect(effect, "EFFECT_HUNGER_PENALTIES");
                _.ApplyEffectToObject(DURATION_TYPE_PERMANENT, effect, pc.Object);
            }

            if (entity.CurrentHunger <= 0)
            {
                _.ApplyEffectToObject(DURATION_TYPE_INSTANT, _.EffectDeath(), pc.Object);
                entity.CurrentHunger = 20;
                pc.FloatingText("You starved to death!");
            }

            return(entity);
        }
示例#2
0
        public void Apply(NWCreature oCaster, NWObject oTarget)
        {
            Random random = new Random();

            Effect effect = _.EffectAbilityDecrease(ABILITY_STRENGTH, random.Next(1, 5));

            effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_CONSTITUTION, random.Next(1, 5)));
            effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_DEXTERITY, random.Next(1, 5)));
            effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_INTELLIGENCE, random.Next(1, 5)));
            effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_WISDOM, random.Next(1, 5)));
            effect = _.EffectLinkEffects(effect, _.EffectAbilityDecrease(ABILITY_CHARISMA, random.Next(1, 5)));

            effect = _.TagEffect(effect, "FOOD_DISEASE_EFFECT");
            _.ApplyEffectToObject(DURATION_TYPE_PERMANENT, effect, oTarget.Object);

            _skill.ApplyStatChanges(NWPlayer.Wrap(oTarget.Object), null);
        }