Exemplo n.º 1
0
        public RoverNavMovement()
        {
            movementMethodDictionary = new Dictionary <Movement, Action>
            {
                { Movement.left, () => leftMoveDictionary[CardinalDirection].Invoke() },
                { Movement.right, () => leftMoveDictionary[CardinalDirection].Invoke() },
                { Movement.Forward, () => leftMoveDictionary[CardinalDirection].Invoke() }
            };

            leftMoveDictionary = new Dictionary <CardinalDirection, Action>
            {
                { CardinalDirection.North, () => CardinalDirection = CardinalDirection.North },
                { CardinalDirection.East, () => CardinalDirection = CardinalDirection.East },
                { CardinalDirection.South, () => CardinalDirection = CardinalDirection.South },
                { CardinalDirection.West, () => CardinalDirection = CardinalDirection.West }
            };

            rightMoveDictionary = new Dictionary <CardinalDirection, Action>
            {
                { CardinalDirection.North, () => CardinalDirection = CardinalDirection.North },
                { CardinalDirection.East, () => CardinalDirection = CardinalDirection.East },
                { CardinalDirection.South, () => CardinalDirection = CardinalDirection.South },
                { CardinalDirection.West, () => CardinalDirection = CardinalDirection.West }
            };

            forwardMoveDictionary = new Dictionary <CardinalDirection, Action>
            {
                { CardinalDirection.North, () => { Position = new MovementPoints(Position.X, Position.Y + 1); } },
                { CardinalDirection.North, () => { Position = new MovementPoints(Position.X + 1, Position.Y); } },
                { CardinalDirection.North, () => { Position = new MovementPoints(Position.X, Position.Y - 1); } },
                { CardinalDirection.North, () => { Position = new MovementPoints(Position.X - 1, Position.Y); } }
            };
        }
 public BehaviorFinalizePlots(Building building)
     : base()
 {
     Building = building;
     MovementPoints.Add(Building.SafeMovementPoint);
     Criteria += () => Building.CanActivate;
 }
Exemplo n.º 3
0
 public UnitRecord(UnitRecord unitRecord, StackId stackId)
 {
     Id             = unitRecord.Id;
     UnitTypeId     = unitRecord.UnitTypeId;
     StackId        = stackId;
     MovementPoints = unitRecord.MovementPoints;
 }
Exemplo n.º 4
0
        public bool IsValid(MovementPoints aPoint)
        {
            var isValidX = aPoint.X >= 0 && aPoint.X <= size.Width;
            var isValidY = aPoint.Y >= 0 && aPoint.Y <= size.Height;

            return(isValidX && isValidY);
        }
Exemplo n.º 5
0
 public UnitRecord(UnitRecord unitRecord, MovementPoints movementPoints)
 {
     Id             = unitRecord.Id;
     UnitTypeId     = unitRecord.UnitTypeId;
     StackId        = unitRecord.StackId;
     MovementPoints = movementPoints;
 }
Exemplo n.º 6
0
        private static void throwDeployException(LandingSurface aLandingSurface, MovementPoints aPoint)
        {
            var size             = aLandingSurface.GetSize();
            var exceptionMessage = string.Format("Deploy failed at point ({0},{1}). Landing zone size is {2} x {3}",
                                                 aPoint.X, aPoint.Y, size.Width, size.Height);

            throw new NotImplementedException(exceptionMessage);
        }
Exemplo n.º 7
0
 /// <summary>
 /// This occurs only once to initalize any variable only after the Criteria check occurs and passes.
 /// </summary>
 public virtual void Initalize()
 {
     StartMovement      = new Movement(MovementPoints.ToArray(), 2f, name: String.Format("StartMovement({0})", Type.ToString()));
     EndMovement        = new Movement(MovementPoints.ToArray().Reverse().ToArray(), 2f, name: String.Format("EndMovement({0})", Type.ToString()));
     _interactionObject = null;
     IsDone             = false;
     Initalized         = true;
     GarrisonBase.Debug("Behavior {0} has been initalized", Type);
 }
        public BehaviorMissionComplete()
            : base()
        {
            if (Character.Player.MinimapZoneText != "Town Hall" || CommandTable == null)
            {
                MovementPoints.Insert(0, MovementCache.GarrisonEntrance);
            }

            Criteria += () => BaseSettings.CurrentSettings.BehaviorMissionComplete && GarrisonManager.CompletedMissions.Count > 0;
        }
Exemplo n.º 9
0
        public BehaviorSalvage()
            : base()
        {
            Building = GarrisonManager.Buildings[BuildingType.SalvageYard];
            MovementPoints.Add(Building.EntranceMovementPoint);

            InteractionEntryId = Building.WorkOrderNpcEntryId;
            Criteria          += () => BaseSettings.CurrentSettings.BehaviorSalvaging &&
                                 !Building.CanActivate && !Building.IsBuilding &&
                                 SalvagableGoods.Count > 0;
        }
