void SetBullockCarts(long id, float lvl) { MonsterData md = new MonsterData(id, (int)lvl); md.groupIndex = 1; md.lvlRate = lvl; md.state = Modestatus.NpcPlayer; cartCs = BattleUtil.AddMoveComponents(cart, md.attrNode.modelNode); cartCs.pm.nav.obstacleAvoidanceType = UnityEngine.AI.ObstacleAvoidanceType.NoObstacleAvoidance; cartCs.pm.nav.avoidancePriority = 59; cartCs.InitData(md); BullockCarts bc = UnityUtil.AddComponetIfNull <BullockCarts>(cart); if (bc) { bc.OnArrDes += () => { DungeonOverHandle(null); }; cartCs.OnHit += bc.BeAttacked; } cartCs.OnDead += (c) => { WinCondition(false); }; cartCs.moveSpeed = cartCs.moveInitSpeed; cartCs.AddHpBar(); AddCs(cartCs); if (sceneType == SceneType.KV) { GameObject prompt = new GameObject("UIPrompt"); prompt.transform.parent = cartCs.transform; prompt.transform.localPosition = new Vector3(0, 1.2f, 0); CDTimer.GetInstance().AddCD(0.5f, (int count, long cid) => { HUDAndHPBarManager.instance.AddPrompt(prompt.transform); }); } cart.tag = "Cart"; }
void InitTowerAIAttack(CharacterState cs, float atk) { if (cs.state == Modestatus.Tower) { Tower_AI tAI = cs.GetComponent <Tower_AI>(); tAI.baseAttack = atk; cs.Hp(0); cs.AddHpBar(); } }
void InitTower(CharacterState cs, long id, UInt32 groupIndex, Modestatus state) { MonsterData towerData = new MonsterData(id, (int)towerlvl[cs]); towerData.groupIndex = groupIndex; towerData.lvlRate = towerlvl[cs]; towerData.state = Modestatus.Tower; cs.InitData(towerData); cs.GetComponent <Tower_AI>().InitTowerAI(); cs.AddHpBar(); AddCs(cs); }
void CreateEnemyHero() { MonsterData md = new MonsterData(EnemyPlayer); //enemyhd = md; md.state = Modestatus.NpcPlayer; md.groupIndex = 0; md.lvl = (int)Enemylvl; md.lvlRate = Enemylvl; CharacterState enemyCs = CreateBattleHero(md, enemyPlayerPos); if (null == enemyCs) { return; } this.enemyCs = enemyCs; enemyCs.AddHpBar(); AddHeroAIBySceneType(enemyCs); enemyCs.OnDead += (CharacterState mCs) => OnHeroDead(mCs); MobaMiniMap.instance.AddMapIconByType(enemyCs); }
public void CreateTeam() { int index = 0; for (int i = 0; i < 5; i++) { index = i;// == 0 ? 0 : i + 3; if (null == Globe.challengeTeam[index] || Globe.challengeTeam[index].id == 0) { continue; } ArenaPlayer partner = new ArenaPlayer(); partner.groupIndx = 1; partner.playerData = Globe.challengeTeam[index]; partner.playerTrans = partnerPos[i]; partner.playerIcon = SceneUIManager.instance.arenaPanel.mIcon[i]; npcList.Add(partner); damageHeroList.Add(partner); } int enemyCount = 0; for (int i = 0; i < 5; i++) { if (null == Globe.ArenaEnemy[i] || Globe.ArenaEnemy[i].id == 0) { continue; } enemyCount++; ArenaPlayer enemy = new ArenaPlayer(); enemy.groupIndx = 0; enemy.playerData = Globe.ArenaEnemy[i]; enemy.playerTrans = partnerPos[i + 5]; enemy.playerIcon = SceneUIManager.instance.arenaPanel.dIcon[i]; npcList.Add(enemy); damageHeroList.Add(enemy); } List <CharacterState> csList = new List <CharacterState>(); for (int i = 0; i < npcList.Count; i++) { if (null == npcList[i].playerData || npcList[i].playerData.id == 0) { continue; } npcList[i].playerData.state = Modestatus.NpcPlayer; npcList[i].playerData.groupIndex = npcList[i].groupIndx; CharacterState cs = CreateBattleHero(npcList[i].playerData, npcList[i].playerTrans.gameObject); heroIcon.Add(cs, npcList[i].playerIcon); cs.pm.isAutoMode = true; cs.AddHpBar(); cs.OnHit += npcList[i].playerIcon.RefreshHPBar; cs.OnAttackDmg += RecordDamage; RecordDamage(cs, cs, 0); cs.OnDead += (CharacterState csm) => { heroIcon[csm].RefreshHPBar(csm); }; heroCsList.Add(cs); npcList[i].playerIcon.AssignedInfo(cs); AddHeroAIBySceneType(cs); cs.transform.GetComponent <BasePlayerAI>().enabled = false; Formula.SetAttrTo(ref cs.CharData.buffAttrs, AttrType.hp, cs.currentHp * 0.5f); csList.Add(cs); // Debug.LogError(cs.CharData.id + " max: " + cs.maxHp + " server: " + cs.CharData.serverAttrs[3] + " rate: " + cs.maxHp / cs.CharData.serverAttrs[3]); //if (cs.CharData.groupIndex == 0) //{ // for (int j = 0; j < cs.CharData.serverAttrs.Length; j++) // { // cs.CharData.serverAttrs[j] = csList[0].CharData.serverAttrs[j]; // } //} //else //{ // csList.Add(cs); //} //if (GameLibrary.isNetworkVersion) //{ //for (int j = 0; j < cs.CharData.buff_Propers.Length; j++) //{ // float rato = cs.CharData.battleInitAttrs[j] * 0.1f; // if (Globe.ArenaIsWin == 1) // cs.CharData.buff_Propers[j] += cs.CharData.groupIndex == 0 ? -rato : rato; // else // cs.CharData.buff_Propers[j] += cs.CharData.groupIndex == 0 ? rato : -rato; //} //if (cs.CharData.groupIndex == 1 && Globe.ArenaIsWin == 1) //{ // cs.CharData.buff_Propers[3] += cs.currentHp * 1.5f; //} //if (Globe.ArenaIsWin == 1) //{ // cs.CharData.buff_Propers[3] += cs.currentHp * (cs.CharData.groupIndex == 1 ? 1.5f : 1.0f); //} //else //{ // cs.CharData.buff_Propers[3] += cs.currentHp * (cs.CharData.groupIndex == 0 ? 1.5f : 1.0f); //} //} cs.Hp(0); } //PreLoadCharEffects(csList); //for (int i = 0; i < npcList.Count; i++) //{ // Debug.LogError (npcList [i].playerData.id + "-" + npcList [i].playerData.node.name); // for (int j = 0; j < npcList[i].playerData.battleInitAttrs.Length; j++) // { // Debug.Log((AttrType)j +"-"+npcList[i].playerData.battleInitAttrs[j]); // } //} }
CharacterState CreatHero(HeroData data, GameObject parGo, HeroAttackLine atkLine) { CharacterState cs = null; data.useServerAttr = false; data.RefreshAttr(); if (data.groupIndex == 1) { if (data.state == Modestatus.Player) { cs = CreateMainHero(data).GetComponent <CharacterState>(); } else if (data.state == Modestatus.NpcPlayer) { cs = CreateBattleHero(data, parGo).GetComponent <CharacterState>(); } cs.AddHpBar(true); cs.pm.moveAreaMask = 1 | 1 << (int)NavAreas.BlueHeroPass; } else if (data.groupIndex == 0) { cs = CreateBattleHero(data, parGo).GetComponent <CharacterState>(); cs.CharData.groupIndex = 0; cs.AddHpBar(true); cs.gameObject.tag = "EnemyPlayer"; cs.pm.moveAreaMask = 1 | 1 << (int)NavAreas.RedHeroPass; } if (cs != null) { BasePlayerAI ai = AddHeroAIBySceneType(cs); if (cs.groupIndex == 1 && cs.CharData.memberId == 0) { ai.enabled = false; } else { ai.enabled = true; } } cs.OnHelp += TowerHelp; cs.OnDead += OnHeroDead; cs.OnDead += ChangeMorale; cs.OnDamageBy += (CharacterState mcs, CharacterState attackerCs) => { if (BattleUtil.IsHeroTarget(attackerCs)) { RefreshAttackedHeroRecords(mcs.CharData, attackerCs.CharData); } else if (attackerCs.state == Modestatus.SummonHero && attackerCs.Master != null) { RefreshAttackedHeroRecords(mcs.CharData, attackerCs.Master.CharData); } }; cs.moveSpeed = cs.moveInitSpeed = 0.75f * cs.moveInitSpeed; cs.InitHp(cs.maxHp); cs.atkLine = atkLine; if (MobaMiniMap.instance != null) { MobaMiniMap.instance.AddMapIconByType(cs); } return(cs); }