public void SetData(ScriptableObject data) { if (data is CardData cardData) { gameObject.AddComponent <TooltipTrigger>().SetText(cardData.CardAlignment.ToString()); } else if (data is MingmingData mingmingData) { CardAlignment alignment = isPrimary ? mingmingData.MingmingAlignment.Primary : mingmingData.MingmingAlignment.Secondary; string header = isPrimary ? "Primary" : "Secondary"; gameObject.AddComponent <TooltipTrigger>().SetText(alignment.ToString(), $"{header} Alignment"); } }
private float GetTypeAdvantage(MingmingAlignment defenderTypes, CardAlignment cardType) { float modifier = 1f; bool hasPrimaryAdvantage = AlignmentAdvantageLookup.TryGetValue(new AlignmentCombination { Source = cardType, Target = defenderTypes.Primary }, out float primaryValue); modifier *= hasPrimaryAdvantage ? primaryValue : 1; bool hasSecondaryAdvantage = AlignmentAdvantageLookup.TryGetValue(new AlignmentCombination { Source = cardType, Target = defenderTypes.Secondary }, out float secondaryValue); modifier *= hasSecondaryAdvantage ? secondaryValue * SECONDARY_TYPE_ADVANTAGE : 1; return(modifier); }
public Sprite GetSpriteFromEnum <T>(T _enum) { Sprite sprite; object list = _enum switch { CardAlignment c => CardAlignmentReferences, _ => null, }; if (list != null) { sprite = ((List <EnumSpritePair <T> >)list).Find(x => x.Enum.Equals(_enum)).Sprite; } else { sprite = null; } return(sprite); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { Status.RemoveStatus(target); base.InvokeAction(source, target, cardAlignment); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { FindObjectsOfType <PartyController>().First(m => m.HasMingming(source)).DrawCards(numberOfCards); base.InvokeAction(source, target, cardAlignment); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { //TODO add card alignment modifier? target.AddEnergy(EnergyAdded); base.InvokeAction(source, target, cardAlignment); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { int healAmount = Rules.GetHealAmount(source, target, HealPower); target.TakeDamage(-healAmount, source); base.InvokeAction(source, target, cardAlignment); }
public bool Contains(CardAlignment alignment) { return(alignment.Equals(Primary) || (Secondary != CardAlignment.None && alignment.Equals(Secondary))); }
public virtual void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { OnInvoked?.Invoke(); //PerformAnimation(source, target); source.OnTriggerAnimation(PerformAnimation, target); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { float damage = Rules.Instance.GetAttackDamage(source, target, cardAlignment, AttackPower); target.TakeDamage(Mathf.FloorToInt(damage), source); base.InvokeAction(source, target, cardAlignment); }
private float GetModifier(MingmingAlignment attackerType, MingmingAlignment defenderTypes, CardAlignment cardType) { float modifier = attackerType.Contains(cardType) ? SAME_TYPE_ADVANTAGE : 1f; //Bonus for using same type modifier *= GetTypeAdvantage(defenderTypes, cardType); return(modifier); }
public int GetAttackDamage(int level, int attack, int defense, float cardPower, MingmingAlignment attackerType, MingmingAlignment defenderTypes, CardAlignment cardType) { float _modifier = GetModifier(attackerType, defenderTypes, cardType); //float damage = ((((((2 * level) / 5) + 2) * power * attack / defense) / 50) + 2) * _modifier; float damage = (float)((2 * level) / 5) + 2; damage *= (float)cardPower * attack / defense; damage = (float)(damage / 50) + 2; damage *= _modifier; return(Mathf.FloorToInt(damage)); }
public int GetAttackDamage(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment, float power) { float _modifier = GetModifier(source.GetMingmingAlignment, target.GetMingmingAlignment, cardAlignment); float damage = GetLevelModifier(source.Level); damage *= (float)power * source.Attack / target.Defense; damage = (float)(damage / 40) + 2; //Debug.Log($"{source.name} {source.GetInstanceID()} attacks {target.name} {target.GetInstanceID()} for {damage} damage.\nModifier: {_modifier}"); damage *= _modifier; return(Mathf.FloorToInt(damage)); }
public override void InvokeAction(MingmingBattleLogic source, MingmingBattleLogic target, CardAlignment cardAlignment) { OnInvoked?.Invoke(); if (Constraint.MingmingMeetsConstraint(source)) { Action.InvokeAction(source, target, cardAlignment); } }