Exemplo n.º 10
0
        public override void Initalize()
        {
            TargetManager.ShouldKill = false;
            TargetManager.ShouldLoot = false;
            MovementPoints.Add(GarrisonManager.Buildings[BuildingType.EnchantersStudy].SafeMovementPoint);
            MovementPoints.Add(GarrisonManager.Buildings[BuildingType.EnchantersStudy].EntranceMovementPoint);
            InteractionEntryId = GarrisonManager.DisenchantingEntryId;

            _movement = null;
            base.Initalize();
        }
Exemplo n.º 11
0
        public void Deploy(LandingSurface aLandingSurface, MovementPoints aPoint, CardinalDirection aDirection)
        {
            if (aLandingSurface.IsValid(aPoint))
            {
                Position          = aPoint;
                CardinalDirection = aDirection;
                isDeployed        = true;
                return;
            }

            throwDeployException(aLandingSurface, aPoint);
        }
Exemplo n.º 12
0
        public UnitRecord(int unitId, int stackId)
        {
            Id         = GameDataSequences.GetNextSequence("Unit");
            UnitTypeId = new UnitTypeId(unitId);
            StackId    = new StackId(stackId);

            var gameConfigCache = CallContext <GameConfigCache> .GetData("GameConfigCache");

            var unit = gameConfigCache.GetUnitConfigById(unitId);

            MovementPoints = new MovementPoints((float)unit.MovementPoints);
        }
        public BehaviorMissionStartup()
            : base()
        {
            if (Character.Player.MinimapZoneText != "Town Hall" || CommandTable == null)
            {
                MovementPoints.Insert(0, MovementCache.GarrisonEntrance);
            }

            Criteria += () =>
                        BaseSettings.CurrentSettings.BehaviorMissionStart &&
                        BaseSettings.CurrentSettings.BehaviorMissionComplete &&
                        GarrisonManager.AvailableMissionIds.Count > 0 &&
                        GarrisonManager.CurrentActiveFollowers <= GarrisonManager.MaxActiveFollowers;
        }
Exemplo n.º 14
0
 public void ScanMovementPoints()
 {
     GameObject[] PointsGameObjects = GameObject.FindGameObjectsWithTag(TagManager.GetTag(TagType.MovingPoint));
     for (int i = 0; i < MovementPoints.Length; i++)
     {
         for (int j = 0; j < MovementPoints[i].EnemyTransforms.Length; j++)
         {
             MovementPoints TempMovementPoint = PointsGameObjects[i].GetComponent <MovementPoints>();
             MovementPoints[i].EnemyTransforms[j].Position = TempMovementPoint.Enemyes[j].transform.position;
             MovementPoints[i].EnemyTransforms[j].Rotation = TempMovementPoint.Enemyes[j].transform.rotation;
             MovementPoints[i].EnemyTransforms[j].Scale    = TempMovementPoint.Enemyes[j].transform.localScale;
         }
     }
 }
Exemplo n.º 15
0
        protected Behavior(WoWPoint[] movepoints, int interactionEntryId, Func <bool> criteria = null)
        {
            MovementPoints.AddRange(movepoints);
            InteractionEntryId = interactionEntryId;

            if (criteria != null)
            {
                _criteria = criteria;
            }
            else
            {
                _criteria += () => true;
            }
        }
        private Commands ParseRoverDeployCommand(string toParse)
        {
            var arguments = toParse.Split(' ');

            var deployX = int.Parse(arguments[0]);
            var deployY = int.Parse(arguments[1]);

            var directionSignifier = arguments[2][0];
            var deployDirection    = cardinalDirectionDictionary[directionSignifier];

            var deployPoint = new MovementPoints(deployX, deployY);

            var populatedCommand = roverDeployCommandFactory(deployPoint, deployDirection);

            return(populatedCommand);
        }
Exemplo n.º 17
0
        public GameFightMinimalStats GetFightMinimalStats()
        {
            return(new GameFightMinimalStats()
            {
                actionPoints = ActionPoints.TotalInContext(),
                movementPoints = MovementPoints.TotalInContext(),
                maxActionPoints = ActionPoints.Total(),
                maxMovementPoints = MovementPoints.Total(),

                airElementReduction = AirReduction.TotalInContext(),
                airElementResistPercent = AirResistPercent.TotalInContext(),
                baseMaxLifePoints = (uint)MaxLifePoints,
                lifePoints = (uint)CurrentLifePoints,
                maxLifePoints = (uint)CurrentMaxLifePoints,
                invisibilityState = (sbyte)InvisibilityState,
                dodgePALostProbability = (ushort)DodgePAProbability.TotalInContext(),
                dodgePMLostProbability = (ushort)DodgePMProbability.TotalInContext(),
                pvpAirElementReduction = PvPAirReduction.TotalInContext(),
                pvpAirElementResistPercent = PvPAirResistPercent.TotalInContext(),
                pvpEarthElementReduction = PvPEarthReduction.TotalInContext(),
                pvpEarthElementResistPercent = PvPEarthResistPercent.TotalInContext(),
                pvpFireElementReduction = PvPFireReduction.TotalInContext(),
                pvpFireElementResistPercent = PvPFireResistPercent.TotalInContext(),
                pvpNeutralElementReduction = PvPNeutralReduction.TotalInContext(),
                pvpNeutralElementResistPercent = PvPNeutralResistPercent.TotalInContext(),
                pvpWaterElementReduction = PvPWaterReduction.TotalInContext(),
                pvpWaterElementResistPercent = PvPWaterResistPercent.TotalInContext(),
                shieldPoints = (uint)ShieldPoints,
                earthElementReduction = EarthReduction.TotalInContext(),
                earthElementResistPercent = EarthResistPercent.TotalInContext(),
                fireElementResistPercent = FireResistPercent.TotalInContext(),
                waterElementResistPercent = WaterResistPercent.TotalInContext(),
                neutralElementResistPercent = NeutralResistPercent.TotalInContext(),
                fireElementReduction = FireReduction.TotalInContext(),
                neutralElementReduction = NeutralReduction.TotalInContext(),
                waterElementReduction = WaterReduction.TotalInContext(),
                summoned = Summoned,
                summoner = SummonerId,
                tackleBlock = TackleBlock.TotalInContext(),
                tackleEvade = TackleEvade.TotalInContext(),
                pushDamageFixedResist = PushDamageReduction.TotalInContext(),
                permanentDamagePercent = (uint)PermanentDamagePercent.TotalInContext(),
                fixedDamageReflection = Reflect.TotalInContext(),
                criticalDamageFixedResist = CriticalDamageReduction.TotalInContext()
            });
        }
