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); }
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); }