123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- using CommonAI.data;
- using CommonAI.Data;
- using CommonAI.Zone;
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using CommonAI.Zone.ZoneEditor;
- using CommonLang;
- using System;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.Scene;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
- using XmdsCommonSkill.Plugin.FunctionEvent;
- namespace XmdsCommonZone.Zones
- {
- [XmdsExtensionZone(91002)]
- public class Zone91002 : XmdsServerScene
- {
- private InstanceUnit.BuffState mFightBuff;
- public static int CheckIntervalMS = 5000;
- public static int StartFightBuffDelayMS = 60000;
- public enum FightBuffStatus
- {
- InVaild,
- CountDown,
- Vaild,
- }
- private FightBuffStatus mFightBuffState = FightBuffStatus.InVaild;
- public Zone91002(TemplateManager templates, InstanceZoneListener listener, SceneData data, GSCreateAreaData gsData, string bindGameSrvId)
- : base(templates, listener, data, gsData, bindGameSrvId)
- {
- OnUnitDead += Zone91002_OnUnitDead;
- OnUnitAdded += Zone91002_OnUnitAdded;
- OnUnitRebirth += Zone91002_OnUnitRebirth;
- OnUnitRemoved += Zone91002_OnUnitRemoved;
- }
- protected override void Disposing()
- {
- base.Disposing();
- OnUnitDead -= Zone91002_OnUnitDead;
- OnUnitAdded -= Zone91002_OnUnitAdded;
- OnUnitRebirth -= Zone91002_OnUnitRebirth;
- OnUnitRemoved -= Zone91002_OnUnitRemoved;
- }
- private void FightBuff_Tick(TimeTaskMS task)
- {
- if(mFightBuff != null && mFightBuff.IsEnd())
- {
-
- AddFightBuffToRandom((p) =>{ return p != mFightBuff.Owner && !p.IsDead(); });
- }
- else if(mFightBuff == null && AllPlayersCount > 1)
- {
- AddFightBuffToRandom();
- }
- }
- private void StartFightBuff_Tick(TimeTaskMS task)
- {
- mFightBuffState = FightBuffStatus.Vaild;
- AddFightBuffToRandom();
- AddTimePeriodicMS(CheckIntervalMS, FightBuff_Tick);
- }
- private void Zone91002_OnUnitRemoved(InstanceZone zone, InstanceUnit obj)
- {
- }
-
-
-
-
-
-
- private void AddInvincibleBuffTo(InstancePlayer player)
- {
- BattleFunction.GetInstance().TriggrBattleFunction(XmdsBattleFunctionEvent_10010.EventID, player.Virtual, player.Virtual);
- }
-
-
-
-
-
- private void AddFightBuffTo(InstancePlayer player)
- {
- BattleFunction.GetInstance().TriggrBattleFunction(XmdsBattleFunctionEvent_10002.EventID, player.Virtual, player.Virtual);
- }
- private void AddFightBuffToRandom(Predicate<InstancePlayer> select = null)
- {
- if(select == null)
- {
- select = new Predicate<InstancePlayer>(p => { return true; });
- }
- var player = selectRandomUnit(select);
- if(player != null)
- {
- AddFightBuffTo(player);
- }
- else
- {
- mFightBuff = null;
- }
- }
- private void Zone91002_OnUnitRebirth(InstanceZone zone, InstanceUnit obj)
- {
- if (obj.IsPlayer)
- {
- AddInvincibleBuffTo(obj as InstancePlayer);
- }
- }
- private void Zone91002_OnUnitAdded(InstanceZone zone, InstanceUnit obj)
- {
- if (obj.IsPlayer)
- {
- if (mFightBuffState == FightBuffStatus.InVaild)
- {
- mFightBuffState = FightBuffStatus.CountDown;
- AddTimeDelayMS(StartFightBuffDelayMS, StartFightBuff_Tick);
- }
-
-
-
-
-
- obj.OnGotBuff += Obj_OnGotBuff;
- AddInvincibleBuffTo(obj as InstancePlayer);
- }
- }
- private void Obj_OnGotBuff(InstanceUnit obj, InstanceUnit.BuffState buff)
- {
-
-
-
-
- }
- private void Zone91002_OnUnitDead(InstanceZone zone, InstanceUnit obj, InstanceUnit attacker)
- {
-
- }
- }
- }
|