Example #1
0
        public static bool ServerIsWateringRequired(
            IWorldObject objectPlant,
            ICharacter character,
            IProtoItem protoItem,
            IProtoObjectPlant protoPlant,
            double proposedWateringDuration)
        {
            var plantPrivateState = objectPlant.GetPrivateState <PlantPrivateState>();

            if (plantPrivateState.ServerTimeWateringEnds >= double.MaxValue ||
                (proposedWateringDuration < double.MaxValue &&
                 (plantPrivateState.ServerTimeWateringEnds
                  >= Server.Game.FrameTime + proposedWateringDuration - 60)))
            {
                // the plant is already watered enough
                Instance.CallClient(character, _ => _.ClientRemote_CannotWaterAlreadyWatered(protoItem));
                return(false);
            }

            if (!protoPlant.ServerCanBeWatered((IStaticWorldObject)objectPlant))
            {
                // no need to water the plant
                Instance.CallClient(character, _ => _.ClientRemote_CannotWaterLastHarvestOrRotten(protoItem));
                return(false);
            }

            return(true);
        }