Hi,
Since you don't have the state in the address object in "after onAfterAddressUpdate", it means that it's not HikaShop core doing this. It's highly likely that it is a plugin implementing the onAfterAddressUpdate trigger event running its own MySQL query to directly set that in the database.
in the trigger function of libraries/joomla/event/dispatcher.php you'll want to add several logging commands.
You'll want one after
$value = $this->_observers[$key]->update($args);
to log the address object from the database (with a MySQL query), and another one there on
For example:
if($event== 'onAfterAddressUpdate'){
$db = JFactory::getDBO();
$db->setQuery('SELECT * FROM #__hikashop_address WHERE address_id = '.$args[0]->address_id);
$address = $db->loadObject();
hikashop_writeToLog($address, 'xxx');
hikashop_writeToLog($this->_observers[$key], 'xxx');
}
And the same thing after
$value = call_user_func_array($this->_observers[$key]['handler'], array_values($args));
That way, you'll for each plugin being triggered by the onAfterAddressUpdate event, you'll see if the address_state in the database has been set to malta by the plugin and you'll then be able to look into that plugin.