Voici en gros mon interprétation :
Pour quasiment tout les objets du jeu, on peut préciser un paramètre "retire_year" correspondant à l'année de retrait de l'objet (obsolescence pour un véhicule, disparition des barres d'outils pour les constructions joueur, disparition tout court pour les bâtiments de ville, ...). Lorsqu'on ne précise pas un paramètre dans le fichier .dat d'un objet avant sa compilation par makeobj, makeobj lui donne une valeur par défaut. Pour la retire year, cette valeur doit être 2999.
Cela veut dire que le problème ne se trouve pas dans le code du jeu mais dans le code de majeobj et surtout dans CHAQUE objet de chaque pak. Il serait donc nécessaire de changer le code de makeobj pour reculer cette date par défaut, mais après il faudra recompiler entièrement chaque pak et le mettre à jour. Ce qui est plus emmerdant c'est qu'au niveau des addons, il faudra que chaque créateur recompile tout ses addons ...
Une solution alternative serait que le jeu lui-même ne tienne pas compte des dates de retrait égales à 2999.
Le plus efficace serait d'utiliser la valeur 0 pour signifier "pas de date de retrait", ça demanderait à la fois quelques modifications dans le code et à la fois la recompilation de tout les objets mais ça serait la seule solution véritablement efficace à long terme.
EDIT : après lecture du sujet que tu as créé en bug reports, il semblerait que le problème soit uniquement au niveau du code du jeu (auquel cas je desespère, parce qu'il faut vraiment pas être fin pour adopter une solution pareille avec une date qui reste à l'échelle du joueur ...).