EditorData.Abilities.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using CommonLang.Property;
  5. using CommonAI.Zone.Attributes;
  6. using CommonAI.Zone.Instance;
  7. using CommonLang.IO;
  8. using CommonLang.IO.Attribute;
  9. using CommonAI.data;
  10. using CommonAI.Data;
  11. namespace CommonAI.Zone.ZoneEditor
  12. {
  13. [TableClassAttribute("Name")]
  14. public abstract class AbilityData : IExternalizable
  15. {
  16. [DescAttribute("Name", "", true)]
  17. public string Name;
  18. public override string ToString()
  19. {
  20. if (string.IsNullOrEmpty(Name))
  21. {
  22. return base.ToString();
  23. }
  24. else
  25. {
  26. return Name;
  27. }
  28. }
  29. public virtual void WriteExternal(IOutputStream output)
  30. {
  31. output.PutUTF(this.Name);
  32. }
  33. public virtual void ReadExternal(IInputStream input)
  34. {
  35. this.Name = input.GetUTF();
  36. }
  37. }
  38. public abstract class SceneAbilityData : AbilityData { }
  39. public abstract class UnitAbilityData : AbilityData { }
  40. public abstract class ItemAbilityData : AbilityData { }
  41. public abstract class RegionAbilityData : AbilityData { }
  42. public abstract class DecorationAbilityData : AbilityData { }
  43. public abstract class PointAbilityData : AbilityData { }
  44. public abstract class AreaAbilityData : AbilityData { }
  45. [MessageType(0x4401)]
  46. [DescAttribute("玩家出生点")]
  47. public class PlayerStartAbilityData : RegionAbilityData
  48. {
  49. [DescAttribute("阵营")]
  50. public int START_Force;
  51. [DescAttribute("测试主角ID", "测试", true)]
  52. [TemplateIDAttribute(typeof(UnitInfo))]
  53. public int TestActorTemplateID = 1;
  54. [TemplateLevelAttribute]
  55. public int TestActorLevel;
  56. public override string ToString()
  57. {
  58. return "玩家出生点: " + START_Force;
  59. }
  60. public override void WriteExternal(IOutputStream output)
  61. {
  62. base.WriteExternal(output);
  63. output.PutS32(START_Force);
  64. output.PutS32(TestActorTemplateID);
  65. output.PutS32(TestActorLevel);
  66. }
  67. public override void ReadExternal(IInputStream input)
  68. {
  69. base.ReadExternal(input);
  70. this.START_Force = input.GetS32();
  71. this.TestActorTemplateID = input.GetS32();
  72. this.TestActorLevel = input.GetS32();
  73. }
  74. }
  75. [MessageType(0x4402)]
  76. [DescAttribute("怪物刷新点")]
  77. public class SpawnUnitAbilityData : RegionAbilityData
  78. {
  79. [MessageType(0x4403)]
  80. [DescAttribute("怪物刷新ID和等级")]
  81. public class SpawnUnit : IExternalizable
  82. {
  83. [DescAttribute("单位模板")]
  84. [TemplateIDAttribute(typeof(UnitInfo))]
  85. public int UnitTemplateID;
  86. [DescAttribute("单位等级")]
  87. [TemplateLevelAttribute]
  88. public int UnitLevel = 0;
  89. [DescAttribute("此单位每次刷新概率百分比")]
  90. public float Percent = 100f;
  91. public override string ToString()
  92. {
  93. return UnitTemplateID.ToString();
  94. }
  95. public void WriteExternal(IOutputStream output)
  96. {
  97. output.PutS32(UnitTemplateID);
  98. output.PutS32(UnitLevel);
  99. output.PutF32(Percent);
  100. }
  101. public void ReadExternal(IInputStream input)
  102. {
  103. this.UnitTemplateID = input.GetS32();
  104. this.UnitLevel = input.GetS32();
  105. this.Percent = input.GetF32();
  106. }
  107. }
  108. [DescAttribute("怪物类型模板ID和等级组(新功能)", "基础")]
  109. public List<SpawnUnit> UnitTemplates = new List<SpawnUnit>();
  110. [DescAttribute("怪物类型模板ID组(兼容老版本)", "基础")]
  111. [TemplatesIDAttribute(typeof(UnitInfo))]
  112. public List<int> UnitTemplatesID = new List<int>();
  113. [DescAttribute("怪物等级", "可选")]
  114. [TemplateLevelAttribute]
  115. public int UnitLevel;
  116. [DescAttribute("延迟启动时间(毫秒)", "可选")]
  117. public int StartTimeDelayMS;
  118. [DescAttribute("刷新间隔时间(毫秒)", "基础")]
  119. public int IntervalMS = 5000;
  120. [DescAttribute("一次刷新数量", "基础")]
  121. public int OnceCount = 5;
  122. [DescAttribute("总刷新数量上限(0表示无上限)", "可选")]
  123. public int TotalLimit;
  124. [DescAttribute("存活数量上限(0表示无上限)", "可选")]
  125. public int AliveLimit;
  126. [DescAttribute("每次刷新必须所有怪物死亡", "基础")]
  127. public bool WithoutAlive;
  128. [DescAttribute("怪物初始阵营", "基础")]
  129. public byte Force;
  130. [DescAttribute("怪物初始标记", "可选")]
  131. public string UnitTag;
  132. [DescAttribute("怪物名字", "可选")]
  133. public string UnitName;
  134. [DescAttribute("随机阵营-下限", "可选")]
  135. [DependOnProperty("NotPointForce")]
  136. public byte forceMin;
  137. [DescAttribute("随机阵营-上限", "可选")]
  138. [DependOnProperty("NotPointForce")]
  139. public byte forceMax;
  140. [DescAttribute("怪物没有存活时,重置刷新点计时(间隔时间用StartTimeDelayMS控制)", "基础")]
  141. public bool ResetOnWithoutAlive;
  142. public bool NotPointForce() { return this.Force == 0; }
  143. [SceneObjectIDAttribute(typeof(PointData))]
  144. [DescAttribute("怪物初始路点", "路点")]
  145. public string StartPointName;
  146. [DescAttribute("切换路点待机最小时间(毫秒)", "路点")]
  147. public int StartPathHoldMinTimeMS = 0;
  148. [DescAttribute("切换路点待机最大时间(毫秒)", "路点")]
  149. public int StartPathHoldMaxTimeMS = 0;
  150. [DescAttribute("和平时间", "路点")]
  151. public int PeaceTime = 0;
  152. [DescAttribute("初始朝向(大于等于0有效)", "可选")]
  153. public float StartDirection = -1;
  154. [DescAttribute("怪物产生时触发的特效", "资源")]
  155. public LaunchEffect SpawnEffect;
  156. [DescAttribute("一次刷新多个怪物时初始阵型", "阵型")]
  157. public TeamFormation TFormation;
  158. //[MessageType(0x4408)]
  159. //[DescAttribute("绑定单位事件集合")]
  160. //public class BindEvent : IExternalizable
  161. //{
  162. // [SceneEventIDAttribute]
  163. // [DescAttribute("触发事件名字")]
  164. // public string EventName;
  165. // public override string ToString()
  166. // {
  167. // return EventName;
  168. // }
  169. // public void WriteExternal(IOutputStream output)
  170. // {
  171. // output.PutUTF(EventName);
  172. // }
  173. // public void ReadExternal(IInputStream input)
  174. // {
  175. // this.EventName = input.GetUTF();
  176. // }
  177. //}
  178. //[DescAttribute("单位绑定触发事件(编辑器中绑定)", "事件")]
  179. //public List<BindEvent> Events = new List<BindEvent>();
  180. public override string ToString()
  181. {
  182. int count = UnitTemplatesID.Count;
  183. if (UnitTemplates != null)
  184. {
  185. count += UnitTemplates.Count;
  186. }
  187. return "怪物刷新点: " + count + "种类型";
  188. }
  189. public byte GetForce()
  190. {
  191. if(this.Force == 0 && this.forceMax > this.forceMin && this.forceMin >= 0)
  192. {
  193. return (byte)(GlobalData.gRandom.Next() % (this.forceMax - this.forceMin) + this.forceMin);
  194. }
  195. return this.Force;
  196. }
  197. public SpawnUnitTrigger CreateTrigger(EditorScene scene)
  198. {
  199. SpawnUnitTrigger tg = new SpawnUnitTrigger(scene, this.Name);
  200. tg.setDelayTime(this.StartTimeDelayMS);
  201. tg.setSpawnInterval(this.IntervalMS);
  202. tg.setSpawnCount(this.OnceCount);
  203. tg.setSpawnEffect(this.SpawnEffect);
  204. tg.setLimitedAliveCount(this.AliveLimit);
  205. tg.setLimitedSpawnCount(this.TotalLimit);
  206. tg.setSpawnWithoutAlive(this.WithoutAlive);
  207. tg.setUnitTag(this.UnitTag);
  208. tg.setUnitName(this.UnitName);
  209. if(this.Force > 0)
  210. {
  211. tg.setUnitForce(this.Force, this.Force);
  212. }
  213. else
  214. {
  215. tg.setUnitForce(this.forceMin, this.forceMax);
  216. }
  217. tg.addUnits(this.UnitTemplatesID.ToArray(), this.UnitLevel);
  218. if (UnitTemplates != null)
  219. {
  220. foreach (SpawnUnit spawn in this.UnitTemplates)
  221. {
  222. tg.addUnitInfo(spawn.UnitTemplateID, spawn.UnitLevel, spawn.Percent);
  223. }
  224. }
  225. tg.setTeamFormation(this.TFormation);
  226. tg.setStartPath(scene, this.StartPointName, this.StartPathHoldMinTimeMS, this.StartPathHoldMaxTimeMS, this.PeaceTime);
  227. tg.setStartDirection(this.StartDirection);
  228. tg.setResetOnWithoutAlive(this.ResetOnWithoutAlive);
  229. //foreach (BindEvent eventItem in this.Events)
  230. //{
  231. // tg.addItemEvent(eventItem.EventName);
  232. //}
  233. return tg;
  234. }
  235. public override void WriteExternal(IOutputStream output)
  236. {
  237. base.WriteExternal(output);
  238. output.PutList<SpawnUnit>(this.UnitTemplates, output.PutExt);
  239. output.PutList<int>(this.UnitTemplatesID, output.PutS32);
  240. output.PutS32(this.UnitLevel);
  241. output.PutS32(this.StartTimeDelayMS);
  242. output.PutS32(this.IntervalMS);
  243. output.PutS32(this.OnceCount);
  244. output.PutS32(this.TotalLimit);
  245. output.PutS32(this.AliveLimit);
  246. output.PutBool(this.WithoutAlive);
  247. output.PutU8(this.Force);
  248. output.PutUTF(this.UnitName);
  249. output.PutUTF(this.UnitTag);
  250. output.PutUTF(this.StartPointName);
  251. output.PutS32(this.StartPathHoldMinTimeMS);
  252. output.PutS32(this.StartPathHoldMaxTimeMS);
  253. output.PutF32(this.StartDirection);
  254. output.PutExt(this.SpawnEffect);
  255. output.PutExt(this.TFormation);
  256. output.PutBool(this.ResetOnWithoutAlive);
  257. output.PutU8(this.forceMin);
  258. output.PutU8(this.forceMax);
  259. output.PutS32(this.PeaceTime);
  260. //output.PutList<BindEvent>(this.Events, output.PutExt);
  261. }
  262. public override void ReadExternal(IInputStream input)
  263. {
  264. base.ReadExternal(input);
  265. this.UnitTemplates = input.GetList<SpawnUnit>(input.GetExt<SpawnUnit>);
  266. this.UnitTemplatesID = input.GetList<int>(input.GetS32);
  267. this.UnitLevel = input.GetS32();
  268. this.StartTimeDelayMS = input.GetS32();
  269. this.IntervalMS = input.GetS32();
  270. this.OnceCount = input.GetS32();
  271. this.TotalLimit = input.GetS32();
  272. this.AliveLimit = input.GetS32();
  273. this.WithoutAlive = input.GetBool();
  274. this.Force = input.GetU8();
  275. this.UnitName = input.GetUTF();
  276. this.UnitTag = input.GetUTF();
  277. this.StartPointName = input.GetUTF();
  278. this.StartPathHoldMinTimeMS = input.GetS32();
  279. this.StartPathHoldMaxTimeMS = input.GetS32();
  280. this.StartDirection = input.GetF32();
  281. this.SpawnEffect = input.GetExt<LaunchEffect>();
  282. this.TFormation = input.GetExt<TeamFormation>();
  283. this.ResetOnWithoutAlive = input.GetBool();
  284. this.forceMin = input.GetU8();
  285. this.forceMax = input.GetU8();
  286. this.PeaceTime = input.GetS32();
  287. //this.Events = input.GetList<BindEvent>(input.GetExt<BindEvent>);
  288. }
  289. }
  290. [MessageType(0x4404)]
  291. [DescAttribute("传送点功能")]
  292. public class UnitTransportAbilityData : RegionAbilityData
  293. {
  294. [SceneObjectIDAttribute(typeof(SceneObjectData))]
  295. [DescAttribute("传送到路点位置")]
  296. public string NextPosition;
  297. [DescAttribute("接受的单位类型", "过滤")]
  298. public UnitInfo.UnitType AcceptUnitType = UnitInfo.UnitType.TYPE_PLAYER;
  299. [DescAttribute("接受所有类型的单位,此处为True,AcceptUnitType失效", "过滤")]
  300. public bool AcceptUnitTypeForAll = false;
  301. [DescAttribute("接受的阵营", "过滤")]
  302. public byte AcceptForce = 0;
  303. [DescAttribute("接受所有阵营的单位,此处为True,AcceptForce失效", "过滤")]
  304. public bool AcceptForceForAll = false;
  305. [DescAttribute("传送时的特效", "资源")]
  306. public LaunchEffect TransportEffect;
  307. public override string ToString()
  308. {
  309. return "传送到->" + NextPosition;
  310. }
  311. public TransportUnitTrigger CreateTrigger(EditorScene scene)
  312. {
  313. TransportUnitTrigger tg = new TransportUnitTrigger(scene, this.Name);
  314. tg.NextPositionName = this.NextPosition;
  315. tg.AcceptUnitType = this.AcceptUnitType;
  316. tg.AcceptUnitTypeForAll = this.AcceptUnitTypeForAll;
  317. tg.AcceptForce = this.AcceptForce;
  318. tg.AcceptForceForAll = this.AcceptForceForAll;
  319. tg.TransportEffect = this.TransportEffect;
  320. return tg;
  321. }
  322. public override void WriteExternal(IOutputStream output)
  323. {
  324. base.WriteExternal(output);
  325. output.PutUTF(this.NextPosition);
  326. output.PutU8((byte)this.AcceptUnitType);
  327. output.PutBool(this.AcceptUnitTypeForAll);
  328. output.PutU8(this.AcceptForce);
  329. output.PutBool(this.AcceptForceForAll);
  330. output.PutExt(this.TransportEffect);
  331. }
  332. public override void ReadExternal(IInputStream input)
  333. {
  334. base.ReadExternal(input);
  335. this.NextPosition = input.GetUTF();
  336. this.AcceptUnitType = (UnitInfo.UnitType)input.GetU8();
  337. this.AcceptUnitTypeForAll = input.GetBool();
  338. this.AcceptForce = input.GetU8();
  339. this.AcceptForceForAll = input.GetBool();
  340. this.TransportEffect = input.GetExt<LaunchEffect>();
  341. }
  342. }
  343. [MessageType(0x4405)]
  344. [DescAttribute("跨场景传送点功能")]
  345. public class SceneTransportAbilityData : RegionAbilityData
  346. {
  347. [TemplateIDAttribute(typeof(SceneData))]
  348. [DescAttribute("下一个场景ID")]
  349. public int NextSceneID;
  350. [DescAttribute("下一个场景路点位置")]
  351. public string NextScenePosition;
  352. [DescAttribute("传送时的特效", "资源")]
  353. public LaunchEffect TransportEffect;
  354. public override string ToString()
  355. {
  356. return "传送到->场景2:" + NextSceneID+"位置:"+NextScenePosition;
  357. }
  358. public override void WriteExternal(IOutputStream output)
  359. {
  360. base.WriteExternal(output);
  361. output.PutS32(this.NextSceneID);
  362. output.PutUTF(this.NextScenePosition);
  363. output.PutExt(this.TransportEffect);
  364. }
  365. public override void ReadExternal(IInputStream input)
  366. {
  367. base.ReadExternal(input);
  368. this.NextSceneID = input.GetS32();
  369. this.NextScenePosition = input.GetUTF();
  370. this.TransportEffect = input.GetExt<LaunchEffect>();
  371. }
  372. }
  373. [MessageType(0x4406)]
  374. [DescAttribute("物品刷新点")]
  375. public class SpawnItemAbilityData : RegionAbilityData
  376. {
  377. [MessageType(0x4407)]
  378. [DescAttribute("物品刷新ID")]
  379. public class SpawnItem : IExternalizable
  380. {
  381. [DescAttribute("物品模板")]
  382. [TemplateIDAttribute(typeof(ItemTemplate))]
  383. public int ItemTemplateID;
  384. [DescAttribute("此物品每次刷新概率百分比")]
  385. public float Percent = 100f;
  386. public override string ToString()
  387. {
  388. return ItemTemplateID.ToString();
  389. }
  390. public void WriteExternal(IOutputStream output)
  391. {
  392. output.PutS32(ItemTemplateID);
  393. output.PutF32(Percent);
  394. }
  395. public void ReadExternal(IInputStream input)
  396. {
  397. this.ItemTemplateID = input.GetS32();
  398. this.Percent = input.GetF32();
  399. }
  400. }
  401. [DescAttribute("物品类型模板ID和等级组", "基础")]
  402. public List<SpawnItem> ItemTemplates = new List<SpawnItem>();
  403. [DescAttribute("延迟启动时间(毫秒)", "可选")]
  404. public int StartTimeDelayMS;
  405. [DescAttribute("刷新间隔时间(毫秒)", "基础")]
  406. public int IntervalMS = 5000;
  407. [DescAttribute("一次刷新数量", "基础")]
  408. public int OnceCount = 5;
  409. [DescAttribute("总刷新数量上限(0表示无上限)", "可选")]
  410. public int TotalLimit;
  411. [DescAttribute("存活数量上限(0表示无上限)", "可选")]
  412. public int AliveLimit;
  413. [DescAttribute("每次刷新必须所有物品消亡", "基础")]
  414. public bool WithoutAlive;
  415. [DescAttribute("物品初始阵营", "基础")]
  416. public byte Force;
  417. [DescAttribute("物品初始标记", "可选")]
  418. public string UnitTag;
  419. [DescAttribute("物品名字", "可选")]
  420. public string UnitName;
  421. [DescAttribute("物品产生时触发的特效", "资源")]
  422. public LaunchEffect SpawnEffect;
  423. [DescAttribute("初始朝向(大于等于0有效)", "可选")]
  424. public float StartDirection = -1;
  425. public override string ToString()
  426. {
  427. return "物品刷新点: " + ItemTemplates.Count + "种类型";
  428. }
  429. public SpawnItemTrigger CreateTrigger(EditorScene scene)
  430. {
  431. SpawnItemTrigger tg = new SpawnItemTrigger(scene, this.Name);
  432. tg.setDelayTime(this.StartTimeDelayMS);
  433. tg.setSpawnInterval(this.IntervalMS);
  434. tg.setSpawnCount(this.OnceCount);
  435. tg.setSpawnEffect(this.SpawnEffect);
  436. tg.setLimitedAliveCount(this.AliveLimit);
  437. tg.setLimitedSpawnCount(this.TotalLimit);
  438. tg.setSpawnWithoutAlive(this.WithoutAlive);
  439. tg.setUnitTag(this.UnitTag);
  440. tg.setUnitName(this.UnitName);
  441. tg.setUnitForce(this.Force);
  442. tg.setStartDirection(this.StartDirection);
  443. if (ItemTemplates != null)
  444. {
  445. foreach (SpawnItem spawn in this.ItemTemplates)
  446. {
  447. tg.addItemInfo(spawn.ItemTemplateID, spawn.Percent);
  448. }
  449. }
  450. return tg;
  451. }
  452. public override void WriteExternal(IOutputStream output)
  453. {
  454. base.WriteExternal(output);
  455. output.PutList<SpawnItem>(this.ItemTemplates, output.PutExt);
  456. output.PutS32(this.StartTimeDelayMS);
  457. output.PutS32(this.IntervalMS);
  458. output.PutS32(this.OnceCount);
  459. output.PutS32(this.TotalLimit);
  460. output.PutS32(this.AliveLimit);
  461. output.PutBool(this.WithoutAlive);
  462. output.PutU8(this.Force);
  463. output.PutUTF(this.UnitName);
  464. output.PutUTF(this.UnitTag);
  465. output.PutExt(this.SpawnEffect);
  466. output.PutF32(this.StartDirection);
  467. }
  468. public override void ReadExternal(IInputStream input)
  469. {
  470. base.ReadExternal(input);
  471. this.ItemTemplates = input.GetList<SpawnItem>(input.GetExt<SpawnItem>);
  472. this.StartTimeDelayMS = input.GetS32();
  473. this.IntervalMS = input.GetS32();
  474. this.OnceCount = input.GetS32();
  475. this.TotalLimit = input.GetS32();
  476. this.AliveLimit = input.GetS32();
  477. this.WithoutAlive = input.GetBool();
  478. this.Force = input.GetU8();
  479. this.UnitName = input.GetUTF();
  480. this.UnitTag = input.GetUTF();
  481. this.SpawnEffect = input.GetExt<LaunchEffect>();
  482. this.StartDirection = input.GetF32();
  483. }
  484. }
  485. [MessageType(0x8801)]
  486. [DescAttribute("玩家复活点")]
  487. public class XmdsRebirthAbility : RegionAbilityData
  488. {
  489. [DescAttribute("阵营")]
  490. public int START_Force;
  491. public override string ToString()
  492. {
  493. return "玩家复活点: " + START_Force;
  494. }
  495. public override void WriteExternal(IOutputStream output)
  496. {
  497. base.WriteExternal(output);
  498. output.PutS32(START_Force);
  499. }
  500. public override void ReadExternal(IInputStream input)
  501. {
  502. base.ReadExternal(input);
  503. this.START_Force = input.GetS32();
  504. }
  505. }
  506. [MessageType(0x4408)]
  507. [DescAttribute("区域伤害")]
  508. public class RegionDamageAbilityData : RegionAbilityData
  509. {
  510. [DescAttribute("针对阵营")]
  511. public int force = 2;
  512. [DescAttribute("触发间隔")]
  513. public int interval = 1000;
  514. [DescAttribute("固定伤害值(负加血)", "动作")]
  515. public int attack;
  516. [DescAttribute("固定伤害值百分比(负加血)", "动作")]
  517. public int attackPer;
  518. [DescAttribute("产生Buff", "动作")]
  519. public LaunchBuff DoBuff;
  520. public override string ToString()
  521. {
  522. return "区域伤害: " + force + ", 间隔:" + interval;
  523. }
  524. public override void WriteExternal(IOutputStream output)
  525. {
  526. base.WriteExternal(output);
  527. output.PutS32(force);
  528. output.PutS32(interval);
  529. output.PutS32(attack);
  530. output.PutExt(DoBuff);
  531. output.PutS32(attackPer);
  532. }
  533. public override void ReadExternal(IInputStream input)
  534. {
  535. base.ReadExternal(input);
  536. this.force = input.GetS32();
  537. this.interval = input.GetS32();
  538. this.attack = input.GetS32();
  539. this.DoBuff = input.GetExt<LaunchBuff>();
  540. this.attackPer = input.GetS32();
  541. }
  542. public RegionDamageTrigger CreateTrigger(EditorScene scene)
  543. {
  544. RegionDamageTrigger tg = new RegionDamageTrigger(scene, this);
  545. return tg;
  546. }
  547. }
  548. }