public static void GainEquipmentAbility(this Pawn_AbilityTracker tracker, EquipmentAbilityDef def, ThingWithComps thing) { if (!tracker.abilities.Any((Ability a) => a.def == def)) { EquipmentAbility ab = Activator.CreateInstance(def.abilityClass, new object[] { tracker.pawn, def }) as EquipmentAbility; ab.sourceEquipment = thing; tracker.abilities.Add(ab); } }
public static bool Prefix(ref Verb __instance, ref ThingWithComps __result) { if (__instance.GetType() == typeof(Verb_ShootEquipment)) { // Log.Message(__instance.DirectOwner.GetType().Name); Verb_ShootEquipment verb = (Verb_ShootEquipment)__instance; EquipmentAbility equipmentAbility = verb.ability as EquipmentAbility; if (equipmentAbility != null) { // Log.Message(equipmentAbility.def.LabelCap); if (equipmentAbility.sourceEquipment != null) { // Log.Message(equipmentAbility.sourceEquipment.def.LabelCap); } __result = equipmentAbility.sourceEquipment; } } return(true); }