Пример #1
0
    //Removes the effects that have ended.
    public void UpdateDurations()
    {
        for (var i = 0; i < effects.Count; i++)
        {
            //Reduce the duration. If it's still >= 0 insert the changed effect (effects are immutable).
            if (effects[i].duration >= 0)
            {
                _bd = effects[i];
                _bd.duration--;
                effects.RemoveAt(i);
                if (_bd.duration >= 0)
                {
                    effects.Insert(i, _bd);
                }
                else
                {
                    i--;
                }

                if (effects.Count == 0)
                {
                    break;
                }
            }
        }
    }
    public void UpdateEffects()
    {
        for (var i = 0; i < effects.Count; i++)
        {
            if (effects[i].duration >= 0)
            {
                _bd = effects[i];
                _bd.duration--;
                effects.RemoveAt(i);
                if (_bd.duration >= 0)
                {
                    effects.Insert(i, _bd);
                }
                else
                {
                    i--;
                }
                if (effects.Count == 0)
                {
                    break;
                }
            }

            if (effects[i].disable == Enumerations.DisableTypes.Stun)
            {
                print(gameObject.name + " stunned");
            }
        }
    }
Пример #3
0
 public void AddEffect(Ability.BuffDebuff bd)
 {
     effects.Add(bd);
     _combatController = GetComponent <scr_CombatController>();
     _combatController.physicalAttack  += bd.physicalAttackMod;
     _combatController.physicalDefense += bd.physicalDefenseMod;
     _combatController.magicalAttack   += bd.magicalAttackMod;
     _combatController.magicalDefense  += bd.magicalDefenseMod;
     _combatController.pureAttack      += bd.pureAttackMod;
     _combatController.pureDefense     += bd.pureDefenseMod;
     UpdateActive();
     RpcUpdateMarkers();
 }
    private static Ability.AbilityStruct LoadAbility(StreamReader reader)
    {
        Ability.BuffDebuff LoadBuffDebuff(string s)
        {
            var my          = new Ability.BuffDebuff();
            var splitString = s.Split(new[] { "_" }, StringSplitOptions.RemoveEmptyEntries);

            my.disable            = (Enumerations.DisableTypes) int.Parse(splitString[0]);
            my.purge              = (Enumerations.Purge) int.Parse(splitString[1]);
            my.durationType       = (Enumerations.SpellDuration) int.Parse(splitString[2]);
            my.throwRange         = int.Parse(splitString[3]);
            my.duration           = int.Parse(splitString[4]);
            my.movementModifier   = int.Parse(splitString[5]);
            my.throwsTarget       = bool.Parse(splitString[6]);
            my.physicalAttackMod  = int.Parse(splitString[7]);
            my.physicalDefenseMod = int.Parse(splitString[8]);
            my.magicalAttackMod   = int.Parse(splitString[9]);
            my.magicalDefenseMod  = int.Parse(splitString[10]);
            my.pureAttackMod      = int.Parse(splitString[11]);
            my.pureDefenseMod     = int.Parse(splitString[12]);

            return(my);
        }

        List <int[]> LoadAOETiles(string s)
        {
            var my          = new List <int[]>();
            var splitString = s.Split(new[] { "(", ",", ")", " " }, StringSplitOptions.RemoveEmptyEntries);

            for (var i = 0; i < splitString.Length; i += 2)
            {
                Debug.Log(splitString[i]);
                Debug.Log(splitString[i + 1]);
                my.Add(new int[2] {
                    int.Parse(splitString[i]), int.Parse(splitString[i + 1])
                });
            }

            return(my);
        }

        var ability = new Ability.AbilityStruct();
        var line    = "";

        line = reader.ReadLine();

        while (line != null)
        {
            //Read the line and get data
            //Debug.Log(line);
            var splitString = line.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
            if (splitString[0] == "Name")
            {
                ability.name = splitString[1];
            }
            else if (splitString[0] == "Description")
            {
                ability.description = splitString[1];
            }
            else if (splitString[0] == "IsAOE")
            {
                ability.isAOE = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "IsActive")
            {
                ability.isActive = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "ChargesTurn")
            {
                ability.chargesTurn = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "CastRange")
            {
                ability.castRange = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "AllowedTargets")
            {
                ability.allowedTargets = splitString[1];
            }
            else if (splitString[0] == "DurationType")
            {
                ability.durationType = (Enumerations.SpellDuration) int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DamageDispellEffect")
            {
                ability.damageDispellEffect = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "TransformSquare")
            {
                ability.transformSquare = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "SquareChange")
            {
                ability.squareChange = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "SquareChangeRange")
            {
                ability.squareChange = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "NumberOfBuffsDebuffs")
            {
                ability.numberOfBuffsDebuffs = int.Parse(splitString[1]);
                ability.buffsDebuffs         = new Ability.BuffDebuff[ability.numberOfBuffsDebuffs];
            }
            else if (splitString[0] == "BuffsDebuffs")
            {
                ability.buffsDebuffs[int.Parse(splitString[1])] = LoadBuffDebuff(splitString[2]);
            }
            else if (splitString[0] == "CastTarget")
            {
                ability.targetPoint = (Enumerations.TargetPoint) int.Parse(splitString[1]);
            }
            else if (splitString[0] == "TilesInAOE")
            {
                ability.tilesInAOE = LoadAOETiles(splitString[1]);
            }
            else if (splitString[0] == "CorpseContinuation")
            {
                ability.corpseContinuation = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "CanBounce")
            {
                ability.canBounce = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "BounceReduction")
            {
                ability.bounceReduction = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "BounceNumber")
            {
                ability.bounceNumber = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "BounceRange")
            {
                ability.bounceRange = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "Rejuvenation")
            {
                ability.rejuvenation = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "RejuvenationTime")
            {
                ability.rejuvenationTime = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "SpawnWard")
            {
                ability.spawnWard = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "WardRange")
            {
                ability.wardRange = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "WardInvulnerability")
            {
                ability.wardInvulnerability = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "WardAbilities")
            {
                ability.wardAbilities = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "Reincarnation")
            {
                ability.reincarnation = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "ReincarnationTime")
            {
                ability.reincarnationTime = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "ReincarnationHealth")
            {
                ability.reincarnationHealth = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DeathProtection")
            {
                ability.deathProtection = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "DeathProtectionDuration")
            {
                ability.deathProtectionDuration = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DeathProtectionLifeCycle")
            {
                ability.deathProtectionLifeCycle = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DeathProtectionIgnore")
            {
                ability.deathProtectionIgnore = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "Summoning")
            {
                ability.summoning = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "Summons")
            {
                ability.summons = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "NumberOfSummons")
            {
                ability.numberOfSummons = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "Duration")
            {
                ability.duration = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "Devour")
            {
                ability.devour = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "DevourDamage")
            {
                ability.devourDamage = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DevourEscapeHits")
            {
                ability.devourEscapeHits = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "AbilitiesPhase")
            {
                ability.abilitiesPhase = bool.Parse(splitString[1]);
            }
            else if (splitString[0] == "Damage")
            {
                ability.damage = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "DamageType")
            {
                ability.damageType = (Enumerations.DamageType) int.Parse(splitString[1]);
            }
            else if (splitString[0] == "IntervalsPerTurn")
            {
                ability.intervalsPerTurn = int.Parse(splitString[1]);
            }
            else if (splitString[0] == "NumberOfTurnIntervals")
            {
                ability.numberOfTurnIntervals = int.Parse(splitString[1]);
            }

            line = reader.ReadLine();
        }

        return(ability);
    }