private void Setup() { VerbMovement = VerbManager.GetVerb(agent, initialInventory.movementType, initialInventory.movementModifier); VerbMovement = VerbMovement ?? new Walk(ModifierTypes.None, agent); VerbA = VerbManager.GetVerb(agent, initialInventory.verbA, initialInventory.modifierA); VerbB = VerbManager.GetVerb(agent, initialInventory.verbB, initialInventory.modifierB); }
public static Verb BestVerbForTarget(this Pawn p, LocalTargetInfo target, IEnumerable <ManagedVerb> verbs, VerbManager man = null) { if (!target.IsValid || !target.Cell.InBounds(p.Map)) { Log.Error("[MVCF] BestVerbForTarget given invalid target with pawn " + p + " and target " + target); if (man?.debugOpts != null && man.debugOpts.ScoreLogging) { Log.Error("(Current job is " + p.CurJob + " with verb " + p.CurJob?.verbToUse + " and target " + p.CurJob?.targetA + ")"); } return(null); } Verb bestVerb = null; float bestScore = 0; foreach (var verb in verbs) { var score = VerbScore(p, verb.Verb, target, man != null && man.debugOpts.ScoreLogging); if (score <= bestScore) { continue; } bestScore = score; bestVerb = verb.Verb; } return(bestVerb); }
public static void AddVerbs(this VerbManager man, Hediff hediff) { if (man == null) { return; } if (Base.IsIgnoredMod(hediff?.def?.modContentPack?.Name)) { return; } var comp = hediff.TryGetComp <HediffComp_VerbGiver>(); if (comp?.VerbTracker?.AllVerbs == null) { return; } if (!Base.Features.HediffVerbs && !Base.IgnoredFeatures.HediffVerbs && comp.VerbTracker.AllVerbs.Any(v => !v.IsMeleeAttack)) { Log.ErrorOnce( "[MVCF] Found a hediff with a ranged verb while that feature is not enabled. Enabling now. This is not recommend. Contant the author of " + hediff?.def?.modContentPack?.Name + " and ask them to add a MVCF.ModDef.", hediff?.def?.modContentPack?.Name?.GetHashCode() ?? -1); Base.Features.HediffVerbs = true; Base.ApplyPatches(); } var extComp = comp as HediffComp_ExtendedVerbGiver; foreach (var verb in comp.VerbTracker.AllVerbs) { man.AddVerb(verb, VerbSource.Hediff, extComp?.PropsFor(verb)); } }
public static bool GetVerbsCommands_Prefix(ref IEnumerable <Command> __result, CompEquippable __instance) { var rangedVerbs = __instance.AllVerbs.Where(v => !v.IsMeleeAttack).ToList(); var melee = VerbManager.PreferMelee(__instance.parent); if (rangedVerbs.Count <= 1 && !melee) { return(true); } var man = __instance.PrimaryVerb?.CasterPawn?.Manager(false); __result = rangedVerbs .SelectMany(v => v.GetGizmosForVerb(man?.GetManagedVerbForVerb(v))) .OfType <Command>(); if (melee) { __result = __result.Prepend((Command)CreateVerbTargetCommand.Invoke(__instance.verbTracker, new object[] { __instance.parent, __instance.AllVerbs.First(v => v.verbProps.IsMeleeAttack) })); } return(false); }
public void ChooseMovement() { if (State == InventoryState.Idle) { return; } if (State == InventoryState.ChoosingModifier) { player.Inventory.ChangeMovementModifier(targetModifier); EndChoosingState(); return; } if (!VerbManager.IsMovementType(targetVerb)) { return; } player.Inventory.ChangeMovementVerb(targetVerb); EndChoosingState(); }
public static void AddVerbs(this VerbManager man, ThingWithComps eq) { if (man == null) { return; } if (Base.IsIgnoredMod(eq?.def?.modContentPack?.Name)) { return; } if (Compat.ShouldIgnore(eq)) { return; } var comp = eq.TryGetComp <CompEquippable>(); if (comp?.VerbTracker?.AllVerbs == null) { return; } if (!Base.Features.ExtraEquipmentVerbs && !Base.IgnoredFeatures.ExtraEquipmentVerbs && comp.VerbTracker.AllVerbs.Count(v => !v.IsMeleeAttack) > 1) { Log.ErrorOnce( "[MVCF] Found equipment with more than one ranged attack while that feature is not enabled. Enabling now. This is not recommend. Contact the author of " + eq?.def?.modContentPack?.Name + " and ask them to add a MVCF.ModDef.", eq?.def?.modContentPack?.Name?.GetHashCode() ?? -1); Base.Features.ExtraEquipmentVerbs = true; Base.ApplyPatches(); } foreach (var verb in comp.VerbTracker.AllVerbs) { man.AddVerb(verb, VerbSource.Equipment, comp.props is CompProperties_VerbProps props ? props.PropsFor(verb) : eq.TryGetComp <Comp_VerbProps>()?.Props?.PropsFor(verb)); } }
public static void AddVerbs(this VerbManager man, Apparel apparel) { if (man == null) { return; } if (Base.IsIgnoredMod(apparel?.def?.modContentPack?.Name)) { return; } if (Compat.ShouldIgnore(apparel)) { return; } var comp = apparel.TryGetComp <Comp_VerbGiver>(); if (comp?.VerbTracker?.AllVerbs == null) { return; } if (!Base.Features.ApparelVerbs && !Base.IgnoredFeatures.ApparelVerbs) { Log.ErrorOnce( "[MVCF] Found apparel with a verb while that feature is not enabled. Enabling now. This is not recommend. Contact the author of " + apparel?.def?.modContentPack?.Name + " and ask them to add a MVCF.ModDef.", apparel?.def?.modContentPack?.Name?.GetHashCode() ?? -1); Base.Features.ApparelVerbs = true; Base.ApplyPatches(); } comp.Notify_Worn(man.Pawn); foreach (var verb in comp.VerbTracker.AllVerbs) { man.AddVerb(verb, VerbSource.Apparel, comp.PropsFor(verb)); } }
public void ChangeVerbB(VerbTypes verb) { VerbB = VerbManager.GetVerb(agent, verb, VerbB.Modifier); }
public void ChangeMovementVerb(VerbTypes verb) { VerbMovement = VerbManager.GetVerb(agent, verb, VerbMovement.Modifier); }