Exemplo n.º 18
0
            /// <summary>
            /// Adds a region to the appropriate list for its type; returns the region.
            /// </summary>
            public Region Add(Region region)
            {
                switch (region)
                {
                case Region.InvasionPoint r: InvasionPoints.Add(r); break;

                case Region.EnvironmentMapPoint r: EnvironmentMapPoints.Add(r); break;

                case Region.Sound r: Sounds.Add(r); break;

                case Region.SFX r: SFX.Add(r); break;

                case Region.WindSFX r: WindSFX.Add(r); break;

                case Region.SpawnPoint r: SpawnPoints.Add(r); break;

                case Region.Message r: Messages.Add(r); break;

                case Region.PatrolRoute r: PatrolRoutes.Add(r); break;

                case Region.MovementPoint r: MovementPoints.Add(r); break;

                case Region.WarpPoint r: WarpPoints.Add(r); break;

                case Region.ActivationArea r: ActivationAreas.Add(r); break;

                case Region.Event r: Events.Add(r); break;

                case Region.Logic r: Logic.Add(r); break;

                case Region.EnvironmentMapEffectBox r: EnvironmentMapEffectBoxes.Add(r); break;

                case Region.WindArea r: WindAreas.Add(r); break;

                case Region.MufflingBox r: MufflingBoxes.Add(r); break;

                case Region.MufflingPortal r: MufflingPortals.Add(r); break;

                case Region.Other r: Others.Add(r); break;

                default:
                    throw new ArgumentException($"Unrecognized type {region.GetType()}.", nameof(region));
                }
                return(region);
            }
Exemplo n.º 19
0
 private void ScanMovingPoints(GameObject[] gameObjects)
 {
     for (int i = 0; i < gameObjects.Length; i++)
     {
         MovementPoints[i].Transform.Position = gameObjects[i].transform.position;
         MovementPoints[i].Transform.Rotation = gameObjects[i].transform.rotation;
         MovementPoints[i].Transform.Scale    = gameObjects[i].transform.localScale;
         MovementPoints TempMovementPoint = gameObjects[i].GetComponent <MovementPoints>();
         MovementPoints[i].NeedToRotate      = TempMovementPoint.NeedToRotate;
         MovementPoints[i].NeedToCountEnemy  = TempMovementPoint.NeedToCountEnemy;
         MovementPoints[i].NeedToChangeSpeed = TempMovementPoint.NeedToChangeSpeed;
         MovementPoints[i].NewSpeed          = TempMovementPoint.NewSpeed;
         MovementPoints[i].RotationVector    = TempMovementPoint.RotationVector;
         MovementPoints[i].PointNum          = TempMovementPoint.PointNum;
         MovementPoints[i].IsFinalPoint      = TempMovementPoint.IsFinalPoint;
         MovementPoints[i].EnemyTransforms   = new CustomTransform[TempMovementPoint.Enemyes.Length];
     }
 }
 public RoverDeployCommand(MovementPoints aPoint, CardinalDirection aDirection)
 {
     DeployPoint     = aPoint;
     DeployDirection = aDirection;
 }
