123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using System;
- using CommonAI.Zone.EventTrigger;
- using CommonLang.Property;
- using XmdsCommon.Message;
- using XmdsCommonServer.Plugin.Scene;
- using CommonAI.Zone.ZoneEditor.EventTrigger;
- using XmdsCommonServer.Plugin.Units;
- using CommonAI.Zone.Attributes;
- using CommonAI.Zone;
- using CommonAI.Zone.Instance;
- using XmdsCommon.Plugin;
- using CommonAI.Data;
- using CommonLang;
- namespace XmdsCommonServer.Plugin.Editor
- {
- [DescAttribute("某个单位进入战斗", "Xmds扩展 - 战斗")]
- public class XmdsUnitCombatStateChanged : AbstractTrigger
- {
- public override void Listen(EventTriggerAdapter api, EventArguments args)
- {
- var args2 = args.Clone();
- var scene = (api.ZoneAPI as XmdsServerScene);
- var handler = new XmdsServerScene.CombatStateChangeHandler((unit, status) =>
- {
- if (status != BattleStatus.None)
- {
- args2.TriggingUnit = unit;
- api.TestAndDoAction(args2);
- }
- });
- scene.OnCombatStateChange += handler;
- api.OnDisposed += (a) =>
- {
- scene.OnCombatStateChange -= handler;
- };
- }
- public override string ToString()
- {
- return string.Format("某个单位进入战斗");
- }
- }
- [DescAttribute("激活单位", "Xmds扩展 - 战斗")]
- public class XmdsPlayerReady : AbstractAction
- {
- [DescAttribute("玩家")]
- public UnitValue Player = new UnitValue.Trigging();
- public override void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- var unit = Player.GetValue(api, args) as XmdsInstancePlayer;
- if (unit != null)
- {
- unit.PlayerReady();
- }
- }
- public override string ToString()
- {
- return string.Format("激活单位{0}", Player);
- }
- }
- [DescAttribute("添加变身单位", "Xmds扩展 - 战斗")]
- public class UnitShapeshiftingAction : AbstractAction
- {
- [DescAttribute("单位")]
- public readonly UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("变身前动作")]
- public string PreAnimationName;
- [DescAttribute("变身前动作持续时间(秒)")]
- public RealValue PreAnimationTimeSEC = new RealValue.VALUE();
- [DescAttribute("变身后模板ID")]
- [TemplateIDAttribute(typeof(UnitInfo))]
- public int ShapeshiftingTemplateID = 0;
- public override string ToString()
- {
- return string.Format("添加({0})->变身({1})", Unit, ShapeshiftingTemplateID);
- }
- override public void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- var unit1 = Unit.GetValue(api, args) as InstanceGuard;
- var state1 = new InstanceUnit.ForceStateActionTime(unit1, PreAnimationTimeSEC.GetValue(api, args), PreAnimationName);
- state1.AddStopOnce((obj, st) =>
- {
- addShapeshifting(api, args, unit1);
- api.ZoneAPI.RemoveObject(unit1);
- });
- unit1.queueState(state1);
- }
- void addShapeshifting(EventTriggerAdapter api, EventArguments args, InstanceGuard src)
- {
- var info = api.ZoneAPI.Templates.getUnit(ShapeshiftingTemplateID);
- //
- var unit2 = api.ZoneAPI.AddUnit(info, src.Name, src.Force, src.Level, src.X, src.Y, src.Direction) as InstanceGuard;
- unit2.CurrentHP = CUtils.CastInt(src.CurrentHP_Pct * 0.01f * unit2.MaxHP);
- var c_target = src.TracingTarget;
- if (c_target != null)
- {
- unit2.queueState(new InstanceUnit.StateFollowAndAttack(unit2, c_target));
- }
- }
- }
- }
|