MonsterAdapter.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381
  1. using System;
  2. namespace YLBattle
  3. {
  4. /// <summary>
  5. /// 敌方适配器
  6. /// </summary>
  7. public class MonsterAdapter : IFighterAdapter
  8. {
  9. /// <summary>
  10. /// 英雄实例数据
  11. /// </summary>
  12. private sm_hero mTemplete = null;
  13. /// <summary>
  14. /// 英雄实例数据
  15. /// </summary>
  16. private GameHeroVo mIns = null;
  17. /// <summary>
  18. /// 是否可以修改玩家数据
  19. /// </summary>
  20. private bool canModify = false;
  21. /// <summary>
  22. /// 等级
  23. /// </summary>
  24. private int mLevel = 0;
  25. /// <summary>
  26. ///
  27. /// </summary>
  28. private int mSeat = 0;
  29. /// <summary>
  30. ///
  31. /// </summary>
  32. private bool isBoss = false;
  33. /// <summary>
  34. /// 构造(pve)
  35. /// </summary>
  36. /// <param name="_strTid">模板</param>
  37. public MonsterAdapter(string _strIid, string lv, string _Boss, string _seat)
  38. {
  39. this.mTemplete = sm_hero.GetMoByID(_strIid);
  40. this.canModify = false;
  41. this.mLevel = System.Convert.ToInt32(lv);
  42. this.isBoss = System.Convert.ToInt32(_Boss) == 0 ? false : true;
  43. this.mSeat = System.Convert.ToInt32(_seat);
  44. mIns = new GameHeroVo();
  45. mIns.level = System.Convert.ToInt32(lv);
  46. mIns.typeId = _strIid;
  47. var vo = sm_heroextra_dengjie.QueryMeetsConditionStrengthInfoByLevel(mIns.level);
  48. if (vo != null)
  49. {
  50. mIns.strengthLevel = vo.typeId;
  51. }
  52. }
  53. /// <summary>
  54. /// Boss
  55. /// </summary>
  56. /// <returns></returns>
  57. public bool IsLeader()
  58. {
  59. return this.isBoss;
  60. }
  61. /// <summary>
  62. /// 关联对象实例
  63. /// </summary>
  64. /// <returns>对象实例</returns>
  65. public object Inst()
  66. {
  67. return this.mTemplete;
  68. }
  69. /// <summary>
  70. /// 角色类型 0=小怪 1=英雄 (战斗中英雄使用公共技能槽)
  71. /// </summary>
  72. /// <returns></returns>
  73. public int RoleType()
  74. {
  75. return this.mTemplete.roletype;
  76. }
  77. /// <summary>
  78. ///
  79. /// </summary>
  80. /// <returns></returns>
  81. public string FName()
  82. {
  83. return this.mTemplete.name;
  84. }
  85. /// <summary>
  86. /// 英雄实例ID, 敌方没有
  87. /// </summary>
  88. /// <returns></returns>
  89. public string IID()
  90. {
  91. return string.Empty;
  92. }
  93. /// <summary>
  94. /// 玩家ID (友情帮助时才有此数据)
  95. /// </summary>
  96. /// <returns></returns>
  97. public string PlayerUID()
  98. {
  99. return string.Empty;
  100. }
  101. /// <summary>
  102. ///
  103. /// </summary>
  104. /// <returns></returns>
  105. public string TID()
  106. {
  107. return this.mTemplete.heroId.ToString();
  108. }
  109. /// <summary>
  110. /// 技能列表
  111. /// </summary>
  112. /// <returns></returns>
  113. //public int CriticalPowerRate()
  114. //{
  115. // return SkillProxy.Instance.GetSkillCondiValue(this.mTemplete.manuSkill2);
  116. //}
  117. /// <summary>
  118. ///
  119. /// </summary>
  120. /// <returns></returns>
  121. public int Seat
  122. {
  123. set { this.mSeat = value; }
  124. get
  125. {
  126. return this.mSeat;
  127. }
  128. }
  129. /// <summary>
  130. /// 等级
  131. /// </summary>
  132. /// <returns></returns>
  133. public int Level()
  134. {
  135. return this.mLevel;
  136. }
  137. /// <summary>
  138. /// 等阶
  139. /// </summary>
  140. /// <returns></returns>
  141. public int StrengthLevel()
  142. {
  143. return this.mIns.strengthLevel;
  144. }
  145. /// <summary>
  146. ///
  147. /// </summary>
  148. /// <returns></returns>
  149. public string NormalSound()
  150. {
  151. return this.mTemplete.normalSound;
  152. }
  153. /// <summary>
  154. ///
  155. /// </summary>
  156. /// <returns></returns>
  157. public string SkillSound()
  158. {
  159. return this.mTemplete.skillSound;
  160. }
  161. /// <summary>
  162. ///
  163. /// </summary>
  164. /// <returns></returns>
  165. public string BeattackSound()
  166. {
  167. return this.mTemplete.beattackSound;
  168. }
  169. /// <summary>
  170. ///
  171. /// </summary>
  172. /// <returns></returns>
  173. public string DragonboneName()
  174. {
  175. return this.mTemplete.dragonBoneMod;
  176. }
  177. /// <summary>
  178. ///
  179. /// </summary>
  180. /// <returns></returns>
  181. //public int Attack()
  182. //{
  183. // return this.mTemplete.wuligongji;
  184. //}
  185. /// <summary>
  186. ///
  187. /// </summary>
  188. /// <returns></returns>
  189. public int Agile()
  190. {
  191. return (int)((1 / this.mTemplete.gongjisudu) * 1000.0f);
  192. }
  193. #region 战斗技能
  194. /// <summary>
  195. /// 手动攻击技能
  196. /// </summary>
  197. /// <returns>技能模板id</returns>
  198. public string NormalSkill()
  199. {
  200. return this.mTemplete.normalSkill;
  201. }
  202. /// <summary>
  203. /// 主动技能1
  204. /// </summary>
  205. /// <returns>技能模板id</returns>
  206. public string ManuSkill1()
  207. {
  208. return this.mTemplete.manuSkill1;
  209. }
  210. /// <summary>
  211. /// 主动技能2
  212. /// </summary>
  213. /// <returns>技能模板id</returns>
  214. public string ManuSkill2()
  215. {
  216. return this.mTemplete.manuSkill2;
  217. }
  218. /// <summary>
  219. /// 队长技能
  220. /// </summary>
  221. /// <returns>技能模板id</returns>
  222. public string PassiveSkill()
  223. {
  224. return this.mTemplete.passiveSkill;
  225. }
  226. /// <summary>
  227. /// (敌方无)队长技能
  228. /// </summary>
  229. /// <returns>技能模板id</returns>
  230. public string LeaderSkill()
  231. {
  232. return string.Empty;
  233. }
  234. /// <summary>
  235. /// 获取英雄技能列表
  236. /// </summary>
  237. /// <returns>技能列表</returns>
  238. public string[] Skills()
  239. {
  240. return new string[] { this.mTemplete.normalSkill,
  241. this.mTemplete.manuSkill1,
  242. this.mTemplete.manuSkill2,
  243. this.mTemplete.passiveSkill
  244. };
  245. }
  246. /// <summary>
  247. /// 获取英雄技能列表
  248. /// </summary>
  249. /// <returns>技能列表</returns>
  250. [Obsolete("过时,2020.4.21")]
  251. public int SkillLevel(string tid)
  252. {
  253. string parm = string.Empty;
  254. if (tid == this.mTemplete.normalSkill)
  255. {
  256. parm = "normalSkill";
  257. }
  258. if (tid == this.mTemplete.manuSkill1)
  259. {
  260. parm = "manuSkill1";
  261. }
  262. if (tid == this.mTemplete.manuSkill2)
  263. {
  264. parm = "manuSkill2";
  265. }
  266. if (tid == this.mTemplete.passiveSkill)
  267. {
  268. parm = "passiveSkill";
  269. }
  270. return this.mIns.GetSkillLevel(parm);
  271. }
  272. /// <summary>
  273. /// 获取技能冷冻回合数
  274. /// </summary>
  275. /// <returns></returns>
  276. //public int GetSkillBeLockedRound(string skillId)
  277. //{
  278. // return SkillProxy.Instance.GetSkillCondiValue(skillId);
  279. //}
  280. #endregion
  281. /// <summary>
  282. ///
  283. /// </summary>
  284. /// <param name="ep"></param>
  285. /// <returns></returns>
  286. public double GetProperty(EBattleProperty ep)
  287. {
  288. ///属性值=初始值+成长*(等级-1)
  289. double pvalue = 0;
  290. switch (ep)
  291. {
  292. case EBattleProperty.HP:
  293. pvalue = this.mIns.getHpForBattle();
  294. break;
  295. case EBattleProperty.HPMAX:
  296. pvalue = this.mIns.getHpForBattle();
  297. break;
  298. case EBattleProperty.ATTACK:
  299. pvalue = this.mIns.getWuLiGongJiForBattle();
  300. break;
  301. case EBattleProperty.ATTACKSPEED:
  302. pvalue = this.mIns.getGongJiSuDuForBattle();
  303. break;
  304. case EBattleProperty.CRITICALPROB:
  305. //pvalue = this.mIns.getCriticalForBattle(); // 2020.6.3 根据策划指导修正暴击率
  306. pvalue = this.mIns.getCriticalRatioInBattle();
  307. break;
  308. case EBattleProperty.DEFENSE:
  309. pvalue = this.mIns.getFangYuHuJiaForBattle();
  310. break;
  311. case EBattleProperty.MAGICFORCE:
  312. pvalue = this.mIns.getMoFaKangXingForBattle();
  313. break;
  314. case EBattleProperty.MAGICSTRENGTH:
  315. pvalue = this.mIns.getFaShuQiangDuForBattle();
  316. break;
  317. case EBattleProperty.LEVEL:
  318. pvalue = this.mLevel;
  319. break;
  320. case EBattleProperty.NMAXPOWER:
  321. pvalue = this.mTemplete.npower;
  322. break;
  323. case EBattleProperty.NPOWER:
  324. pvalue = 0;
  325. break;
  326. case EBattleProperty.HEIGHT:
  327. pvalue = this.mTemplete.height;
  328. break;
  329. default:
  330. pvalue = 0;
  331. break;
  332. }
  333. return pvalue;
  334. }
  335. /// <summary>
  336. ///
  337. /// </summary>
  338. /// <param name="ep"></param>
  339. /// <param name="val"></param>
  340. public void ModifyProperty(EBattleProperty ep, float val)
  341. {
  342. if (this.canModify == false)
  343. {
  344. return;
  345. }
  346. }
  347. }
  348. }