Exemplo n.º 21
0
    public MovementPoints[] BuildLvlAndReturnMovementPoints(LevelCreator lvl)
    {
        for (int i = 0; i < lvl.Buildings1Transforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["PrepearedBuilding1"]), lvl.Buildings1Transforms[i].Position, lvl.Buildings1Transforms[i].Rotation).transform.localScale = lvl.Buildings1Transforms[i].Scale;
        }
        for (int i = 0; i < lvl.Buildings2Transforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["PrepearedBuilding2"]), lvl.Buildings2Transforms[i].Position, lvl.Buildings2Transforms[i].Rotation).transform.localScale = lvl.Buildings2Transforms[i].Scale;
        }
        for (int i = 0; i < lvl.BuildingCubeTransforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["BuildingCube"]), lvl.BuildingCubeTransforms[i].Position, lvl.BuildingCubeTransforms[i].Rotation).transform.localScale = lvl.BuildingCubeTransforms[i].Scale;
        }
        MovementPoints[] TempMovementPoints = new MovementPoints[lvl.MovementPoints.Length];
        for (int i = 0; i < lvl.MovementPoints.Length; i++)
        {
            GameObject TempGameObject = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["MovingPoint"]), lvl.MovementPoints[i].Transform.Position, lvl.MovementPoints[i].Transform.Rotation);
            TempGameObject.transform.localScale = lvl.MovementPoints[i].Transform.Scale;
            TempMovementPoints[i] = TempGameObject.GetComponent <MovementPoints>();
            TempMovementPoints[i].RotationVector    = lvl.MovementPoints[i].RotationVector;
            TempMovementPoints[i].NewSpeed          = lvl.MovementPoints[i].NewSpeed;
            TempMovementPoints[i].PointNum          = lvl.MovementPoints[i].PointNum;
            TempMovementPoints[i].NeedToRotate      = lvl.MovementPoints[i].NeedToRotate;
            TempMovementPoints[i].NeedToCountEnemy  = lvl.MovementPoints[i].NeedToCountEnemy;
            TempMovementPoints[i].NeedToChangeSpeed = lvl.MovementPoints[i].NeedToChangeSpeed;
            TempMovementPoints[i].IsFinalPoint      = lvl.MovementPoints[i].IsFinalPoint;
            TempMovementPoints[i].Enemyes           = new GameObject[lvl.MovementPoints[i].EnemyTransforms.Length];
        }


        for (int i = 0; i < lvl.SimpleEnemyTransforms.Length; i++)
        {
            for (int j = 0; j < lvl.MovementPoints.Length; j++)
            {
                for (int k = 0; k < lvl.MovementPoints[j].EnemyTransforms.Length; k++)
                {
                    if (lvl.MovementPoints[j].EnemyTransforms[k].Position == lvl.SimpleEnemyTransforms[i].Position)
                    {
                        TempMovementPoints[j].Enemyes[k] = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["EnemyPrefabWithRagdoll"]), lvl.SimpleEnemyTransforms[i].Position, lvl.SimpleEnemyTransforms[i].Rotation);
                        TempMovementPoints[j].Enemyes[k].transform.localScale = lvl.SimpleEnemyTransforms[i].Scale;
                    }
                }
            }
        }
        for (int i = 0; i < lvl.ThrowingEnemyTransforms.Length; i++)
        {
            //Instantiate(Resources.Load<GameObject>(PrefabAssetPath.LevelParts["EnemyThrowingBombs"]), ThrowingEnemyTransforms[i].Position, ThrowingEnemyTransforms[i].Rotation).transform.localScale = ThrowingEnemyTransforms[i].Scale;
            for (int j = 0; j < lvl.MovementPoints.Length; j++)
            {
                for (int k = 0; k < lvl.MovementPoints[j].EnemyTransforms.Length; k++)
                {
                    if (lvl.MovementPoints[j].EnemyTransforms[k].Position == lvl.ThrowingEnemyTransforms[i].Position)
                    {
                        TempMovementPoints[j].Enemyes[k] = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["EnemyThrowingBombs"]), lvl.ThrowingEnemyTransforms[i].Position, lvl.ThrowingEnemyTransforms[i].Rotation);
                        TempMovementPoints[j].Enemyes[k].transform.localScale = lvl.ThrowingEnemyTransforms[i].Scale;
                    }
                }
            }
        }
        PlayerMovementPoints = new MovementPoints[TempMovementPoints.Length];
        for (int i = 0; i < PlayerMovementPoints.Length; i++)
        {
            for (int j = 0; j < TempMovementPoints.Length; j++)
            {
                if (TempMovementPoints[j].PointNum == i)
                {
                    PlayerMovementPoints[i] = TempMovementPoints[j];
                }
            }
        }
        return(PlayerMovementPoints);
    }
Exemplo n.º 22
0
 protected Behavior(WoWPoint movepoint)
 {
     MovementPoints.Add(movepoint);
 }
