I am sorry but as far as I know it is impossible to do it just by modifying Item class
You can do it in Item class for only Item properties but almost any item has its own properties too. You cant control those properties with Item class..
besides, you might not be able to do it even for some Item properties where some child items do not call Base methods in overriding methods..
(same for mobiles)
Well you are getting some where... let me express like this may be you will totally understand better ; but you got the point ; ok ;
In object technolgy allmost evry class is generated from a base or abstract class whenever a new inherits or ( extend) this base class it will inherit their difiend method's and properties and if it likes it will overwrite base class method's and add a new properties also.
In some language the overwriting(overloading) a method has some mechanisim that either replace the base method or just reply method request by it's new overloaded method this concept is called "virtual method".When ever base method is typed as virtual and the extended class overload's this method then their is no chance to call base method as you said; but if is not typed as virtual then you can call base method by casting extended method to base method.Then you will be able to call base method even.
Therefore the description of method can be called from the child object .If the method is not overloaded by extended class then you can allway's call the base method.
Our goal is going to be define a property bool ChangeFlag and define three method
-"Void SetChanged()",
-"Void UnsetChanged()",
-"Bool IsChanged()";
In base class like (class Mobile) and never care in the child classes about this stuff.Then we are going tp atack the code sniplet where the action's is conducted;like ([move command) We will call the object SetChanged() method that is going set ChagedFlag property to true.This action will be also intercept in new creation time of item.İtem must be set as changed.
We will also ; atack the archive process which is taking object from universe container and serilize them to write archive file.At that point we will intercept a logic that will check the object with IsChanged () method to differantiate if it is changed or not since recent archive.
If it is changed it will going to be serillized and written to archive then call UnsetChanged() method to reset ChangeFlag to false.
There for no child class will be involved with this flag .This will save the script writer's even know about such a mechanisim is exist.