public static bool Listener(Pawn __instance, DamageInfo?dinfo, Hediff exactCulprit = null)
            {
                try
                {
                    if (__instance.IsSurrogateAndroid())
                    {
                        Utils.insideKillFuncSurrogate = true;

                        //Si c'est un surrogate controllé temporaire alors on le restitue a sa faction
                        CompSkyMind csm = __instance.TryGetComp <CompSkyMind>();
                        if (csm != null)
                        {
                            //Log.Message("Restitution surrogate a sa faction");
                            csm.tempHackingEnding();
                        }
                    }
                    //disconnect killed user
                    Utils.GCATPP.disconnectUser(__instance);
                    //Log.Message("YOU KILLED "+__instance.LabelCap);
                    //Is surrogate android used ?
                    if (__instance.IsSurrogateAndroid(true))
                    {
                        //Obtention controlleur
                        CompAndroidState cas = __instance.TryGetComp <CompAndroidState>();
                        if (cas == null)
                        {
                            return(true);
                        }

                        //Arret du mode de control chez le controller
                        CompSurrogateOwner cso = cas.surrogateController.TryGetComp <CompSurrogateOwner>();
                        cso.stopControlledSurrogate(__instance, false, false, true);

                        //On reset les données pour une potentiel futur resurection
                        cas.resetInternalState();
                    }


                    //Log.Message("YOU KILLED END");
                    Utils.insideKillFuncSurrogate = false;
                    return(true);
                }
                catch (Exception e)
                {
                    Log.Message("[ATPP] Pawn.Kill(Error) : " + e.Message + " - " + e.StackTrace);

                    if (__instance.IsSurrogateAndroid())
                    {
                        Utils.insideKillFuncSurrogate = false;
                    }
                    return(true);
                }
            }