This paper proposes a new condition-based maintenance policy for systems subject to multi-state deterioration and random shock simultaneously. Both Semi-Markov process and compound Poisson process are employed to explicitly model the exposed failure processes and dependent relationships between them. A condition-based inspection policy is designed to timely capture the states where maintenance actions are needed. The influence factors of preventive maintenance are specified as random shock and ageing process respectively. The Monte Carlo simulation technique is employed to obtain the optimal values about the proposed maintenance policy. An illustrate example about a power generator is taken into consideration to show how the newly developed maintenance policy works in real practice. The comparison analysis demonstrates that (1) the proposed condition-based inspection can effectively reveal the maintenance time points within limited inspection cost; (2) the new maintenance policy can achieve better objective values of availability and maintenance cost.