static public void Postfix(ContextActionHealTarget __instance) { var tr = Harmony12.Traverse.Create(__instance); var context = tr.Property("Context").GetValue <MechanicsContext>(); var target = tr.Property("Target").GetValue <TargetWrapper>().Unit; if (target == null || context.MaybeCaster == null) { return; } if (target.Descriptor.Buffs.HasFact(NewRagePowers.lesser_celestial_totem_buff) && context.SourceAbility != null) { int bonus = context.Params.CasterLevel; context.TriggerRule <RuleHealDamage>(new RuleHealDamage(target, target, DiceFormula.Zero, bonus)); } }
static bool Prefix(ContextActionHealTarget __instance) { currentHealDice = __instance.Value; return(true); }
static public bool Prefix(ContextActionHealTarget __instance) { var tr = Harmony12.Traverse.Create(__instance); var context = tr.Property("Context").GetValue <MechanicsContext>(); var target = tr.Property("Target").GetValue <TargetWrapper>().Unit; if (target == null) { UberDebug.LogError(__instance, (object)"Invalid target for effect '{0}'", __instance.GetType().Name); } else if (context.MaybeCaster == null) { UberDebug.LogError(__instance, (object)"Caster is missing", (object[])Array.Empty <object>()); } else { int bonus = __instance.Value.Calculate(context); var bonus_to_dice = __instance.Value.BonusValue.Calculate(context); var hp_bonus_to_caster_level = context.MaybeCaster.Get <UnitPartExtendHpBonusToCasterLevel>(); if (hp_bonus_to_caster_level != null && hp_bonus_to_caster_level.active(context.SourceAbility) && context.Params != null) { var additional_hp = context.Params.CasterLevel - bonus_to_dice; //Main.logger.Log("Additional Hp: " + additional_hp.ToString()); if (additional_hp < 0) { additional_hp = 0; } if (context.HasMetamagic(Metamagic.Empower)) { additional_hp += additional_hp / 2; } bonus_to_dice += additional_hp; bonus += additional_hp; } if (!context.HasMetamagic(Metamagic.Maximize) && context.MaybeCaster.Ensure <UnitPartHealingMetamagic>().hasMaximize(context.SourceAbility, context.MaybeCaster, target)) { bonus = (int)__instance.Value.DiceType * __instance.Value.DiceCountValue.Calculate(context) + bonus_to_dice; if (context.HasMetamagic(Metamagic.Empower)) { bonus = (int)(bonus * 1.5f); } } if (!context.HasMetamagic(Metamagic.Empower) && context.MaybeCaster.Ensure <UnitPartHealingMetamagic>().hasEmpower(context.SourceAbility, context.MaybeCaster, target)) { bonus = (int)(bonus * 1.5f); } int dice_count = __instance.Value.DiceCountValue.Calculate(context); bonus += target.Descriptor.Ensure <UnitPartReceiveBonusHpPerDie>().getAmount(context.SourceAbility) * dice_count; if (target.Descriptor.Ensure <UnitPartReceiveBonusCasterLevelHealing>().active() && context.SourceAbility != null && __instance.Value != null) { var dice = __instance.Value.DiceType; if (dice_count != 0 && dice != DiceType.Zero && context.Params != null) { bonus += context.Params.CasterLevel; } } if (bonus > 0) { context.TriggerRule <RuleHealDamage>(new RuleHealDamage(context.MaybeCaster, target, DiceFormula.Zero, bonus)); } } return(false); }