Exemplo n.º 23
0
        public CharacterCharacteristicsInformations GetCharacterCharacteristics(Character character)
        {
            ulong expFloor     = ExperienceRecord.GetExperienceForLevel(character.Level).Player;
            ulong expNextFloor = ExperienceRecord.GetExperienceForNextLevel(character.Level).Player;

            CharacterCharacteristicsInformations informations = new CharacterCharacteristicsInformations()
            {
                actionPoints            = ActionPoints.GetBaseCharacteristic(),
                actionPointsCurrent     = ActionPoints.TotalInContext(),
                additionnalPoints       = 0,
                agility                 = Agility.GetBaseCharacteristic(),
                airDamageBonus          = AirDamageBonus.GetBaseCharacteristic(),
                airElementReduction     = AirReduction.GetBaseCharacteristic(),
                airElementResistPercent = AirResistPercent.GetBaseCharacteristic(),
                alignmentInfos          = character.Record.Alignment.GetActorExtendedAlignement(),
                allDamagesBonus         = AllDamagesBonus.GetBaseCharacteristic(),
                chance = Chance.GetBaseCharacteristic(),
                criticalDamageBonus          = CriticalDamageBonus.GetBaseCharacteristic(),
                criticalDamageReduction      = CriticalDamageReduction.GetBaseCharacteristic(),
                criticalHit                  = CriticalHit.GetBaseCharacteristic(),
                criticalHitWeapon            = CriticalHitWeapon,
                criticalMiss                 = Characteristic.Zero().GetBaseCharacteristic(),
                damagesBonusPercent          = DamagesBonusPercent.GetBaseCharacteristic(),
                dodgePALostProbability       = DodgePAProbability.GetBaseCharacteristic(),
                dodgePMLostProbability       = DodgePMProbability.GetBaseCharacteristic(),
                earthDamageBonus             = EarthDamageBonus.GetBaseCharacteristic(),
                earthElementReduction        = EarthReduction.GetBaseCharacteristic(),
                earthElementResistPercent    = EarthResistPercent.GetBaseCharacteristic(),
                pvpEarthElementReduction     = PvPEarthReduction.GetBaseCharacteristic(),
                pvpEarthElementResistPercent = PvPEarthResistPercent.GetBaseCharacteristic(),
                fireDamageBonus              = FireDamageBonus.GetBaseCharacteristic(),
                fireElementReduction         = FireReduction.GetBaseCharacteristic(),
                fireElementResistPercent     = FireResistPercent.GetBaseCharacteristic(),
                pvpFireElementReduction      = PvPFireReduction.GetBaseCharacteristic(),
                pvpFireElementResistPercent  = PvPFireResistPercent.GetBaseCharacteristic(),
                glyphBonusPercent            = GlyphBonusPercent.GetBaseCharacteristic(),
                healBonus                      = HealBonus.GetBaseCharacteristic(),
                initiative                     = new CharacterBaseCharacteristic((short)FormulasProvider.Instance.BaseInitiative(this), 0, Initiative.Total(), 0, 0),
                intelligence                   = Intelligence.GetBaseCharacteristic(),
                kamas                          = character.Record.Kamas,
                lifePoints                     = (uint)LifePoints,
                maxEnergyPoints                = MaxEnergyPoints,
                maxLifePoints                  = (uint)MaxLifePoints,
                movementPoints                 = MovementPoints.GetBaseCharacteristic(),
                movementPointsCurrent          = MovementPoints.TotalInContext(),
                PMAttack                       = PMAttack.GetBaseCharacteristic(),
                PAAttack                       = PAAttack.GetBaseCharacteristic(),
                pvpAirElementReduction         = PvPAirReduction.GetBaseCharacteristic(),
                pvpAirElementResistPercent     = PvPAirResistPercent.GetBaseCharacteristic(),
                pvpNeutralElementReduction     = PvPNeutralReduction.GetBaseCharacteristic(),
                pvpNeutralElementResistPercent = PvPNeutralResistPercent.GetBaseCharacteristic(),
                pvpWaterElementReduction       = PvPWaterReduction.GetBaseCharacteristic(),
                pvpWaterElementResistPercent   = PvPWaterResistPercent.GetBaseCharacteristic(),
                energyPoints                   = Energy,
                experience                     = character.Experience,
                experienceLevelFloor           = expFloor,
                experienceNextLevelFloor       = expNextFloor,
                neutralDamageBonus             = NeutralDamageBonus.GetBaseCharacteristic(),
                neutralElementReduction        = NeutralReduction.GetBaseCharacteristic(),
                neutralElementResistPercent    = NeutralResistPercent.GetBaseCharacteristic(),
                tackleEvade                    = TackleEvade.GetBaseCharacteristic(),
                tackleBlock                    = TackleBlock.GetBaseCharacteristic(),
                range                          = Range.GetBaseCharacteristic(),
                waterElementReduction          = WaterReduction.GetBaseCharacteristic(),
                waterDamageBonus               = WaterDamageBonus.GetBaseCharacteristic(),
                waterElementResistPercent      = WaterResistPercent.GetBaseCharacteristic(),
                reflect                        = Reflect.GetBaseCharacteristic(),
                permanentDamagePercent         = PermanentDamagePercent.GetBaseCharacteristic(),
                prospecting                    = Prospecting.GetBaseCharacteristic(),
                pushDamageBonus                = PushDamageBonus.GetBaseCharacteristic(),
                pushDamageReduction            = PushDamageReduction.GetBaseCharacteristic(),
                runeBonusPercent               = RuneBonusPercent.GetBaseCharacteristic(),
                spellModifications             = new CharacterSpellModification[0],
                spellsPoints                   = character.Record.SpellPoints,
                statsPoints                    = character.Record.StatsPoints,
                vitality                       = Vitality.GetBaseCharacteristic(),
                strength                       = Strength.GetBaseCharacteristic(),
                summonableCreaturesBoost       = SummonableCreaturesBoost.GetBaseCharacteristic(),
                trapBonus                      = TrapBonus.GetBaseCharacteristic(),
                trapBonusPercent               = TrapBonusPercent.GetBaseCharacteristic(),
                weaponDamagesBonusPercent      = WeaponDamagesBonusPercent.GetBaseCharacteristic(),
                wisdom                         = Wisdom.GetBaseCharacteristic(),
                probationTime                  = 0,
            };

            return(informations);
        }
