переписал вобщем именно на округление до ближайшего целого с простого отбрасывания дробной части
по идее зацепит только визуальное отображение, а остальное что связано с проверками на оставшееся время должно работать по старому. ну почти по старому, т.к. пришлось некоторые базовые методы связанные с этим всем поправить и они теперь оперируют с временем в миллисекундах, а не в секундах, т.е. все эти проверки идут с точностью до 1мс, а не до 1сек., как было.
заоднем и сэкономил местами на преобразованиях ms -> sec и sec -> ms в разных расчетах.
ну вобщем по идее это не должно на что-то еще повлиять как-то критично, если я в процессе конечно как-то не накосячил по невнимательности
узнаем об этом вобщем после следующего рестарта.
кстати по инфе об отображаемом времени эффектов.
для показа в пакетах могу попробовать слать более корректно, с округлением к ближайшему целому, т.е. 9.6 к примеру округлит до 10, а 9.4 до 9.
правда в единичных случаях тогда будет отображать возможно на секунду больше чем надо время работы баффа/дебаффа.
это чисто клиент сайд, не сервер предупреждает
видимо в интерфейсе тупо заложено "уровень заточки уже небезопасен? выдаем всегда предупреждение и пофиг на все остальное"
ну и просто опять же в клиенте нет каких-то особых свойств в данных этих билетов на тему того что они не дадут сломаться вещи, так что как это поймет, даже если бы захотел.
ну и да - с сервера тоже такой инфы не отослать
ну вот зашел, раз 20-30 подряд на себя наложил и всегда начинает отображать с 9 сек, что кстати вполне корректно
если что, время отображается с точностью до целых секунд, притом с округлением до ближайшего меньшего целого, а с учетом того что между самим наложением эффекта и формированием и отправкой пакета о нем хоть как но пройдет хоть несколько милли/наносекунд - оригинального полного времени уже к моменту отправки не будет, т.е. к примеру вот для этого баффа уже к моменту расчета к примеру оставшееся время будет ну условно 9 сек и 999 мс., что при приведении к целому превратится в ровно 9 сек., которые и отобразятся в клиенте.
тебя же не удивляет что и для других баффов обычно отображается на секунду короче время, или даже на минуту для длительных баффов - например бафф на 30 минут сразу начинает показывать как бафф на 29 минут (формально на 29 мин. 59 сек. - просто клиент секунды в этом случае не отображает)
Ну и если что это чисто визуальное время - реальная длительность работы эффекта на сервере именно та что и должна быть, т.е. в данном случае именно что 10 сек. оттикает и только после этого завершит свою работу. точнее может даже чуть больше проработать, т.к. таск завершения работы эффектов тикает с периодичностью в 666мс и снимает только то для чего точно время оставшееся стало равно 0 или меньше. ну и тут проверки идут с точностью до 1мс, а не до секунд.