// 魔法卡和陷阱卡伤害预览
        protected List<CGLuaParam> PrepareExecuteLuaParams(CGGameMode gameMode, Effect effect, ActorRef<Card> triggerCard,
            List<ActorRef<Card>> targetCards, List<ActorRef<Hero>> targetHeroes)
        {
            List<CGLuaParam> luaParams = new List<CGLuaParam>();
            Card cardObject = gameMode.GetActorObject(triggerCard);
            Player player = gameMode.GetActorObject(cardObject.GetOwnerPlayer());
            Hero cardHero = gameMode.GetActorObject(player.GetHero());
            int spellPowerValue = cardHero.GetSpellPowerValue();

            int index = gameMode.GetRandomNumber();
            // 这个概率关键词是给胖法师使用，如果概率通过，会执行CGCopyCardsToHandCardDeck
            if (index == 1 && effect.keyword == CardKeyWordType.Possible)
            {
                return luaParams;
            }
            
            foreach (var triggerEffect in effect.triggerEffects)
            {
                if (triggerEffect.luaPath.Equals("None"))
                {
                    continue;
                }
                
                // 抽牌效果或者如果是全场则是作为攻击者
                if (!cardObject.IsNeedChooseTriggerEffect(triggerEffect))
                {
                    if (!targetCards.Any() ||
                        (targetCards.Count > 0 && 
                         (!triggerEffect.targetType.HasFlag(TargetType.Minion) && !triggerEffect.targetType.HasFlag(TargetType.Structure)))
                        || triggerEffect.targetType.ToString().Equals("609"))
                    {
                        int paramValue = triggerEffect.targetValue;
                        if (triggerEffect.luaPath.Contains("All") || gameMode.IsNeedAddSpellPower(triggerEffect.luaPath))
                        {
                            paramValue += spellPowerValue;
                        }

                        PrepareLuaSingleParam(gameMode, triggerEffect, cardObject, luaParams, paramValue);
                        continue;
                    }
                }

                int targetValue = triggerEffect.targetValue;
                Hero triggerCardHero = gameMode.GetActorObject(gameMode.GetHeroByCard(cardObject));
                // 标识伤害预览
                foreach (var targetCard in targetCards)
                {
                    Card targetCardObject = gameMode.GetActorObject(targetCard);
                    if (!gameMode.CardIsMetTriggerCondition(targetCardObject, triggerEffect) || 
                        effect.keyword == CardKeyWordType.OppoDeployTrigger)
                    {
                        continue;
                    }
                    
                    // 计算上法强的值
                    if (gameMode.IsNeedAddSpellPower(triggerEffect.luaPath))
                    {
                        targetValue += spellPowerValue;
                    }
                    
                    if (triggerEffect.luaPath.Contains("CGSacrificeHealthToDamage"))
                    {
                        targetValue = targetCardObject.GetHealth().Value.intValue;
                        targetValue += spellPowerValue;
                        foreach (var oppositeMinionCard in gameMode.GetOppositeMinionCards(targetCardObject, triggerEffect))
                        {
                            Card minion = gameMode.GetActorObject(oppositeMinionCard);
                            gameMode.SetMinionDamagePreviewData(minion, targetValue);
                        }
                        //gameMode.GetActorObject(gameMode.GetOppositeHeroByCard(targetCardObject)).SetPreviewData(-targetValue);
                    }
                    else if (triggerEffect.luaPath.Contains("CGSacrificeAmbushToDamage"))
                    {
                        targetValue = targetCardObject.GetAttack().Value.intValue;
                        targetValue += spellPowerValue;
                        foreach (var oppositeMinionCard in gameMode.GetOppositeMinionCards(targetCardObject, triggerEffect))
                        {
                            Card minion = gameMode.GetActorObject(oppositeMinionCard);
                            gameMode.SetMinionDamagePreviewData(minion, targetValue);
                        }
                    }
                    if (triggerEffect.luaPath.Contains("Damage") && !triggerEffect.luaPath.Contains("CGSacrificeAmbushToDamage"))
                    {
                        gameMode.SetMinionDamagePreviewData(targetCardObject, targetValue);
                    }
                    else if (triggerEffect.luaPath.Contains("Heal") && !triggerEffect.luaPath.Contains("BuffCardsAttackToHealth"))
                    {
                        if (triggerCardHero.GetIsPoison() || triggerCardHero.GetIsTempPoison())
                        {
                            targetCardObject.SetPreviewData(-targetValue);
                        }
                        else
                        {
                            targetCardObject.SetPreviewData(targetValue);
                        }
                    }
                }

                foreach (var targetHero in targetHeroes)
                {
                    if (!triggerEffect.targetType.HasFlag(TargetType.Hero))
                    {
                        continue;
                    }
                    
                    if (effect.keyword == CardKeyWordType.Continuous)
                    {
                        continue;
                    }
                    // 计算上法强的值
                    if (gameMode.IsNeedAddSpellPower(triggerEffect.luaPath))
                    {
                        targetValue += spellPowerValue;
                    }

                    Hero targetHeroObject = gameMode.GetActorObject(targetHero);

                    if (triggerEffect.luaPath.Contains("Damage"))
                    {
                        targetHeroObject.SetPreviewData(-targetValue);
                    }
                    else if (triggerEffect.luaPath.Contains("Heal"))
                    {
                        if (triggerCardHero.GetIsPoison() || triggerCardHero.GetIsTempPoison())
                        {
                            targetHeroObject.SetPreviewData(-targetValue);
                        }
                        else
                        {
                            targetHeroObject.SetPreviewData(targetValue);
                        }
                    }
                }

                // 如果目标只有英雄
                if (targetHeroes.Count > 0 && targetCards.Count == 0)
                {
                    if (!triggerEffect.targetType.HasFlag(TargetType.Hero))
                    {
                        continue;
                    }
                    
                    CGLuaHeroParam cgLuaHeroParam = new CGLuaHeroParam
                    {
                        Value = targetValue,
                        Heroes = targetHeroes,
                        TriggerCard = triggerCard
                    };
                    CGLuaParam cgLuaParam = new CGLuaParam
                    {
                        LuaPath = triggerEffect.luaPath,
                        LuaParam = cgLuaHeroParam
                    };
                    luaParams.Add(cgLuaParam);
                    continue;
                }

                // 如果目标只有卡牌
                if (targetCards.Count > 0 && targetHeroes.Count == 0)
                {
                    CGLuaCardParam cgLuaCardParam = new CGLuaCardParam
                    {
                        Value = targetValue,
                        Cards = targetCards,
                        TriggerCard = triggerCard
                    };
                    CGLuaParam cgLuaParam = new CGLuaParam
                    {
                        LuaPath = triggerEffect.luaPath,
                        LuaParam = cgLuaCardParam
                    };
                    luaParams.Add(cgLuaParam);
                    continue;
                }

                if (targetHeroes.Count > 0 && targetCards.Count > 0)
                {
                    CGLuaHeroParam cgLuaHeroParam = new CGLuaHeroParam
                    {
                        Value = targetValue,
                        Heroes = targetHeroes,
                        TriggerCard = triggerCard
                    };
                    CGLuaCardParam cgLuaCardParam = new CGLuaCardParam
                    {
                        Value = targetValue,
                        Cards = targetCards,
                        TriggerCard = triggerCard
                    };
                    CGLuaParam luaHeroParam = new CGLuaParam
                    {
                        LuaPath = triggerEffect.luaPath,
                        LuaParam = cgLuaHeroParam
                    };
                    luaParams.Add(luaHeroParam);
                    CGLuaParam cgLuaParam = new CGLuaParam
                    {
                        LuaPath = triggerEffect.luaPath,
                        LuaParam = cgLuaCardParam
                    };
                    luaParams.Add(cgLuaParam);
                }
            }

            return luaParams;
        } 怎么使这个方法简洁优雅一点