public Monster addPVPPlayerUnitToStage(TranscendData td, int[] transcendLevel, string monId, Vector3 position) { Monster mon; _tempMonResource = GameManager.info.unitData[monId].resource; _tempMonType = Monster.TYPE.UNIT; mon = GameManager.me.characterManager.getMonster(false, false, _tempMonResource, true); CharacterUtil.setRare(GameManager.info.unitData[monId].rare, mon); position.x -= (float)(GameManager.inGameRandom.Range(0, 101)) / 100.0f; // Log.log("addPVPPlayerUnitToStage : " + mon.resourceId); mon.init(td, transcendLevel, true, monId, false, _tempMonType); mon.setPositionCtransform(position); mon.isCutSceneOnlyCharacter = false; _tempMonCategory = GameManager.info.monsterData[_tempMonResource].category; mon.action.setFirstPosition(mon.cTransformPosition); mon.setVisible(true); mon.isEnabled = true; return(mon); }
public IFloat getTranscendValueByATTR(IFloat inputValue, int inputAttr) { TranscendData td = transcendData; if (td == null) { return(inputValue); } return(td.getValueByATTR(transcendLevel, inputValue, inputAttr)); }
public void setDataToCharacter(Monster cha, TranscendData td, int[] transcendLevel) { cha.stat.speed.Set(speed); cha.maxHp = (hp); cha.maxSp.Set(sp); cha.stat.atkRange.Set(atkRange); cha.stat.atkSpeed.Set(atkSpeed); cha.stat.atkPhysic.Set(atkPhysic); cha.stat.atkMagic.Set(atkMagic); cha.stat.defPhysic.Set(defPhysic); cha.stat.defMagic.Set(defMagic); cha.bulletPatternId = resource; cha.atkEffectType = effectType; cha.stat.reinforceLevel.Set(reinforceLevel); cha.stat.baseLevel.Set(baseLevel); //* 유저 아군 (or 적) 유닛 & 몬스터 유닛 : 해당 유닛의, 베이스레벨 + 강화레벨 cha.stat.skillTargetLevel.Set(baseLevel + reinforceLevel); // ATK_ATTR1,ATK_ATTR2,ATK_ATTR3,ATK_ATTR4,ATK_ATTR5,ATK_ATTR6,ATK_ATTR7, if (td != null) { cha.stat.originalMoveSpeedRate = cha.stat.speed; cha.stat.originalAtkSpeedRate = cha.stat.atkSpeed; cha.stat.speed.Set(td.getValueByATTR(transcendLevel, cha.stat.speed.Get(), WSATTR.MOVE_SPEED_I)); cha.stat.atkRange.Set(td.getValueByATTR(transcendLevel, cha.stat.atkRange.Get(), WSATTR.ATK_RANGE_I)); cha.stat.atkSpeed.Set(td.getValueByATTR(transcendLevel, cha.stat.atkSpeed.Get(), WSATTR.ATK_SPEED_I)); cha.stat.atkPhysic.Set(td.getValueByATTR(transcendLevel, cha.stat.atkPhysic.Get(), WSATTR.ATK_PHYSIC_I)); cha.stat.atkMagic.Set(td.getValueByATTR(transcendLevel, cha.stat.atkMagic.Get(), WSATTR.ATK_MAGIC_I)); cha.stat.defPhysic.Set(td.getValueByATTR(transcendLevel, cha.stat.defPhysic.Get(), WSATTR.DEF_PHYSIC_I)); cha.stat.defMagic.Set(td.getValueByATTR(transcendLevel, cha.stat.defMagic.Get(), WSATTR.DEF_MAGIC_I)); cha.stat.maxHp.Set(td.getValueByATTR(transcendLevel, cha.stat.maxHp.Get(), WSATTR.HP_I)); cha.stat.originalMoveSpeedRate = cha.stat.speed / cha.stat.originalMoveSpeedRate; cha.stat.originalAtkSpeedRate = cha.stat.atkSpeed / cha.stat.originalAtkSpeedRate; } else { cha.stat.originalMoveSpeedRate = 1; cha.stat.originalAtkSpeedRate = 1; } cha.hp = (cha.maxHp); cha.sp = (cha.sp); }
public void clear() { _player = null; mon = null; if (unitSlot != null) { unitSlot.activeSkillData = null; } unitData = null; monsterData = null; unitSlot = null; transcendData = null; transcendLevel = null; }
public void setData(GameIDData gd) { if (gd.totalPLevel <= 0) { gameObject.SetActive(false); return; } else { gameObject.SetActive(true); } TranscendData td = gd.transcendData; for (int i = 0; i < 4; ++i) { slots[i].lbName.text = td.description[i]; if (GameManager.me.uiManager.popupReforege.step == 2) { int newValue = td.getApplyRateValue(gd.transcendLevel[i], i); int diff = newValue - GameManager.me.uiManager.popupReforege.currentEffectValue[i]; string resultType = td.getApplyRateTypeString(i); string result = td.getApplyRateValueString(gd.transcendLevel[i], i); if (diff > 0) { result += " [ffe400](↑" + diff + resultType + ")[-]"; } else if (diff < 0) { result += " [be1010](↓" + diff + resultType + ")[-]"; } slots[i].lbValue.text = result; } else { slots[i].lbValue.text = td.getApplyRateValueString(gd.transcendLevel[i], i); } } }
// 1> 99레벨 미만 SS등급일때, 상세정보 UI에서 [제련] 버튼 표시 // 3> 조건에 맞는 재료아이템들을 모두 표시 후, 유저가 직접 변경 가능 // - 디펄트 선택 재료는, 레어등급 낮은 순 > 제련레벨 낮은 순 > 강화레벨 낮은순 // 4> 재료가 없으면, 제련 버튼 비활성 & 재료 선택 UI에 메시지 표시 // - 필요한 재료룬 이름 알려줌 // 5> 골드 부족시, 골드 부족 & 루비 사용 메시지 팝업 // 6> 제련후, 상승한 제련레벨 및 상승 속성 수치 표시 // 7> 재료가 남아있다면 계속 제련 가능, // - 재료 없으면 재료 없음 메시지 표시 & 제련 버튼 비활성 void refreshInfo(bool setStat = false) { slotBefore.setReforgeData(_data, false); slotAfter.setReforgeData(_data, false); slotAfter.useButton = false; slotBefore.useButton = false; slotBefore.lbTranscendLevel.enabled = false; slotAfter.lbTranscendLevel.enabled = false; if (_showDiff) { lbSlotBefore.text = _data.totalPLevel + " [ffe400](↑" + (_data.totalPLevel - currentLevel) + ")[-]"; } else { lbSlotBefore.text = _data.totalPLevel.ToString(); } int minLevel = _data.totalPLevel; int maxLevel = _data.totalPLevel; int plusValue = minLevel; if (_prevSlot != null) { int[] logic = GameDataManager.instance.reforgeLogic; if (_prevSlot.infoData.rare >= RareType.SS) { minLevel = minLevel + logic[1]; // 5 } else { minLevel = minLevel + logic[0]; // 1 } maxLevel = minLevel; // 강화 레벨 보너스. int pl = (_prevSlot.infoData.reinforceLevel.Get()); if (pl >= logic[12] && pl <= logic[13]) { maxLevel += logic[14]; } if (pl >= logic[9] && pl <= logic[10]) { maxLevel += logic[11]; } if (pl >= logic[6] && pl <= logic[7]) { maxLevel += logic[8]; } if (pl >= logic[3] && pl <= logic[4]) { maxLevel += logic[5]; } // 제련 레벨 보너스. if (_prevSlot.infoData.totalPLevel > 0) { maxLevel += Mathf.FloorToInt((float)_prevSlot.infoData.totalPLevel / (float)(logic[2])); } } if (maxLevel > GameIDData.MAX_P_LEVEL) { maxLevel = GameIDData.MAX_P_LEVEL; } if (minLevel > GameIDData.MAX_P_LEVEL) { minLevel = GameIDData.MAX_P_LEVEL; } if (maxLevel > minLevel) { lbSlotAfter.text = minLevel + "~" + maxLevel; } else { //if(minLevel == 0) lbSlotAfter.text = "-"; //else lbSlotAfter.text = minLevel.ToString(); } btnReforge.isEnabled = (_materialData.Count > 0); // 2> 제련 후 '최소 제련레벨 ~ 최대 제련레벨' 표시 if (setStat) { TranscendData td = _data.transcendData; for (int i = 0; i < 4; ++i) { attSlots[i].lbName.text = td.description[i]; int newValue = td.getApplyRateValue(_data.transcendLevel[i], i); if (_showDiff) { int diff = newValue - currentEffectValue[i]; string resultType = td.getApplyRateTypeString(i); string result = td.getApplyRateValueString(_data.transcendLevel[i], i); if (diff > 0) { result += " [ffe400](↑" + diff + resultType + ")[-]"; } else if (diff < 0) { result += " [be1010](↓" + diff + resultType + ")[-]"; } attSlots[i].lbValue.text = result; } else { attSlots[i].lbValue.text = td.getApplyRateValueString(_data.transcendLevel[i], i); } currentEffectValue[i] = newValue; } } lbReforgePrice.text = Util.GetCommaScore(GameDataManager.instance.reforgePrices[WSDefine.GOLD]); }
public void init(UnitData md, TranscendData td, int[] tLevel, Player player) { _player = player; spDamageEffect.cachedGameObject.SetActive(false); _state = 0; leftNum = 0; lastActiveSkillUseSlotIndex = -1; // unitSlot.activeSkillState = STATE_ACTIVE_SKILL_COOLTIME; mon = null; blockThis = false; isClicked = false; isLocked = false; unitData = md; transcendData = td; transcendLevel = tLevel; tfUnitName.text = md.name; #if UNITY_EDITOR // Debug.Log(unitData.resource); #endif monsterData = GameManager.info.monsterData[unitData.resource]; // unitSlot.useSp = unitData.sp; // unitSlot.useSp -= (unitSlot.useSp * _player.summonSpPercent(unitData)); if (player != null) { tfUseSp.text = Mathf.RoundToInt(unitSlot.useSp / player.maxSp * 100.0f) + ""; //Mathf.CeilToInt(unitSlot.useSp - 0.4f) + ""; } else { tfUseSp.text = Mathf.RoundToInt(unitSlot.useSp / _player.maxSp * 100.0f) + ""; //Mathf.CeilToInt(unitSlot.useSp - 0.4f) + ""; } #if UNITY_EDITOR Debug.LogError("***** " + slotIndex + " - icon: " + monsterData.resource); #endif MonsterData.setUnitIcon(monsterData, spPetIcon, iconDepth); spPetIcon.MakePixelPerfect(); spPetIcon.width = 102; // if( unitData.cooltime <= 0.1f) unitSlot.maxCoolTime = 0.0f; // else unitSlot.maxCoolTime = unitData.cooltime; spBackground.spriteName = RareType.getRareBgSprite(md.rare); spFrameBorder.spriteName = RareType.getRareLineSprite(md.rare); updateSummonNum(); goActiveSkillContainer.SetActive(false); spHpBar.cachedGameObject.SetActive(false); tfUseSp.enabled = true; resetCoolTime(true); resetActiveSkillCoolTime(); }
public Monster addMonsterToStage(TranscendData td, int[] transcendLevel, bool isPlayerMon, StageMonsterData stageMonData, string monId, Vector3 position, UnitData ud = null, bool addList = true) { // Log.log("addMonsterToStage : " + monId, " pos: " + position); Monster mon; bool isUnitMonster = (stageMonData == null || stageMonData.type == StageMonsterData.Type.UNIT); if (isUnitMonster) { _tempMonResource = GameManager.info.unitData[monId].resource; _tempMonType = Monster.TYPE.UNIT; } else if (stageMonData.type == StageMonsterData.Type.HERO) { _tempMonResource = GameManager.info.heroMonsterData[monId].resource; _tempMonType = Monster.TYPE.HERO; } else if (stageMonData.type == StageMonsterData.Type.NPC) { _tempMonResource = GameManager.info.npcData[monId].resource; _tempMonType = Monster.TYPE.NPC; } #if UNITY_EDITOR //Debug.Log(_tempMonCategory); #endif if (_tempMonType == Monster.TYPE.UNIT) { mon = GameManager.me.characterManager.getMonster(false, isPlayerMon, _tempMonResource, addList); CharacterUtil.setRare(GameManager.info.unitData[monId].rare, mon); } else if (_tempMonType == Monster.TYPE.HERO) { if (GameManager.info.heroMonsterData[monId].isPlayerResourceType) { HeroMonsterData hd = GameManager.info.heroMonsterData[monId]; mon = (Monster)GameManager.me.characterManager.getPlayerCharacter(hd.resource, hd.head, hd.body, hd.weapon, hd.vehicle, hd.faceTexture, false, addList); if (mon.action != null) { GameManager.me.characterManager.setCharacterAction(mon.action, mon.category); } mon.action = null; mon.category = MonsterCategory.Category.HEROMONSTER; } else { mon = GameManager.me.characterManager.getMonster(false, isPlayerMon, _tempMonResource, addList); mon.removeRareLine(); } } else { mon = GameManager.me.characterManager.getMonster(false, isPlayerMon, _tempMonResource, addList); if (mon.monsterData.hasFaceAni == false) { //CharacterUtil.setRare(RareType.NORMAL, mon); mon.removeRareLine(); } } //position.x += (float)(GameManager.inGameRandom.Range(0,101))*0.01f;//(float)GameManager.getRandomNum()*0.01f; //mon.setPositionCtransform( position ); mon.init(td, transcendLevel, monId, isPlayerMon, _tempMonType, stageMonData); mon.setPositionCtransform(position); // Log.log("addMonsterToStage" + mon , mon.resourceId); mon.isCutSceneOnlyCharacter = false; _tempMonCategory = GameManager.info.monsterData[_tempMonResource].category; if (addList) { switch (_tempMonCategory) { case MonsterCategory.Category.HEROMONSTER: ++bossNum; //Debug.LogError("bossNum : " + bossNum); break; case MonsterCategory.Category.UNIT: if (isPlayerMon == false) { monUnitNum.Set(monUnitNum + 1); } //Debug.LogError("monUnitNum : " + monUnitNum); break; } } // 인트로 컷씬 게임용. if (GameManager.me.stageManager.isIntro) { mon.hp = 100000000; } mon.action.setFirstPosition(mon.cTransformPosition); mon.setVisible(true); mon.isEnabled = true; return(mon); }
public void init(TranscendData transcendData, int[] transcendLevel, bool isPlayerUnitData, string id, bool isPlayerMon = false, TYPE type = Monster.TYPE.UNIT, StageMonsterData sMonData = null, bool isPetMonster = false) { #if UNITY_EDITOR cTransform.gameObject.name = ((isPlayerMon)?"pm":"em") + randomNum++; tf.gameObject.name = cTransform.gameObject.name; #endif resetDefaultVals(); if (particleEffect != null) { GameManager.me.effectManager.setParticleEffect(particleEffect); } isPet = isPetMonster; isPlayerSide = isPlayerMon; fowardDirectionValue = (isPlayerSide?1000.0f:-1000.0f); isDeleteObject = false; _v = tf.localScale; _v.x = 1.0f; _v.y = 1.0f; _v.z = 1.0f; tf.localScale = _v; _q = tf.rotation; _v = _q.eulerAngles; _v.x = 0.0f; if (isPlayerSide) { _v.y = 90.0f; } else { _v.y = 270.0f; } _v.z = 0.0f; _q.eulerAngles = _v; tf.rotation = _q; isMonster = true; npcData = null; unitData = null; heroMonsterData = null; stageMonsterData = sMonData; stat.monsterType = type; bool needToSetRareEffect = false; if (type == TYPE.UNIT) { isHero = false; unitData = GameManager.info.unitData[id]; unitData.setDataToCharacter(this, transcendData, transcendLevel); if (isPlayerMon) { // GameManager.me.player.unitHpUp 소환생명력증가 // GameManager.me.player.unitDefUp float tempF = maxHp; tempF += tempF * GameManager.me.player.unitHpUp(unitData); // stat.unitHpUp; maxHp = tempF; hp = tempF; tempF = stat.defMagic; tempF += tempF * GameManager.me.player.unitDefUp(unitData); //.stat.unitDefUp; stat.defMagic = tempF; tempF = stat.defPhysic; tempF += tempF * GameManager.me.player.unitDefUp(unitData); //.stat.unitDefUp; stat.defPhysic = tempF; if (unitData.rare > 0) { needToSetRareEffect = true; } } else if (isPlayerUnitData) // 적인데 주인공 소환수 데이터를 갖고 있으면 걔는 무조건 PVP! { float tempF = maxHp; tempF += tempF * GameManager.me.pvpPlayer.unitHpUp(unitData); //.stat.unitHpUp; maxHp = tempF; hp = tempF; tempF = stat.defMagic; tempF += tempF * GameManager.me.pvpPlayer.unitDefUp(unitData); //..stat.unitDefUp; stat.defMagic = tempF; tempF = stat.defPhysic; tempF += tempF * GameManager.me.pvpPlayer.unitDefUp(unitData); //..stat.unitDefUp; stat.defPhysic = tempF; if (unitData.rare > 0) { needToSetRareEffect = true; } } #if UNITY_EDITOR cTransform.gameObject.name += "_" + unitData.rare; tf.gameObject.name = cTransform.gameObject.name; #endif setAniData(Monster.ATK_IDS[unitData.attackType.type]); setDefaultHitRange(_tempAniData, false); //(unitData.attackType.type == 1 || unitData.attackType.type == 2)); if (unitData.skill != null && unitData.skill.Length > 0) { skillSlots = new UnitSkillSlot[unitData.skill.Length]; _skillSlotsNum = skillSlots.Length; for (i = 0; i < _skillSlotsNum; ++i) { skillSlots[i] = new UnitSkillSlot(); skillSlots[i].setData(this, GameManager.info.unitSkillData[unitData.skill[i]]); } } else { skillSlots = null; } } else if (type == TYPE.HERO) // 히어로.... { isHero = true; heroMonsterData = GameManager.info.heroMonsterData[id]; heroMonsterData.setDataToCharacter(this); setAniData(Monster.ATK_IDS[heroMonsterData.attackType.type]); setDefaultHitRange(_tempAniData, false); //(heroMonsterData.attackType.type == 1 || heroMonsterData.attackType.type == 2)); setUpdateWhenOffscreen(true); int len = 0; if (stageMonsterData != null) { if (stageMonsterData.units != null) { _unitSlotsNum = stageMonsterData.units.Length; unitSlots = new UnitSlot[_unitSlotsNum]; len = unitSlots.Length; for (i = 0; i < len; ++i) { unitSlots[i] = new UnitSlot(); unitSlots[i].setData(this, GameManager.info.unitData[stageMonsterData.units[i]]); } } _skillSlotsNum = stageMonsterData.skills.Length; skillSlots = new HeroSkillSlot[_skillSlotsNum]; len = _skillSlotsNum; for (i = 0; i < len; ++i) { skillSlots[i] = new HeroSkillSlot(); GameIDData skillInfo = new GameIDData(); skillInfo.parse(stageMonsterData.skills[i], GameIDData.Type.Skill); skillSlots[i].setData(this, skillInfo); } _aiSlotsNum = stageMonsterData.ai.Length; aiSlots = new AISlot[_aiSlotsNum]; len = _aiSlotsNum; for (i = 0; i < len; ++i) { aiSlots[i] = new AISlot(); #if UNITY_EDITOR try { #endif aiSlots[i].setData(this, GameManager.info.heroMonsterAI[stageMonsterData.ai[i]]); #if UNITY_EDITOR } catch { Debug.LogError("==== ERRORRRRRR : " + stageMonsterData.ai[i]); } #endif } } } else if (type == TYPE.NPC) { isHero = false; npcData = GameManager.info.npcData[id]; GameManager.info.npcData[id].setDataToCharacter(this); } else if (type == TYPE.EFFECT) { isHero = false; } baseInit(); damageRange = monsterData.damageRange; isBlockMonster = monsterData.isBlockMonster; initShadowAndEffectSize(); _showFirst = false; _recoveryDelay.Set(0.0f); _recoveryDelayMp.Set(0.0f); _recoveryDelaySp.Set(0.0f); _hpRecoveryDelay.Set(0.0f); //_monsterShowTime = 0.0f; invincible = false; //Log.log("monsterData.category : " + monsterData.category); action = GameManager.me.characterManager.getCharacterAction(category); action.init(this); hasAni = !(category == MonsterCategory.Category.OBJECT && ani.GetClip(DEAD) == null); _v = tf.localPosition; _v.y = 1.0f; tf.localPosition = _v; _damageMotionDuration = 1000.0f; if (monsterData.deleteMotionType == ChracterDeleteMotionType.EFFECT) { deleteMotionEffect = GameManager.info.effectData[monsterData.deleteMotionValue].clone(); if (deleteMotionEffect.type == EffectData.ResourceType.CHARACTER) { #if UNITY_EDITOR Debug.Log("deleteMotionEffect.effectChracter : " + (deleteMotionEffect.effectChracter == null)); #endif if (deleteMotionEffect.effectChracter == null) { deleteMotionEffect.effectChracter = GameManager.me.characterManager.getMonster(false, isPlayerMon, deleteMotionEffect.resource, false); if (unitData != null) { CharacterUtil.setRare(unitData.rare, deleteMotionEffect.effectChracter); } else if (isHero) { deleteMotionEffect.effectChracter.removeRareLine(); } deleteMotionEffect.effectChracter.init(null, null, monsterData.deleteMotionValue, isPlayerMon, Monster.TYPE.EFFECT); deleteMotionEffect.effectChracter.isEnabled = false; deleteMotionEffect.effectChracter.cTransform.localScale = cTransform.localScale; } } } else { deleteMotionEffect = null; } if (ani[Monster.NORMAL] != null) { state = Monster.NORMAL; } initHpBar(); initMiniMap(); saveCharacterOriginalValue(); // if(needToSetRareEffect) // { //GameManager.info.effectData[UnitData.rareEffectId[unitData.rare-1]].getEffect(cTransform.position,null,cTransform); //getParticleEffectByCharacterSize(this,null,cTransform); //particleEffect = GameManager.info.effectData[UnitData.rareEffectId[unitData.rare-1]].getParticleEffectByCharacterSize(this,null,cTransform,10000,0,0,0,0.5f); // } if (GameManager.me.stageManager.isIntro) { maxHp = 10000000; _hp = 10000000; } stat.maxHp = MathUtil.RoundToInt(maxHp); if (GameManager.info.modelData.ContainsKey(resourceId)) { useRimShader = GameManager.info.modelData[resourceId].useRimShader; } }
public void init(TranscendData td, int[] transcendLevel, string id, bool isPlayerMon = false, TYPE type = Monster.TYPE.UNIT, StageMonsterData sMonData = null, bool isPetMonster = false) { init(td, transcendLevel, isPlayerMon, id, isPlayerMon, type, sMonData, isPetMonster); }
public void init(AttackerType attackerType, AttackType aType, BaseSkillData hsd = null, TranscendData td = null, int[] transcendLevel = null, bool isFromHeroSkill = false) { //Log.log("init attackdata!!!"); if (td != null) { for (int i = attrOriginal.Length - 1; i >= 0; --i) { if (isFromHeroSkill) { attr[i] = td.getValueByATTR(transcendLevel, attrOriginal[i].Get(), E_ATTR_STR[i]); } else { attr[i] = td.getValueByATTR(transcendLevel, attrOriginal[i].Get(), ATTR_STR[i]); } } } cm = GameManager.me.characterManager; _skillData = hsd; switch (type) { case NONE_0: chracterMove = moveStay; monsterShoot = shootMonster0; playerShoot = shootPlayer0; playSkill = playSkillRightNow; preDamageCalc = damageCalc0; if (_skillData.skillDataType == BaseSkillData.SkillDataType.Hero && _skillData.targeting == 1) { targetRange = _skillData.targetAttr[1]; } break; case SHORT_1: //1 //len = 1; chracterMove = moveShortAttackType; if (aType == AttackType.Attack) { monsterShoot = shootMonster1; playerShoot = shootPlayer1; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case SHORT_RANGE_2: //2 //len = 3; //데미지범위 최소데미지비율 최대타겟유닛수 chracterMove = moveShortAttackType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonster2; playerShoot = shootPlayer2; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case LINE_3: //3 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet3; playerShoot = shootPlayerBullet3; preDamageCalc = damageCalc0; } playSkill = playSkillLinear; break; case LINE_RANGE_4: //4 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet4; playerShoot = shootPlayerBullet4; preDamageCalc = damageCalc0; } playSkill = playSkillLinear; break; case LINE_PASS_5: //5 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[4]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet5; playerShoot = shootPlayerBullet5; preDamageCalc = damageCalc0; } playSkill = playSkillLinear; break; case CURVE_RANGE_6: //6 //len = 4; //타임리밋 데미지범위 최소데미지비율 최대타겟유닛수 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[1]; maxHit = attr[3]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet6; playerShoot = shootPlayerBullet6; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case DROP_RANGE_7: //7 //len = 4; //타임리밋 데미지범위 최소데미지비율 최대타겟유닛수 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[1]; maxHit = attr[3]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet7; playerShoot = shootPlayerBullet7; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case CIRCLE_RANGE_8: if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[0]; maxHit = attr[2]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet8; playerShoot = shootPlayerBullet8; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; //len = 3; //데미지범위 최소데미지비율 최대타겟유닛수 break; case FIXED_EFFECT_9: //len = 4; //최대타겟유닛수 이펙트타입 이펙트Z/R 이펙트X if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; // 11~12 사각기둥. 21~22. 원기둥. if (attr[1] > 12) { targetRange = attr[2]; } else { targetRange = attr[3]; } maxHit = attr[0]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet9; playerShoot = shootPlayerBullet9; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case CONTINUE_FIXED_EFFECT_10: //최대타겟유닛수 지속시간 이펙트타입 이펙트Z/R 이펙트X //len = 5; if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; // 11~12 사각기둥. 21~22. 원기둥. if (attr[2] > 12) { targetRange = attr[3]; } else { targetRange = attr[4]; } maxHit = attr[0]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet10; playerShoot = shootPlayerBullet10; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case CURVE_AFTER_CONTINUE_FIXED_EFFECT_11: //타임리밋 최대타겟유닛수 지속시간 이펙트타입 이펙트Z/R 이펙트X //len = 6; if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; // 11~12 사각기둥. 21~22. 원기둥. if (attr[3] > 12) { targetRange = attr[4]; } else { targetRange = attr[5]; } maxHit = attr[1]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet11; playerShoot = shootPlayerBullet11; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case ATTACH_BULLET_12: //len = 5; // 최대타겟유닛수 지속시간 이펙트타입 이펙트Z/R 이펙트X if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet12; playerShoot = shootPlayerBullet12; preDamageCalc = damageCalc0; } playSkill = playSkillLoop; break; case TIME_BOMB_13: //13 #if UNITY_EDITOR Debug.Log("==== 안쓰는 것!!!! ====!!!!"); #endif //len = 4; //폭발대기시간 데미지범위 최소데미지비율 최대타겟유닛수 if (attackerType == AttackerType.Hero) { chracterMove = moveLineType; skillMove = moveSkillHeroMonsterLineType; } else if (attackerType == AttackerType.Unit) { chracterMove = moveLineType; } if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet12; playerShoot = shootPlayerBullet12; } playSkill = playSkillNormal; break; case LAND_MINE_14: //14 //len = 4; //데미지범위 최소데미지비율 최대타겟유닛수 자연폭발시간 if (attackerType == AttackerType.Hero) { chracterMove = moveLandMineType; //moveLandMineAttackType; skillMove = moveLandMineType; //moveLandMineAttackType; } else if (attackerType == AttackerType.Unit) { chracterMove = moveLandMineType; //moveLandMineAttackType; } if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet14; playerShoot = shootPlayerBullet14; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case CHAIN_LIGHTING_15: //15 // Debug.Log("==== 수정해야함 ====!!!!"); //len = 3; //최대전체거리 최대연결거리A 최대연결거리B 최대연결유닛수 연결딜레이 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet15; playerShoot = shootPlayerBullet15; preDamageCalc = damageCalc0; } playSkill = playSkillLoop; break; case SCREEN_ATTACK_16: // 이동은 수정해야함. 그런데 굳이 할 필요는 없을듯??? if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[0]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet16; playerShoot = shootPlayerBullet16; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case METHEO_17: //17 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; targetRange = attr[5]; maxHit = attr[3]; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet17; playerShoot = shootPlayerBullet17; preDamageCalc = damageCalc0; } playSkill = playSkillNormal; break; case CHASER_18: //18 if (attackerType == AttackerType.Hero) { skillMove = moveSkillHeroMonsterLineType; } chracterMove = moveLineType; if (aType == AttackType.Attack || aType == AttackType.Skill) { monsterShoot = shootMonsterBullet18; playerShoot = shootPlayerBullet18; preDamageCalc = damageCalc0; } playSkill = playSkillLinear; break; } }