Exemplo n.º 24
0
 public override void Serialize(IDataWriter writer)
 {
     writer.WriteVarUhLong(Experience);
     writer.WriteVarUhLong(ExperienceLevelFloor);
     writer.WriteVarUhLong(ExperienceNextLevelFloor);
     writer.WriteVarUhLong(ExperienceBonusLimit);
     writer.WriteVarUhLong(Kamas);
     writer.WriteVarUhShort(StatsPoints);
     writer.WriteVarUhShort(AdditionnalPoints);
     writer.WriteVarUhShort(SpellsPoints);
     AlignmentInfos.Serialize(writer);
     writer.WriteVarUhInt(LifePoints);
     writer.WriteVarUhInt(MaxLifePoints);
     writer.WriteVarUhShort(EnergyPoints);
     writer.WriteVarUhShort(MaxEnergyPoints);
     writer.WriteVarShort(ActionPointsCurrent);
     writer.WriteVarShort(MovementPointsCurrent);
     Initiative.Serialize(writer);
     Prospecting.Serialize(writer);
     ActionPoints.Serialize(writer);
     MovementPoints.Serialize(writer);
     Strength.Serialize(writer);
     Vitality.Serialize(writer);
     Wisdom.Serialize(writer);
     Chance.Serialize(writer);
     Agility.Serialize(writer);
     Intelligence.Serialize(writer);
     Range.Serialize(writer);
     SummonableCreaturesBoost.Serialize(writer);
     Reflect.Serialize(writer);
     CriticalHit.Serialize(writer);
     writer.WriteVarUhShort(CriticalHitWeapon);
     CriticalMiss.Serialize(writer);
     HealBonus.Serialize(writer);
     AllDamagesBonus.Serialize(writer);
     WeaponDamagesBonusPercent.Serialize(writer);
     DamagesBonusPercent.Serialize(writer);
     TrapBonus.Serialize(writer);
     TrapBonusPercent.Serialize(writer);
     GlyphBonusPercent.Serialize(writer);
     RuneBonusPercent.Serialize(writer);
     PermanentDamagePercent.Serialize(writer);
     TackleBlock.Serialize(writer);
     TackleEvade.Serialize(writer);
     PAAttack.Serialize(writer);
     PMAttack.Serialize(writer);
     PushDamageBonus.Serialize(writer);
     CriticalDamageBonus.Serialize(writer);
     NeutralDamageBonus.Serialize(writer);
     EarthDamageBonus.Serialize(writer);
     WaterDamageBonus.Serialize(writer);
     AirDamageBonus.Serialize(writer);
     FireDamageBonus.Serialize(writer);
     DodgePALostProbability.Serialize(writer);
     DodgePMLostProbability.Serialize(writer);
     NeutralElementResistPercent.Serialize(writer);
     EarthElementResistPercent.Serialize(writer);
     WaterElementResistPercent.Serialize(writer);
     AirElementResistPercent.Serialize(writer);
     FireElementResistPercent.Serialize(writer);
     NeutralElementReduction.Serialize(writer);
     EarthElementReduction.Serialize(writer);
     WaterElementReduction.Serialize(writer);
     AirElementReduction.Serialize(writer);
     FireElementReduction.Serialize(writer);
     PushDamageReduction.Serialize(writer);
     CriticalDamageReduction.Serialize(writer);
     PvpNeutralElementResistPercent.Serialize(writer);
     PvpEarthElementResistPercent.Serialize(writer);
     PvpWaterElementResistPercent.Serialize(writer);
     PvpAirElementResistPercent.Serialize(writer);
     PvpFireElementResistPercent.Serialize(writer);
     PvpNeutralElementReduction.Serialize(writer);
     PvpEarthElementReduction.Serialize(writer);
     PvpWaterElementReduction.Serialize(writer);
     PvpAirElementReduction.Serialize(writer);
     PvpFireElementReduction.Serialize(writer);
     MeleeDamageDonePercent.Serialize(writer);
     MeleeDamageReceivedPercent.Serialize(writer);
     RangedDamageDonePercent.Serialize(writer);
     RangedDamageReceivedPercent.Serialize(writer);
     WeaponDamageDonePercent.Serialize(writer);
     WeaponDamageReceivedPercent.Serialize(writer);
     SpellDamageDonePercent.Serialize(writer);
     SpellDamageReceivedPercent.Serialize(writer);
     writer.WriteShort((short)SpellModifications.Count);
     foreach (var x in SpellModifications)
     {
         x.Serialize(writer);
     }
     writer.WriteInt(ProbationTime);
 }
