Beispiel #1
0
        public static void OnTrained(Event e)
        {
            Sim actor = e.Actor as Sim;

            if (actor == null)
            {
                return;
            }

            if ((actor.Household == null) || (actor.Household.IsSpecialHousehold))
            {
                return;
            }

            if (actor.InteractionQueue == null)
            {
                return;
            }

            InteractionInstance interaction = actor.InteractionQueue.GetCurrentInteraction();

            if (interaction == null)
            {
                return;
            }

            if (!(interaction.Target is TrainingDummy))
            {
                return;
            }

            TimePassedEvent pEvent = e as TimePassedEvent;

            Sim target = e.TargetObject as Sim;

            if (target == null)
            {
                return;
            }

            if (actor.Household == target.Household)
            {
                return;
            }

            AddAccrued(actor, target, GetPay(actor) * pEvent.mIncrement);

            if (!CollectAccrued(actor, target))
            {
                if (actor.InteractionQueue != null)
                {
                    actor.InteractionQueue.CancelAllInteractions();
                }

                Common.Notify(Common.Localize("Trainer:UnableToPay"), actor.ObjectId);
            }
        }
Beispiel #2
0
        public static void OnMeditated(Event e)
        {
            Sim actor = e.Actor as Sim;

            if (actor == null)
            {
                return;
            }

            if (SkillBasedCareerBooter.GetSkillBasedCareer(actor, SkillNames.MartialArts) == null)
            {
                return;
            }

            TimePassedEvent tEvent = e as TimePassedEvent;

            float perSimValue = 0;

            perSimValue *= tEvent.Increment;

            foreach (Sim sim in actor.LotCurrent.GetSims())
            {
                if (sim == actor)
                {
                    continue;
                }

                if (sim.RoomId != actor.RoomId)
                {
                    continue;
                }

                if (sim.FamilyFunds >= perSimValue)
                {
                    sim.Motives.SetMax(CommodityKind.VampireThirst);
                    sim.Motives.SetMax(CommodityKind.Hunger);
                    sim.Motives.SetMax(CommodityKind.Energy);

                    AddAccrued(actor, sim, perSimValue);
                }
            }

            CollectAccrued(actor, null);
        }
Beispiel #3
0
        public static void OnTrained(Event e)
        {
            Sim actor = e.Actor as Sim;

            if (actor == null)
            {
                return;
            }

            if ((actor.Household == null) || (actor.Household.IsSpecialHousehold))
            {
                return;
            }

            if (actor.InteractionQueue == null)
            {
                return;
            }

            InteractionInstance interaction = actor.InteractionQueue.GetCurrentInteraction();

            if (interaction == null)
            {
                return;
            }

            if (!(interaction.Target is AthleticGameObject))
            {
                return;
            }

            TimePassedEvent pEvent = e as TimePassedEvent;

            Sim target = e.TargetObject as Sim;

            if (target == null)
            {
                return;
            }

            if (actor.Household == target.Household)
            {
                return;
            }

            float cash = GetPay(actor) * pEvent.mIncrement;

            if (sAccrued.ContainsKey(actor.SimDescription.SimDescriptionId))
            {
                cash += sAccrued[actor.SimDescription.SimDescriptionId];
            }

            if (cash >= target.FamilyFunds)
            {
                cash = target.FamilyFunds;
                if (cash == 0)
                {
                    if (actor.InteractionQueue != null)
                    {
                        actor.InteractionQueue.CancelAllInteractions();
                    }

                    if (actor.IsSelectable)
                    {
                        Common.Notify(Common.Localize("Trainer:UnableToPay"), actor.ObjectId);
                    }
                    return;
                }
            }

            sAccrued.Remove(actor.SimDescription.SimDescriptionId);

            if (cash < 1)
            {
                sAccrued.Add(actor.SimDescription.SimDescriptionId, cash);
            }
            else
            {
                target.ModifyFunds(-(int)cash);

                actor.ModifyFunds((int)cash);

                SkillBasedCareerBooter.UpdateExperience(actor, SkillNames.Athletic, (int)cash);
            }
        }