public void SkillsCanApplyEffectWithDelay() { Skill skill = Factory.TestDelayedSkill; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount)); SkillEngine engine = new SkillEngine(effectEngine); state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state); Assert.Empty(effectEngine.ActionsUsed); Assert.Contains(state.DelayedActions, x => x.SourceSkill.Skill.CosmeticName == skill.CosmeticName); Assert.Equal(50, state.DelayedActions[0].CT); Assert.True(state.Party[0].IsCasting); CastingInfo castingInfo = state.Party[0].Casting; Assert.Equal(state.Party[0].Skills[0], castingInfo.Skill); Assert.Equal(skill.Delay, castingInfo.Duration); Assert.Equal(0, castingInfo.StartingTick); Assert.Equal(-50, state.Party[0].CT); }
public static void ServerStart(string str) { Console.WriteLine("Loading Data Access Objects.\n" + "-------------------------------------------"); DAOManager.Initialize(str); Console.WriteLine("Loading Data Files.\n" + "-------------------------------------------"); Data.Data.LoadAll(); Data.Cache.LoadData(); StatsService.Init(); GeoService.Init(); MapService.Init(); QuestEngine.Init(); SkillEngine.Init(); ActionEngine.Init(); SkillsLearnService.Init(); AreaService.Init(); GuildService.Init(); InitMainLoop(); }
public override void Start() { this.tag = "Player"; skillList = AddCommponent <SkillEngine>(); weaponSystem = AddCommponent <WeaponEngine>(); Shap = new CircleShap(new Fixed(0.25f), 8); rigibody.useCheck = true; rigibody.useCheckCallBack = true; CanMove = true; if (IsLocalPlayer) { client.localPlayer = this; Debug.Log("client.localPlayer"); } team = 1; items = AddCommponent <ItemEngine>(); // ai=new AiEngine(); // ai.aiName="AI_test"; // ai=AddCommponent<AiEngine>(ai); // ai.emenyTag="Zombie"; base.Start(); weaponSystem.AddWeapon(WeaponId.无战斗); skillList.AddSkill(SkillManager.GetSkill(SkillId.拳击右直)); }
public void CooldownDisappearsAfterTime() { Skill skill = Factory.TestSkillCooldown; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield())); SkillEngine skillEngine = new SkillEngine(effectEngine); state = skillEngine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state); GameEngine engine = Factory.CreateGameEngine(state, skillEngine: skillEngine); Assert.False(engine.CurrentState.Party[0].Skills[0].Available); for (int i = 0; i < Time.ActionAmount; ++i) { engine.Process(); } Assert.DoesNotContain(engine.CurrentState.DelayedActions, x => x.TargetAction.Action.Type == ActionType.Cooldown); Assert.True(engine.CurrentState.Party[0].Skills[0].Available); }
public void Update() { Info.Update(); Model.Update(); SkillEngine.Update(); }
public void SkillFailsIfInvokerDoesNotHave() { Skill skill = Factory.TestSkill; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; SkillEngine engine = new SkillEngine(effectEngine); Assert.Throws <InvalidOperationException> (() => engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state)); }
public static void ServerStart() { Data.Data.LoadAll(); Data.Cache.LoadData(); StatsService.Init(); GeoService.Init(); MapService.Init(); QuestEngine.Init(); SkillEngine.Init(); ActionEngine.Init(); SkillsLearnService.Init(); AreaService.Init(); GuildService.Init(); InitMainLoop(); }
public void SkillsCanApplyEffectDirectly() { Skill skill = Factory.TestSkill; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount)); SkillEngine engine = new SkillEngine(effectEngine); state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state); Assert.False(state.Party[0].IsCasting); Assert.Single(effectEngine.ActionsUsed); Assert.Equal(0, state.Party[0].CT); }
public void CooldownPreventsReuse() { Skill skill = Factory.TestSkillCooldown; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield())); SkillEngine engine = new SkillEngine(effectEngine); state = engine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state); Assert.Single(state.DelayedActions); Assert.Contains(state.DelayedActions, x => x.TargetAction.Action.Type == ActionType.Cooldown); Assert.False(state.Party[0].Skills[0].Available); Assert.Equal(25, state.DelayedActions[0].CT); Assert.Throws <InvalidOperationException> (() => engine.ApplyTargettedSkill(new TargettedSkill(state.Party[0].Skills[0], TargettingInfo.Self(state.Party[0])), state)); }
void SkillMask() { if (skillList == null) { if (unityClient != null && unityClient.client.localPlayer != null) { skillList = (unityClient.client.localPlayer as PlayerData).skillList; } } SkillRuntime skill = GetSkill(key); if (skill != null) { fillImage.fillAmount = (skill.timer / skill.skillData.coolDownTime).ToFloat(); backImage.enabled = fillImage.fillAmount > 0; if (!useKey) { group.blocksRaycasts = fillImage.fillAmount <= 0; } } }
public void SkillCasting_RemovingCasting_WhenComplete() { Skill skill = Factory.TestDelayedSkill; TestEffectEngine effectEngine = new TestEffectEngine(); GameState state = Factory.DefaultGameState; state = state.UpdateCharacter(state.Party[0].WithSkills(skill.Yield()).WithCT(Time.ActionAmount)); SkillEngine skillEngine = new SkillEngine(effectEngine); state = skillEngine.ApplyTargettedSkill(new TargettedSkill(skill, TargettingInfo.Self(state.Party[0])), state); Assert.True(state.Party[0].IsCasting); GameEngine engine = Factory.CreateGameEngine(state, skillEngine: skillEngine); for (int i = 0; i < Time.ActionAmount; ++i) { engine.Process(); } Assert.False(engine.CurrentState.Party[0].IsCasting); }
public static void AttackFinished(Creature creature) { FeedbackService.AttackFinished(creature); SkillEngine.AttackFinished(creature); }
public static void ReleaseAttack(IConnection connection, int attackUid, int type) { SkillEngine.ReleaseAttack(connection.Player, attackUid, type); }
public static void MarkTarget(IConnection connection, Creature target, int skillId) { SkillEngine.MarkTarget(connection, target, skillId); }
public static void UseSkill(IConnection connection, List <UseSkillArgs> argsList) { SkillEngine.UseSkill(connection, argsList); }
public static void UseSkill(IConnection connection, UseSkillArgs args) { SkillEngine.UseSkill(connection, args); }