public void CreateVerb() { verb_ShootWeaponAbility = new Verb_ShootWeaponAbility { verbTracker = new VerbTracker(GetPawn()), caster = GetPawn(), verbProps = new VerbProperties { accuracyTouch = 1f, accuracyShort = 1f, accuracyMedium = 1f, accuracyLong = 1f, verbClass = typeof(Verb_ShootWeaponAbility), hasStandardCommand = true, defaultProjectile = Props.AbilityProjectile, warmupTime = Props.WarmupTime, range = Props.Range, soundCast = Props.AbilitySound, burstShotCount = Props.BurstShotCount, ticksBetweenBurstShots = Props.TicksBetweenBurstShots, muzzleFlashScale = 0, forcedMissRadius = 0f, }, cannotMiss = Props.cannotMiss, ammunition = Props.usesAmmunition }; verb_ShootWeaponAbility.verbProps.targetParams = TargetingParameters.ForAttackAny(); if (Props.targetingParameters != null) { verb_ShootWeaponAbility.verbProps.targetParams = Props.targetingParameters; } }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDestroyedOrNull(TargetIndex.A); if (TargetA.Thing is Pawn targetPawn) { Toil toilGoto = null; toilGoto = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell); toilGoto.tickAction = delegate() { JoyUtility.JoyTickCheckEnd(this.pawn, JoyTickFullJoyAction.EndJob, 0.3f, null); }; yield return(toilGoto); } else { Toil reserveTargetA = Toils_Reserve.Reserve(TargetIndex.A, 1, -1, null); yield return(reserveTargetA); Toil toilGoto = null; toilGoto = Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.InteractionCell).FailOnSomeonePhysicallyInteracting(TargetIndex.A); toilGoto.tickAction = delegate() { JoyUtility.JoyTickCheckEnd(this.pawn, JoyTickFullJoyAction.EndJob, 0.3f, null); }; yield return(toilGoto); } Toil takePhoto = new Toil(); takePhoto.initAction = delegate() { if (pawn.equipment.Primary == null && pawn.equipment.AllEquipmentListForReading.Find(e => e.def == RWBYDefOf.RWBY_Anesidora_Box) is ThingWithComps thingWithComps) { thingWithComps.TryGetComp <CompWeaponTransform>().Transform(); } pawn.needs.joy.GainJoy(0.07f, JoyKindDefOf.Social); Verb_ShootWeaponAbility verb_ShootWeaponAbility = new Verb_ShootWeaponAbility { verbTracker = new VerbTracker(pawn), caster = pawn, verbProps = new VerbProperties { accuracyTouch = 1f, accuracyShort = 1f, accuracyMedium = 1f, accuracyLong = 1f, verbClass = typeof(Verb_ShootWeaponAbility), hasStandardCommand = true, defaultProjectile = RWBYDefOf.Bullet_Velvet_Camera, warmupTime = 2f, range = 10f, soundCast = RWBYDefOf.Shot_Velvet_Camera, burstShotCount = 1, ticksBetweenBurstShots = 1, muzzleFlashScale = 0, forcedMissRadius = 0f, }, cannotMiss = true, ammunition = null }; verb_ShootWeaponAbility.verbProps.targetParams = TargetingParameters.ForAttackAny(); verb_ShootWeaponAbility.TryStartCastOn(TargetA.Thing); }; yield return(takePhoto); job.count = 1; yield break; }