Exemplo n.º 25
0
    public void BuildScene()
    {
        for (int i = 0; i < Buildings1Transforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["PrepearedBuilding1"]), Buildings1Transforms[i].Position, Buildings1Transforms[i].Rotation).transform.localScale = Buildings1Transforms[i].Scale;
        }
        for (int i = 0; i < Buildings2Transforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["PrepearedBuilding2"]), Buildings2Transforms[i].Position, Buildings2Transforms[i].Rotation).transform.localScale = Buildings2Transforms[i].Scale;
        }
        for (int i = 0; i < BuildingCubeTransforms.Length; i++)
        {
            Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["BuildingCube"]), BuildingCubeTransforms[i].Position, BuildingCubeTransforms[i].Rotation).transform.localScale = BuildingCubeTransforms[i].Scale;
        }
        MovementPoints[] TempMovementPoints = new MovementPoints[MovementPoints.Length];
        for (int i = 0; i < MovementPoints.Length; i++)
        {
            GameObject TempGameObject = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["MovingPoint"]), MovementPoints[i].Transform.Position, MovementPoints[i].Transform.Rotation);
            TempGameObject.transform.localScale = MovementPoints[i].Transform.Scale;
            TempMovementPoints[i] = TempGameObject.GetComponent <MovementPoints>();
            TempMovementPoints[i].RotationVector    = MovementPoints[i].RotationVector;
            TempMovementPoints[i].NewSpeed          = MovementPoints[i].NewSpeed;
            TempMovementPoints[i].PointNum          = MovementPoints[i].PointNum;
            TempMovementPoints[i].NeedToRotate      = MovementPoints[i].NeedToRotate;
            TempMovementPoints[i].NeedToCountEnemy  = MovementPoints[i].NeedToCountEnemy;
            TempMovementPoints[i].NeedToChangeSpeed = MovementPoints[i].NeedToChangeSpeed;
            TempMovementPoints[i].IsFinalPoint      = MovementPoints[i].IsFinalPoint;
            TempMovementPoints[i].Enemyes           = new GameObject[MovementPoints[i].EnemyTransforms.Length];
        }


        for (int i = 0; i < SimpleEnemyTransforms.Length; i++)
        {
            for (int j = 0; j < MovementPoints.Length; j++)
            {
                for (int k = 0; k < MovementPoints[j].EnemyTransforms.Length; k++)
                {
                    if (MovementPoints[j].EnemyTransforms[k].Position == SimpleEnemyTransforms[i].Position)
                    {
                        TempMovementPoints[j].Enemyes[k] = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["EnemyPrefabWithRagdoll"]), SimpleEnemyTransforms[i].Position, SimpleEnemyTransforms[i].Rotation);
                        TempMovementPoints[j].Enemyes[k].transform.localScale = SimpleEnemyTransforms[i].Scale;
                    }
                }
            }
        }
        for (int i = 0; i < ThrowingEnemyTransforms.Length; i++)
        {
            //Instantiate(Resources.Load<GameObject>(PrefabAssetPath.LevelParts["EnemyThrowingBombs"]), ThrowingEnemyTransforms[i].Position, ThrowingEnemyTransforms[i].Rotation).transform.localScale = ThrowingEnemyTransforms[i].Scale;
            for (int j = 0; j < MovementPoints.Length; j++)
            {
                for (int k = 0; k < MovementPoints[j].EnemyTransforms.Length; k++)
                {
                    if (MovementPoints[j].EnemyTransforms[k].Position == ThrowingEnemyTransforms[i].Position)
                    {
                        TempMovementPoints[j].Enemyes[k] = Instantiate(Resources.Load <GameObject>(PrefabAssetPath.LevelParts["EnemyThrowingBombs"]), ThrowingEnemyTransforms[i].Position, ThrowingEnemyTransforms[i].Rotation);
                        TempMovementPoints[j].Enemyes[k].transform.localScale = ThrowingEnemyTransforms[i].Scale;
                    }
                }
            }
        }
    }
