public override void Execute(GameTrigger trigger) { trigger.Character.Client.Send(new DebugClearHighlightCellsMessage()); var blue = trigger.Character.Map.GetBlueFightPlacement(); var red = trigger.Character.Map.GetRedFightPlacement(); if (blue == null || blue.Length == 0) { trigger.ReplyError("Blue placements not defined"); } else { trigger.Character.Client.Send(new DebugHighlightCellsMessage(Color.Blue.ToArgb(), blue.Select(x => x.Id))); } if (red == null || red.Length == 0) { trigger.ReplyError("Red placements not defined"); } else { trigger.Character.Client.Send(new DebugHighlightCellsMessage(Color.Red.ToArgb(), red.Select(x => x.Id))); } }
private static VTrigger CreateTrigger(TriggerType type) { int num = TriggerManager.assign_trigger_id(); VTrigger vTrigger = null; switch (type) { case TriggerType.GameTrigger: vTrigger = new GameTrigger(num); break; case TriggerType.UnitTrigger: vTrigger = new UnitTrigger(num); break; case TriggerType.TimerTrigger: vTrigger = new TimerTrigger(num); break; } if (vTrigger != null) { if (!TriggerManager.triggers.ContainsKey(num)) { TriggerManager.triggers.Add(num, vTrigger); } else { TriggerManager.triggers[num] = vTrigger; } } return(vTrigger); }
public override void Execute(GameTrigger trigger) { var template = MountManager.Instance.GetTemplates().RandomElementOrDefault(); var mount = MountManager.Instance.CreateMount(trigger.Character, template); trigger.Character.EquipMount(mount); }
public override void Execute(GameTrigger trigger) { var map = trigger.Get <Map>("map"); var pools = map.SpawningPools.OfType <DungeonSpawningPool>().ToArray(); if (pools.Length == 0) { trigger.ReplyError("Target map {0} has no dungeon spawn", map.Id); return; } foreach (var spawn in pools.SelectMany(pool => pool.Spawns)) { spawn.TeleportEvent = true; spawn.TeleportCell = trigger.Character.Cell.Id; spawn.TeleportMap = trigger.Character.Map; spawn.TeleportDirection = trigger.Character.Direction; WorldServer.Instance.IOTaskPool.AddMessage(() => WorldServer.Instance.DBAccessor.Database.Update(spawn)); } trigger.Reply("Teleport event defined."); }
public override void DoAction(IEventArgs args) { if (values != null) { args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (ITestValue value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; if (!dic.ContainsKey(tv.Name)) { dic.Add(tv.Name, new List <TestValue>()); dic[tv.Name].Add(tv); } List <TestValue> list = dic[tv.Name]; if (!list[list.Count - 1].IsSame(tv)) { list.Add(tv); } } args.Resume(UnitTestConstant.Tester); } }
private void Update() { switch (_states) { case States.MenuState: MenuTrigger?.Invoke(); break; case States.GameState: GameTrigger?.Invoke(); break; case States.PauseState: PauseTrigger?.Invoke(); break; case States.GameOverState: GameOverTrigger?.Invoke(); break; case States.None: break; default: break; } }
public override void Execute(GameTrigger trigger) { var character = trigger.Character; var players = character.Map.GetAllCharacters().ToArray(); var itemToken = ItemManager.Instance.TryGetTemplate(20837); var amount = trigger.Get <int>("amount"); var item = character.Inventory.TryGetItem(itemToken); if (item.Stack < amount) { trigger.ReplyError("You doesn't have enough items !!"); return; } character.Inventory.RemoveItem(item, amount); var amountPerPlayer = (int)Math.Ceiling((double)amount / players.Count()); foreach (var player in players) { player.Inventory.AddItem(itemToken, amountPerPlayer); } trigger.Reply("Successfully add {0} items to {1} players !", amount, players.Count()); }
public void placeTrigger(Vector3 triggerPoint, int triggerTypeIndex) { GameTrigger lTrigger = new GameTrigger(); lTrigger.point = triggerPoint; lTrigger.type = triggerTypeIndex; GameObject go = GameObject.CreatePrimitive(PrimitiveType.Sphere); go.transform.position = triggerPoint; go.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); switch (lTrigger.type) { case 0: go.GetComponent <Renderer>().material.color = new Color(0.5f, 1, 1); break; case 1: go.GetComponent <Renderer>().material.color = new Color(1, 0.5f, 1); break; case 2: go.GetComponent <Renderer>().material.color = new Color(1, 1, 0.5f); break; } lTrigger.gfx = go; gameTriggers.Add(lTrigger); }
public override void Execute(GameTrigger trigger) { var colorStr = trigger.Get <string>("color").ToLower(); if (colorStr != "red" && colorStr != "blue") { trigger.ReplyError("Define a correct color (blue/red)"); return; } var blue = colorStr == "blue"; WorldServer.Instance.IOTaskPool.ExecuteInContext(() => { if (blue) { trigger.Character.Map.Record.BlueFightCells = new short[0]; } else { trigger.Character.Map.Record.RedFightCells = new short[0]; } trigger.Character.Map.UpdateFightPlacements(); WorldServer.Instance.DBAccessor.Database.Update(trigger.Character.Map.Record); }); trigger.Character.Client.Send(new DebugClearHighlightCellsMessage()); }
public override void Execute(GameTrigger trigger) { trigger.Reply("Admin chat mode is : {0}", new object[] { trigger.Bold((trigger.Character.AdminMessagesEnabled = !trigger.Character.AdminMessagesEnabled) ? "Enabled" : "Disabled") }); }
public override void Execute(GameTrigger trigger) { if (!trigger.Character.IsInFight()) { trigger.ReplyError("You must be in a fight"); return; } if (!trigger.Character.Fight.AIDebugMode) { trigger.ReplyError("AI debug mode must be enabled"); return; } if (!(trigger.Character.Fight.FighterPlaying is AIFighter)) { trigger.ReplyError("Current fighter is not an AI fighter"); return; } var aiFighter = trigger.Character.Fight.FighterPlaying as AIFighter; int index = trigger.Get <int>("action"); if (index >= aiFighter.Brain.SpellSelector.Possibilities.Count) { trigger.ReplyError("Specify an index between 0 and " + (aiFighter.Brain.SpellSelector.Possibilities.Count - 1)); return; } var cast = aiFighter.Brain.SpellSelector.Possibilities[index]; //aiFighter.Brain.ExecuteSpellCast(cast); }
private static void AddGameTrigger(GameTrigger trigger) { if (!TriggerManager.game_callbacks.ContainsKey(trigger.trigger_event)) { TriggerManager.game_callbacks.Add(trigger.trigger_event, new List <GameTrigger>()); } TriggerManager.game_callbacks[trigger.trigger_event].Add(trigger); }
public void TestLifeIsLessThanZero() { new LifeIsLessThanZero("0"); GameTrigger.OnGameOver(); var list = EntitiesRunner.Current.GetEntitiesOfType <FontText>(); Assert.AreEqual(1, list.Count); Assert.AreEqual("Game Over", list[0].Text); }
public void TestSubtractLife() { new SubtractLife(); var player = new Player(); GameTrigger.OnEnemyReachGoal(); AdvanceTimeAndUpdateEntities(); Assert.AreEqual(0, player.LivesLeft); }
public static VTrigger CreateGameEventTrigger(GameEvent e, TriggerCondition condition, TriggerAction action) { GameTrigger gameTrigger = (GameTrigger)TriggerManager.CreateTrigger(TriggerType.GameTrigger); TriggerManager.TriggerRegisterGameEvent(gameTrigger, e); TriggerManager.TriggerAddCondition(gameTrigger, condition); TriggerManager.TriggerAddAction(gameTrigger, action); return(gameTrigger); }
public void TestStartingLives() { var trigger = new StartingLives("5"); Assert.AreEqual(5, trigger.Lives); var player = new Player(); GameTrigger.OnGameStarting(); Assert.AreEqual(trigger.Lives, player.LivesLeft); }
public void TestStartingGold() { var trigger = new StartingGold("50"); Assert.AreEqual(50, trigger.Gold); var player = new Player(); GameTrigger.OnGameStarting(); Assert.AreEqual(trigger.Gold, player.Gold); }
public void TestStartTimer() { var trigger = new StartTimer("90"); Assert.AreEqual(90, trigger.StartingTime); var player = new Player(); GameTrigger.OnGameStarting(); Assert.AreEqual(trigger.StartingTime, player.Time); GameTrigger.OnUpdateEverySecond(); }
public override void Execute(GameTrigger trigger) { if (!trigger.Character.IsInFight()) { trigger.ReplyError("You must be in a fight"); return; } trigger.Character.Fight.AIDebugMode = !trigger.Character.Fight.AIDebugMode; trigger.Reply("AI debug mode " + (trigger.Character.Fight.AIDebugMode ? "enabled" : "disabled")); }
internal float Trigger( Guid userId, Guid characterId, GameTrigger triggerType, string triggerData = null, int triggerCount = 1) { var requirement = achievement.Requirements.Where(x => x.Trigger == triggerType).ToList(); if (requirement.Count == 0) { return(-1); // no such requirement } // Grab the achievement for this requirement // if (requirement.AchievementId).. // always go through all requirements to check if all // has been met. var requirementsMet = 0f; foreach (var req in achievement.Requirements) { var progress = userAchievement.Progress.FirstOrDefault(x => x.Trigger == req.Trigger && x.Data == req.Data); if (progress == null) { progress = new UserAchievementProgress { Trigger = req.Trigger, Data = req.Data }; userAchievement.Progress.Add(progress); } if (progress.Count >= req.Count && progress.Data == req.Data) { ++requirementsMet; continue; } if (req.Trigger == triggerType && req.Data == triggerData) { progress.Count += triggerCount; if (progress.Count >= req.Count && progress.Data == req.Data) { ++requirementsMet; } } } return(requirementsMet / achievement.Requirements.Count); }
public override void Execute(GameTrigger trigger) { var character = trigger.Character; if (character.GuildMember != null) { character.Guild.SetBoss(character.GuildMember); } else { trigger.ReplyError("You must be in a guild to do that !"); } }
private GameTrigger BeginModifyTrigger(TrackWriter trk) { var selected = SelectedTrigger; if (selected == -1) { return(null); } var trigger = trk.Triggers[selected]; _trigger_copy = trigger.Clone(); return(trigger); }
private bool ShouldTriggerRun(GameTrigger trigger) { bool shouldTriggerRun = false; var targetElement = this.GetElementById(trigger.TargetId); // //For Numeric comparisons (i.e. all except for Equal and Not Equal) // //Assume that if the Target Value is not numeric then its value is 0 //Perhaps this should be checked by a validation method and an exception thrown when loading rather than using 0 here. float numericTargetValue = 0; float.TryParse(targetElement.Value, out numericTargetValue); //Assume that if the Trigger Value is not numeric then its value is 0 //Perhaps this should be checked by a validation method and an exception thrown when loading rather than using 0 here. float numericTriggerValue = 0; float.TryParse(trigger.Value, out numericTriggerValue); switch (trigger.Comparison) { case TargetComparisons.Equal: shouldTriggerRun = targetElement.Value == trigger.Value; break; case TargetComparisons.NotEqual: shouldTriggerRun = targetElement.Value != trigger.Value; break; case TargetComparisons.GreaterThan: shouldTriggerRun = numericTargetValue > numericTriggerValue; break; case TargetComparisons.GreaterThanOrEqual: shouldTriggerRun = numericTargetValue >= numericTriggerValue; break; case TargetComparisons.LessThan: shouldTriggerRun = numericTargetValue < numericTriggerValue; break; case TargetComparisons.LessThanOrEqual: shouldTriggerRun = numericTargetValue <= numericTriggerValue; break; default: throw new Exception(string.Format("The Comparison {0} is not recognized, specified in the Trigger with Target {1}.", trigger.Comparison, trigger.TargetId)); } return(shouldTriggerRun); }
public override void Execute(GameTrigger trigger) { var colorStr = trigger.Get <string>("color").ToLower(); if (colorStr != "red" && colorStr != "blue") { trigger.ReplyError("Define a correct color (blue/red)"); return; } var blue = colorStr == "blue"; var cellsStr = trigger.Get <string>("cells").Split(','); var cells = cellsStr.Select(x => { int id; if (!int.TryParse(x, out id) || id < 0 || id > 559) { throw new ConverterException(string.Format("{0} is not a valid cell id", x)); } var cell = trigger.Character.Map.GetCell(id); if (!cell.Walkable) { throw new ConverterException(string.Format("Cell {0} is not walkable", x)); } return(cell); }); WorldServer.Instance.IOTaskPool.ExecuteInContext(() => { if (blue) { trigger.Character.Map.Record.BlueFightCells = cells.Select(x => x.Id).ToArray(); } else { trigger.Character.Map.Record.RedFightCells = cells.Select(x => x.Id).ToArray(); } trigger.Character.Map.UpdateFightPlacements(); trigger.Character.Client.Send(new DebugHighlightCellsMessage(Color.Blue.ToArgb(), trigger.Character.Map.Record.BlueFightCells)); trigger.Character.Client.Send(new DebugHighlightCellsMessage(Color.Red.ToArgb(), trigger.Character.Map.Record.RedFightCells)); WorldServer.Instance.DBAccessor.Database.Update(trigger.Character.Map.Record); }); }
public override void Execute(GameTrigger trigger) { var target = trigger.Character.Map.GetActors <Merchant>(x => x.Name == trigger.Get <string>("target")).FirstOrDefault(); if (target == null) { trigger.ReplyError("Target not found !"); return; } MerchantManager.Instance.RemoveMerchantSpawn(target.Record); MerchantManager.Instance.UnActiveMerchant(target); trigger.Reply("Target Merchant kicked"); }
public override void DoAction(IEventArgs args) { if (values != null) { SimpleParaList testParaList = new SimpleParaList(); FreeData fd = GetPlayer(args); if (null != fd) { PlayerEntity player = fd.Player; var entity = args.GameContext.mapObject.GetEntityWithEntityKey(new EntityKey(player.gamePlay.UseEntityId, (int)EEntityType.MapObject)); if (null != entity && entity.hasDoorData) { testParaList.AddFields(new ObjectFields(entity.doorData)); } } SimpleParable sp = new SimpleParable(testParaList); args.TempUse("testPara", sp); args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (ITestValue value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; if (!dic.ContainsKey(tv.Name)) { dic.Add(tv.Name, new List <TestValue>()); dic[tv.Name].Add(tv); } List <TestValue> list = dic[tv.Name]; if (!list[list.Count - 1].IsSame(tv)) { list.Add(tv); } } args.Resume("testPara"); args.Resume(UnitTestConstant.Tester); } }
private void EndModifyTrigger(GameTrigger trigger, TrackWriter trk) { var selected = SelectedTrigger; if (selected == -1) { throw new Exception( "SelectedTrigger was removed during ModifyTrigger"); } _changemade = true; trigger.Start = (int)(_spinnerStart.Value); trigger.End = (int)(_spinnerStart.Value + _spinnerDuration.Value); trk.Triggers[SelectedTrigger] = trigger; _editor.Timeline.TriggerChanged(_trigger_copy, trigger); UpdateFrame(); }
public override void DoAction(IEventArgs args) { if (values != null) { args.TempUse(UnitTestConstant.Tester, GetPlayer(args)); GameTrigger trigger = FreeLog.GetTrigger(); foreach (var value in values) { TestValue tv = value.GetCaseValue(args); tv.Name = value.Name; RecordResult(args, trigger, new TestValue[] { tv }); } args.Resume(UnitTestConstant.Tester); } }
public override void Execute(GameTrigger trigger) { if (!trigger.Character.IsInFight()) { trigger.ReplyError("You must be in a fight"); return; } if (!trigger.Character.Fight.AIDebugMode) { trigger.ReplyError("AI debug mode must be enabled"); return; } if (!(trigger.Character.Fight.FighterPlaying is AIFighter)) { trigger.ReplyError("Current fighter is not an AI fighter"); return; } var aiFighter = trigger.Character.Fight.FighterPlaying as AIFighter; trigger.Character.ClearHighlight(); var enemy = aiFighter.Brain.Environment.GetNearestEnemy(); if (trigger.IsArgumentDefined("los")) { trigger.Reply(trigger.Color("Cast with LoS", trigger.Character.HighlightCells(aiFighter.Brain.Environment.GetCellsWithLoS(enemy.Cell)))); } foreach (var spell in aiFighter.Spells.Values) { var cell = aiFighter.Brain.Environment.GetCellToCastSpell(new TargetCell(enemy.Cell), spell, spell.CurrentSpellLevel.CastTestLos); if (cell != null) { trigger.Reply(trigger.Color("Cast " + spell, trigger.Character.HighlightCell(cell))); } } var fleeCell = aiFighter.Brain.Environment.GetCellToFlee(); trigger.Reply(trigger.Color("Flee cell", trigger.Character.HighlightCell(fleeCell))); }
public virtual void Merge(TriggerList triggers) { GameTrigger iniTrigger = null; foreach (GameTrigger gt in triggers) { if (gt.GetKey() == 1) { iniTrigger = gt; break; } } if (iniTrigger == null) { iniTrigger = new GameTrigger(1); triggers.AddTrigger(iniTrigger); } iniTrigger.AddAction(new UseGameComponent.AddComponentParaAction(this, this.name, args)); }
public void placeTrigger( Vector3 triggerPoint, int triggerTypeIndex ) { GameTrigger lTrigger = new GameTrigger (); lTrigger.point = triggerPoint; lTrigger.type = triggerTypeIndex; GameObject go = GameObject.CreatePrimitive (PrimitiveType.Sphere); go.transform.position = triggerPoint; go.transform.localScale = new Vector3 (1.0f, 1.0f, 1.0f); switch(lTrigger.type) { case 0: go.GetComponent<Renderer>().material.color = new Color(0.5f,1,1); break; case 1: go.GetComponent<Renderer>().material.color = new Color(1,0.5f,1); break; case 2: go.GetComponent<Renderer>().material.color = new Color(1,1,0.5f); break; } lTrigger.gfx = go; gameTriggers.Add (lTrigger); }