/// <summary> /// Loads the DropGold instruction for a given mover. /// </summary> /// <param name="mover">Mover</param> /// <param name="dropGoldInstruction">DropGold instruction</param> private void LoadDropGold(MoverData mover, Instruction dropGoldInstruction) { if (dropGoldInstruction == null) { return; } if (dropGoldInstruction.Parameters.Count < 2) { this._logger.LogWarning($"Cannot load 'DropGold' instruction for mover {mover.Name}. Reason: Missing parameters."); return; } if (!int.TryParse(dropGoldInstruction.Parameters.ElementAt(0).ToString(), out int minGold)) { this._logger.LogWarning($"Cannot load min gold amount for mover {mover.Name}."); } if (!int.TryParse(dropGoldInstruction.Parameters.ElementAt(1).ToString(), out int maxGold)) { this._logger.LogWarning($"Cannot load max gold amount for mover {mover.Name}."); } mover.DropGoldMin = minGold; mover.DropGoldMax = maxGold; }
void Start() { travelData = new TravelData(); moverData = GetComponent <MoverData>(); duelData = GetComponent <DuelData>(); healthData = GetComponent <Health>(); }
public void SetMovingData(MoverData data) { if (data) { if (!mover) { mover = GetComponent <Mover>(); if (!mover) { mover = gameObject.AddComponent <Mover>(); } } mover.useRadius = true; mover.speed = data.speed; mover.startRadius = data.startRadius; mover.endRadius = data.endRadius; mover.randomized = data.randomRadian; } else { if (mover) { mover.moving = false; } else { mover = GetComponent <Mover>(); if (mover) { mover.moving = false; } } } }
public void Start() { positionOffset = new Vector3(Random.Range(40f, 60f), Random.Range(-10f, 10f)); duelData = GetComponent <DuelData>(); shooterGO = new GameObject(); shooterGO.transform.SetParent(transform); shooterGO.transform.localPosition = Vector3.zero; shooter = shooterGO.AddComponent <Shooter>(); shooter.Setup(GetComponent <DamageData>(), duelData); enemyOnRange = shooterGO.GetComponent <EnemyOnRangeNoCollider>(); enemyOnRange.Setup(GetComponent <DamageData>()); moverData = GetComponent <MoverData>(); healthData = GetComponent <Health>(); if (towerTransform) { //enemyOnRange.transform.SetParent(towerTransform); enemyOnRange.transform.position = towerTransform.position; } if (anchorPoint != null) { GetComponent <MoveToPoint>().SetTarget(this.anchorPoint); } if (isHeroOrReinforcement == false) { InvokeRepeating("CheckIfThereIsOtherNonDuelingTarget", 1f, 1f); } }
public object CaptureState() { MoverData data = new MoverData(); data.position = new SerializableVector3(transform.position); data.rotation = new SerializableVector3(transform.eulerAngles); return(data); }
protected Mover(MoverData data) { Rotate = data.Rotate; Speed = data.Speed; DefaultSpeed = data.Speed; this.tickableManager = Container.Instance.Resolve <TickableManager>(); }
void Start() { healthData = GetComponent <Health>(); moverData = GetComponent <MoverData>(); animator = GetComponentInChildren <Animator>(); duelData = GetComponent <DuelData>(); isEnemy = GetComponent <AllyDuel>() == null; }
public void RestoreState(object state) { MoverData data = (MoverData)state; GetComponent <NavMeshAgent>().enabled = false; transform.position = data.position.ToVector(); transform.eulerAngles = data.rotation.ToVector(); GetComponent <NavMeshAgent>().enabled = true; }
public object CaptureState() { var objectTransform = transform; var data = new MoverData { position = new SerializableVector3(objectTransform.position), rotation = new SerializableVector3(objectTransform.eulerAngles) }; return(data); }
/// <summary> /// Loads a collection of DropItem instruction for a given mover. /// </summary> /// <param name="mover">Mover</param> /// <param name="dropItemInstructions">Collection of DropItem instructions</param> private void LoadDropItems(MoverData mover, IEnumerable <Instruction> dropItemInstructions) { if (dropItemInstructions == null) { return; } foreach (var dropItemInstruction in dropItemInstructions) { var dropItem = new DropItemData(); string dropItemName = dropItemInstruction.Parameters.ElementAt(0).ToString(); if (this._definesLoader.Defines.TryGetValue(dropItemName, out int itemId)) { dropItem.ItemId = itemId; } else { this._logger.LogWarning($"Cannot find drop item id: {dropItemName} for mover {mover.Name}."); continue; } if (long.TryParse(dropItemInstruction.Parameters.ElementAt(1).ToString(), out long probability)) { dropItem.Probability = probability; } else { this._logger.LogWarning($"Cannot read drop item probability for item {dropItemName} and mover {mover.Name}."); } if (int.TryParse(dropItemInstruction.Parameters.ElementAt(2).ToString(), out int itemMaxRefine)) { dropItem.ItemMaxRefine = itemMaxRefine; } else { this._logger.LogWarning($"Cannot read drop item refine max for item {dropItemName} and mover {mover.Name}."); } if (int.TryParse(dropItemInstruction.Parameters.ElementAt(3).ToString(), out int itemCount)) { dropItem.Count = itemCount; } else { this._logger.LogWarning($"Cannot read drop item count for item {dropItemName} and mover {mover.Name}."); } mover.DropItems.Add(dropItem); } }
/// <summary> /// Create a new monster. /// </summary> /// <param name="moverData">Monster's data</param> /// <param name="respawnRegion">Respawn region</param> /// <returns></returns> private MonsterEntity CreateMonster(MoverData moverData, IMapRespawnRegion respawnRegion) { var monster = new MonsterEntity(this); var behaviors = DependencyContainer.Instance.Resolve <BehaviorLoader>(); monster.Object = new ObjectComponent { MapId = this.Parent.Id, LayerId = this.Id, ModelId = moverData.Id, Type = WorldObjectType.Mover, Position = respawnRegion.GetRandomPosition(), Angle = RandomHelper.FloatRandom(0, 360f), Name = moverData.Name, Size = ObjectComponent.DefaultObjectSize, Spawned = true, Level = moverData.Level }; monster.Timers = new TimerComponent { NextMoveTime = RandomHelper.LongRandom(8, 20) }; monster.MovableComponent = new MovableComponent { Speed = moverData.Speed, DestinationPosition = monster.Object.Position.Clone() }; monster.Health = new HealthComponent { Hp = moverData.AddHp, Mp = moverData.AddMp, Fp = 0 }; monster.Statistics = new StatisticsComponent { Strength = (ushort)moverData.Strength, Stamina = (ushort)moverData.Stamina, Dexterity = (ushort)moverData.Dexterity, Intelligence = (ushort)moverData.Intelligence }; monster.Behavior = behaviors.MonsterBehaviors.GetBehavior(monster.Object.ModelId); monster.Region = respawnRegion; monster.Data = moverData; if (moverData.Class == MoverClassType.RANK_BOSS) { monster.Object.Size *= 2; } return(monster); }
void Start() { healthData = GetComponent <Health>(); enemyData = GetComponent <EnemyData>(); moverData = GetComponent <MoverData>(); Vector3[] randomPath = GetRandomPath(); if (randomPath == null) { return; } transform.position = randomPath[0]; iTween.MoveTo(gameObject, iTween.Hash("path", randomPath, "speed", moverData.speed, "easetype", iTween.EaseType.linear, "oncomplete", "OnComplete")); enemyData.tweenInfo.tween = GetComponent <iTween>(); enemyData.tweenInfo.startTime = Time.time; }
public static Mover Factory(MoverData data) { switch (data.Type) { case MoverType.Linear: return(new LinearMover(data)); case MoverType.Directional: return(new DirectionalMover(data)); case MoverType.Curve: return(new CurveMover(data)); case MoverType.Parabolic: return(new ParabolicMover(data)); default: throw new ArgumentOutOfRangeException(nameof(data.Type), data.Type, ""); } }
/// <summary> /// Load all flyff movers. /// </summary> private void LoadMovers() { Log.Loading("Loading movers data..."); try { string propMoverPath = Path.Combine(Global.DataPath, "res", "data", "propMover.txt"); var propMover = new ResourceTable(propMoverPath); propMover.AddDefines(defines); propMover.AddTexts(texts); propMover.SetTableHeaders("dwID", "szName", "dwAI", "dwStr", "dwSta", "dwDex", "dwInt", "dwHR", "dwER", "dwRace", "dwBelligerence", "dwGender", "dwLevel", "dwFlightLevel", "dwSize", "dwClass", "bIfPart", "dwKarma", "dwUseable", "dwActionRadius", "dwAtkMin", "dwAtkMax", "dwAtk1", "dwAtk2", "dwAtk3", "dwHorizontalRate", "dwVerticalRate", "dwDiagonalRate", "dwThrustRate", "dwChestRate", "dwHeadRate", "dwArmRate", "dwLegRate", "dwAttackSpeed", "dwReAttackDelay", "dwAddHp", "dwAddMp", "dwNaturealArmor", "nAbrasion", "nHardness", "dwAdjAtkDelay", "eElementType", "wElementAtk", "dwHideLevel", "fSpeed", "dwShelter", "bFlying", "dwJumping", "dwAirJump", "bTaming", "dwResistMagic", "fResistElectricity", "fResistFire", "fResistWind", "fResistWater", "fResistEarth", "dwCash", "dwSourceMaterial", "dwMaterialAmount", "dwCohesion", "dwHoldingTime", "dwCorrectionValue", "dwExpValue", "nFxpValue", "nBodyState", "dwAddAbility", "bKillable", "dwVirtItem1", "dwVirtType1", "dwVirtItem2", "dwVirtType2", "dwVirtItem3", "dwVirtType3", "dwSndAtk1", "dwSndAtk2", "dwSndDie1", "dwSndDie2", "dwSndDmg1", "dwSndDmg2", "dwSndDmg3", "dwSndIdle1", "dwSndIdle2", "szComment"); propMover.Parse(); while (propMover.Read()) { var monsterData = new MoverData(propMover); if (moversData.ContainsKey(monsterData.Id)) { moversData[monsterData.Id] = monsterData; } else { moversData.Add(monsterData.Id, monsterData); } Log.Loading("Loading {0}/{1} movers...", propMover.ReadingIndex, propMover.Count); } Log.Done("{0} movers loaded!\t\t\t", moversData.Count); } catch (Exception e) { Log.Error("Cannot load movers: {0}", e.Message); } }
/// <summary> /// Loads a collection of DropKind instructions for a given mover. /// </summary> /// <param name="mover"></param> /// <param name="instructions"></param> private void LoadDropItemsKind(MoverData mover, IEnumerable <Instruction> instructions) { if (instructions == null) { return; } foreach (var dropItemKindInstruction in instructions) { var dropItemKind = new DropItemKindData(); if (dropItemKindInstruction.Parameters.Count < 0 || dropItemKindInstruction.Parameters.Count > 3) { this._logger.LogWarning($"Cannot load 'DropKind' instruction for mover {mover.Name}. Reason: Missing parameters."); continue; } string itemKind = dropItemKindInstruction.Parameters.ElementAt(0).ToString().Replace("IK3_", string.Empty); dropItemKind.ItemKind = (ItemKind3)Enum.Parse(typeof(ItemKind3), itemKind); // From official files: Project.cpp:2824 dropItemKind.UniqueMin = mover.Level - 5; dropItemKind.UniqueMax = mover.Level - 2; if (dropItemKind.UniqueMin < 1) { dropItemKind.UniqueMin = 1; } if (dropItemKind.UniqueMax < 1) { dropItemKind.UniqueMax = 1; } mover.DropItemsKind.Add(dropItemKind); } }
public DirectionalMover(MoverData data) : base(data) { }
void Start() { healthData = GetComponent <Health>(); moverData = GetComponent <MoverData>(); animator = GetComponentInChildren <Animator>(); }
public ParabolicMover(MoverData data) : base(data) { this.height = data.Height; }
public CurveMover(MoverData data) : base(data) { this.acceleration = data.Acceleration; this.height = RNG.Range(-1.5f, 1.5f); }
public LinearMover(MoverData data) : base(data) { }