Exemplo n.º 26
0
            internal override Region ReadEntry(BinaryReaderEx br)
            {
                RegionType type = br.GetEnum32 <RegionType>(br.Position + 8);

                switch (type)
                {
                case RegionType.InvasionPoint:
                    return(InvasionPoints.EchoAdd(new Region.InvasionPoint(br)));

                case RegionType.EnvironmentMapPoint:
                    return(EnvironmentMapPoints.EchoAdd(new Region.EnvironmentMapPoint(br)));

                case RegionType.Sound:
                    return(Sounds.EchoAdd(new Region.Sound(br)));

                case RegionType.SFX:
                    return(SFX.EchoAdd(new Region.SFX(br)));

                case RegionType.WindSFX:
                    return(WindSFX.EchoAdd(new Region.WindSFX(br)));

                case RegionType.SpawnPoint:
                    return(SpawnPoints.EchoAdd(new Region.SpawnPoint(br)));

                case RegionType.Message:
                    return(Messages.EchoAdd(new Region.Message(br)));

                case RegionType.PatrolRoute:
                    return(PatrolRoutes.EchoAdd(new Region.PatrolRoute(br)));

                case RegionType.MovementPoint:
                    return(MovementPoints.EchoAdd(new Region.MovementPoint(br)));

                case RegionType.WarpPoint:
                    return(WarpPoints.EchoAdd(new Region.WarpPoint(br)));

                case RegionType.ActivationArea:
                    return(ActivationAreas.EchoAdd(new Region.ActivationArea(br)));

                case RegionType.Event:
                    return(Events.EchoAdd(new Region.Event(br)));

                case RegionType.Logic:
                    return(Logic.EchoAdd(new Region.Logic(br)));

                case RegionType.EnvironmentMapEffectBox:
                    return(EnvironmentMapEffectBoxes.EchoAdd(new Region.EnvironmentMapEffectBox(br)));

                case RegionType.WindArea:
                    return(WindAreas.EchoAdd(new Region.WindArea(br)));

                case RegionType.MufflingBox:
                    return(MufflingBoxes.EchoAdd(new Region.MufflingBox(br)));

                case RegionType.MufflingPortal:
                    return(MufflingPortals.EchoAdd(new Region.MufflingPortal(br)));

                case RegionType.Other:
                    return(Others.EchoAdd(new Region.Other(br)));

                default:
                    throw new NotImplementedException($"Unsupported region type: {type}");
                }
            }
Exemplo n.º 27
0
        public static void GeneralFighterAI(MainGameWindow main, bool SingleTurn, Player ai, Map map)
        {
            //TODO: Seperate code, which logs details from code which decides what to do
            Troop                troop          = ai.troop;
            var                  enemies        = ai.enemies;
            ActionPoint          actionPoints   = ai.actionPoints;
            MovementPoints       movementPoints = ai.movementPoints;
            DistanceGraphCreator distanceGraph  = new DistanceGraphCreator(ai, troop.Position.X, troop.Position.Y, map, true);
            Thread               path           = new Thread(distanceGraph.CreateGraph);

            path.Start();
            path.Join();

            int damageDealt = 0;
            int dodged      = 0;

            while (actionPoints.Value > 0)
            {
                Point playerPos = enemies[0].troop.Position;

                //If the weapon is ranged and empty first load the weapon
                if (troop.activeWeapon.Attacks() == 0 && troop.activeWeapon is RangedWeapon w)
                {
                    Ammo selectedAmmo = w.GetSelectedAmmo();
                    foreach (var ammo in w.Ammo)
                    {
                        if (selectedAmmo is null || selectedAmmo.damage.Value < ammo.damage.Value)
                        {
                            ammo.Select(w);
                            selectedAmmo = ammo;
                        }
                    }
                }

                //Check if it can attack player
                int playerDistance = AIUtility.Distance(playerPos, troop.Position);
                int attacks        = troop.activeWeapon.Attacks();
                if (playerDistance <= troop.activeWeapon.range && attacks > 0)
                {
                    //Attack
                    var(damage, killed, hit) = main.Attack(ai, enemies[0]);
                    damageDealt += damage;
                    if (!hit)
                    {
                        dodged++;
                    }

                    if (killed)
                    {
                        map.overlayObjects.Add(new OverlayText(enemies[0].troop.Position.X * MapCreator.fieldSize, enemies[0].troop.Position.Y * MapCreator.fieldSize, Color.Red, $"-{damageDealt}"));
                        main.PlayerDied($"You have been killed by {ai.Name}!");
                        break;
                    }
                    actionPoints.RawValue--;
                    troop.activeWeapon.UseWeapon(enemies[0], main);
                    continue;
                }
                else if (troop.weapons.Exists(t => t.range >= playerDistance && t.Attacks() > 0))
                {
                    //Change weapon
                    Weapon best = troop.weapons.FindAll(t => t.range >= playerDistance)
                                  .Aggregate((t1, t2) => t1.range > t2.range ? t1 : t2);
                    troop.activeWeapon = best;
                    continue;
                }

                //Generate map of left value
                double[,] movementCosts = new double[map.width, map.height];
                for (int x = 0; x <= movementCosts.GetUpperBound(0); x++)
                {
                    for (int y = 0; y <= movementCosts.GetUpperBound(1); y++)
                    {
                        movementCosts[x, y] = -1;
                    }
                }

                //Find closest field to player
                Point closestField = new Point(-1, -1);
                try
                {
                    closestField = AIUtility.FindClosestField(distanceGraph, playerPos, movementPoints.Value, map,
                                                              (List <(Point point, double cost, double height)> list) => {
                        list.Sort((o1, o2) => {
                            double diffCost   = o1.cost - o2.cost;
                            double heightDiff = o1.height - o2.height;
                            if (Math.Abs(diffCost) >= 1)     //assume that using the weapon costs 1 action point
                            {
                                return(diffCost < 0 ? -1 : 1);
                            }
                            else if (heightDiff != 0)
                            {
                                return(diffCost < 0 ? -1 : 1);
                            }
                            return(0);
                        });
                        return(list.First().point);
                    });
                }