Exemple #1
0
        public override void OnAction(L2Player player)
        {
            player.SendMessage(AsString());
            //    TimeSpan ts = dtstart - DateTime.Now;
            //    player.sendMessage($"timems {(ts.TotalMilliseconds)}");
            bool newtarget = false;

            if (player.CurrentTarget == null)
            {
                player.CurrentTarget = this;
                newtarget            = true;
            }
            else
            {
                if (player.CurrentTarget.ObjId != ObjId)
                {
                    player.CurrentTarget = this;
                    newtarget            = true;
                }
            }

            if (newtarget)
            {
                player.SendPacket(new MyTargetSelected(ObjId, player.Level - Template.Level));

                StatusUpdate su = new StatusUpdate(ObjId);
                su.Add(StatusUpdate.CurHp, (int)CurHp);
                su.Add(StatusUpdate.MaxHp, (int)CharacterStat.GetStat(EffectType.BMaxHp));
                player.SendPacket(su);
            }
            else
            {
                player.AiCharacter.Attack(this);
            }
        }
Exemple #2
0
 void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
 }
Exemple #3
0
    protected CharacterStat GetChangement(int idx)
    {
        CharacterStat result = CharacterStat.zero;
        Type          type   = typeof(CharacterStat);

        foreach (PropertyInfo property in type.GetProperties())
        {
            string propertyName = property.Name;
            if (propertyName.StartsWith("raw") || property.SetMethod == null)
            {
                continue;
            }

            string value = fixedEventData[idx][propertyName].ToString();

            if (value.ToString().Length == 0)
            {
                continue;
            }

            int integerValue = int.Parse(value);

            property.SetValue(result, integerValue);
        }

        return(result);
    }
Exemple #4
0
        public override void onAction(L2Player player)
        {
            player.sendMessage(asString());
            //    TimeSpan ts = dtstart - DateTime.Now;
            //    player.sendMessage("timems "+(ts.TotalMilliseconds));
            bool newtarget = false;

            if (player.CurrentTarget == null)
            {
                player.CurrentTarget = this;
                newtarget            = true;
            }
            else
            {
                if (player.CurrentTarget.ObjID != this.ObjID)
                {
                    player.CurrentTarget = this;
                    newtarget            = true;
                }
            }

            if (newtarget)
            {
                player.sendPacket(new MyTargetSelected(ObjID, player.Level - Template.Level));

                StatusUpdate su = new StatusUpdate(ObjID);
                su.add(StatusUpdate.CUR_HP, (int)CurHP);
                su.add(StatusUpdate.MAX_HP, (int)CharacterStat.getStat(TEffectType.b_max_hp));
                player.sendPacket(su);
            }
            else
            {
                player.AICharacter.Attack(this);
            }
        }
Exemple #5
0
    public static void CKMove(this CharacterController cc,
                              Vector3 targetPosition,
                              CharacterStat stat)
    {
        Transform t = cc.transform;

        Vector3 deltaMove = Vector3.zero;
        Vector3 moveDir   = targetPosition - t.position;

        moveDir.y = 0.0f;
        if (moveDir != Vector3.zero)
        {
            t.rotation = Quaternion.RotateTowards(
                t.rotation,
                Quaternion.LookRotation(moveDir),
                stat.TurnSpeed * Time.deltaTime);
        }

        Vector3 nextMove = Vector3.MoveTowards(
            t.position,
            targetPosition,
            stat.MoveSpeed * Time.deltaTime);

        deltaMove  = nextMove - t.position;
        deltaMove += Physics.gravity * Time.deltaTime;
        cc.Move(deltaMove);
    }
Exemple #6
0
    void Start()
    {
        target = this.GetComponent <Transform>();
        stat   = this.gameObject.GetComponent <CharacterStat>();
        enemy  = this.gameObject.GetComponent <EnemyAIScript01>();
        GameObject goPlayer = GameObject.FindGameObjectWithTag("Player");

        if (goPlayer == null)
        {
            Debug.LogError("Cant Find Player...");
            Debug.Break();
        }
        player = goPlayer.transform;


        if (target == null)
        {
            Debug.LogError("Target is null");
        }
        if (player == null)
        {
            Debug.LogError("player is null");
        }

        foreach (Canvas c in FindObjectsOfType <Canvas>())
        {
            if (c.renderMode == RenderMode.ScreenSpaceOverlay)
            {
                target    = Instantiate(textPrefab, c.transform).transform;
                enemyText = target.GetChild(0).GetComponent <Text>();
                break;
            }
        }
    }
Exemple #7
0
 public Entity_Stats(double health, double initative, double action_Points, double bonus_Action_Points)
 {
     Health              = new CharacterStat(health);
     Initative           = new CharacterStat(initative);
     Action_Points       = new CharacterStat(action_Points);
     Bonus_Action_Points = new CharacterStat(bonus_Action_Points);
 }
Exemple #8
0
    private void Start()
    {
        player = GameManage.instance.player;

        for (int i = 0; i < GameManage.instance.num_char; i++)
        {
            if (Vector3.Distance(player[i].transform.position, this.transform.position) < 3)
            {
                char_stat = player[i].gameObject.GetComponent <CharacterStat>();
                if (char_stat.tag == "Player")
                {
                    char_stat.GetDamage(10f, false);
                }

                vector3_temp   = player[i].transform.position;
                vector3_temp.z = -5;

                skill_around_prefab_temp = Instantiate(skill_around_hit_prefab, vector3_temp, Quaternion.identity);//맞은 이펙트
                Destroy(skill_around_prefab_temp, 0.5f);


                vector3_temp   = player[i].transform.position - this.transform.position;
                vector3_temp.z = 0;
                player[i].transform.Translate(0.2f * (vector3_temp.normalized)); //닿은 사람 밀어내고
            }
        }
    }
Exemple #9
0
        private void UpdateCharacterStat(CharacterStat whichStat, int statValue)
        {
            var stats = _characterRepository.MainCharacter.Stats;

            stats = stats.WithNewStat(whichStat, statValue);
            _characterRepository.MainCharacter = _characterRepository.MainCharacter.WithStats(stats);
        }
Exemple #10
0
    public double ReturnStat(CharacterStat stat)
    {
        switch (stat)
        {
        case CharacterStat.Damage:
            return(Stats.damage);

        case CharacterStat.CritChance:
            break;

        case CharacterStat.CritDamage:
            break;

        case CharacterStat.MainStat:
            return(Stats.mainStat);

        case CharacterStat.Vitality:
            return(Stats.vitality);

        case CharacterStat.BotDamage:
            return(Stats.botDamage);

        case CharacterStat.BotAttackSpeed:
            return(Stats.BotAttackSpeed);
        }
        return(0);
    }
Exemple #11
0
    // Start is called before the first frame update
    void Start()
    {
        oldStat = FindObjectOfType <StatHolder>().oldStat;

        nextScene = "Main_progress";

        LoadStatInfoList();

        LoadStatList();

        UpdateStatList();

        if (oldStat != null)
        {
            foreach (Stat stat in statList)
            {
                StartCoroutine(IncreaseStat(stat));
            }
        }

        done.onClick.AddListener(() =>
        {
            EndScene();
        });
    }
 public void ModifyStat(CharacterStat stat, ref float value)
 {
     foreach (var provider in providers)
     {
         provider.ModifyStat(stat, ref value);
     }
 }
Exemple #13
0
 public void Raise(CharacterStat characterStat)
 {
     for (int i = this.listeners.Count - 1; i >= 0; --i)
     {
         this.listeners[i].OnEventRaised(characterStat);
     }
 }
        public void Load(int charId)
        {
            Stats = new CharacterStat(charId);
            Task.WaitAll(Stats.LoadFromDB());
            Look = new AvatarLook();
            Look.CopyStats(Stats);

            using (var conn = new NpgsqlConnection(Constants.DB_World0_ConString))
            {
                conn.Open();
                using (var cmd = new NpgsqlCommand($"SELECT item_id, inventory_slot FROM {Constants.DB_All_World_Schema_Name}.char_inventory_equips "
                                                   + $"WHERE character_id = {charId} AND inventory_slot < 0 AND inventory_slot > -200"
                                                   + $"ORDER BY inventory_slot ASC", conn))
                    using (var r = cmd.ExecuteReader())
                        while (r.Read())
                        {
                            var slot = Math.Abs(r.GetInt16(1));

                            if (slot >= 100)
                            {
                                slot -= 100;
                            }

                            if (Look.aEquip[slot] == 0)
                            {
                                Look.aEquip[slot] = r.GetInt32(0);
                            }
                            else
                            {
                                Look.aUnseenEquip[slot] = r.GetInt32(0);
                            }
                        }
            }
        }
Exemple #15
0
 void Awake()
 {
     if (Instance)
     {
         Destroy(gameObject);
     }
     else
     {
         DontDestroyOnLoad(gameObject);
         Instance = this;
     }
     xp                        = 100;
     fireBallRange             = new CharacterStat(30); //initial range = 15
     fireBallCooldown          = new CharacterStat(2);  //initial cooldown = 2 seconds
     fireBallDamage            = new CharacterStat(15); //inital damage of 20
     fireBallProjectilesNumber = new CharacterStat(1);  //only one projectile in the beginning
     chainRange                = new CharacterStat(25); //initial range = 25
     chainCooldown             = new CharacterStat(2);  //initial cooldown = 2 seconds
     chainDamage               = new CharacterStat(10); //inital damage of 5
     chainNumberBounces        = new CharacterStat(2);  //initial 2 bounces
     poisonRange               = new CharacterStat(20); //initial range = 20
     poisonCooldown            = new CharacterStat(2);  //initial cooldown = 2 seconds
     poisonDamage              = new CharacterStat(10); //inital damage of 5
     poisonTime                = new CharacterStat(2);  //initial time = 2 seconds
     fireBallNodes             = new Dictionary <string, SkillTreeNode>();
     chainNodes                = new Dictionary <string, SkillTreeNode>();
     poisonNodes               = new Dictionary <string, SkillTreeNode>();
 }
Exemple #16
0
  void select() {
    if (!soundPlayed) {
      soundPlayed = true;
      if (charactersMenu.isJustOpened()) {
        charactersMenu.setOpened();
      } else {
        charactersMenu.characterSelectSound.Play();
      }

      stat = CharacterManager.cm.character(name);

      charactersMenu.characterName.text = stat.characterName;
      setRarity(charactersMenu.rarity);

      charactersMenu.description.text = stat.skillName;
      if (stat.skillName != "") {
        charactersMenu.description.text += ": " + SkillManager.sm.getSkill(stat.skillCode()).description;
      }

      checkBought();
    }

    transform.localPosition = new Vector3(transform.parent.localPosition.x, charactersMenu.selectedOffset_y, charactersMenu.selectedOffset_z);

    transform.Rotate(-Vector3.up * Time.deltaTime * charactersMenu.selectedCharacterRotationSpeed);

    if (scaleChanging != originalScale.x * 2) {
      scaleChanging = Mathf.MoveTowards(scaleChanging, originalScale.x * 2, Time.deltaTime * charactersMenu.scaleChangingSpeed);
      transform.localScale = new Vector3(scaleChanging, scaleChanging, scaleChanging);
    }

    Transform aura = transform.Find("aura");
    if (aura != null) aura.gameObject.SetActive(true);
  }
Exemple #17
0
    public void AttackCheck()
    {
        CharacterStat targetStat =
            _manager.Target.GetComponent <CharacterStat>();

        CharacterStat.ProcessDamage(_manager.Stat, targetStat);
    }
Exemple #18
0
 private void OnMouseDown()
 {
     // 마우스: -1, 모바일: 0 이상
     if (EventSystem.current.IsPointerOverGameObject(-1) == true)
     {
         return;
     }
     if (EventSystem.current.IsPointerOverGameObject(0) == true)
     {
         return;
     }
     if (GameManager.instance.nowSelect == 1)
     {
         characterPrefab = characterPrefab1;
         characterStat   = characterPrefab.GetComponent <CharacterStat>();
     }
     else if (GameManager.instance.nowSelect == 2)
     {
         characterPrefab = characterPrefab2;
         characterStat   = characterPrefab.GetComponent <CharacterStat>();
     }
     if (character == null)
     {
         CharacterStat characterStat = characterPrefab.GetComponent <CharacterStat>();
         if (characterStat.canCreate(GameManager.instance.seed))
         {
             character = (GameObject)Instantiate(characterPrefab, transform.position, Quaternion.identity);
             GameManager.instance.CharacterAddCount++;
             audioSource.PlayOneShot(audioSource.clip);
             GameManager.instance.seed -= character.GetComponent <CharacterStat>().cost;
             GameManager.instance.updateText();
         }
     }
 }
        private string GetModifiersText(CharacterStat stat)
        {
            sb.Length = 0;

            for (int i = 0; i < stat.StatModifiers.Count; i++)
            {
                StatModifier mod = stat.StatModifiers[i];

                sb.Append(((Item)mod.Source).name);
                sb.Append(": ");

                if (mod.Value > 0)
                {
                    sb.Append("+");
                }

                if (mod.Type == StatModType.Flat)
                {
                    sb.Append(mod.Value);
                }
                else
                {
                    sb.Append(mod.Value * 100);
                    sb.Append("%");
                }

                if (i < stat.StatModifiers.Count - 1)
                {
                    sb.AppendLine();
                }
            }

            return(sb.ToString());
        }
 void Start()
 {
     animator       = GetComponent <Animator>();
     characterStats = GetComponent <CharacterStat>();
     //target = GameObject.Find("redWarrior").GetComponent<Transform>();
     //enemy = GameObject.Find("redWarrior");
 }
Exemple #21
0
        public void TestActionDamageAccuracyWAR()
        {
            // Example: i340 WAR using Heavy Swing
            double        potency       = 160;
            double        weaponDamage  = 99;
            double        attackPower   = 2149;
            double        determination = 1236;
            JobID         jobID         = JobID.WAR;
            CharacterStat stat          = CharacterStat.STRENGTH;
            double        tenacity      = 1007;

            double empiricalMax = 2095; // via in-game testing
            double empiricalMin = 1903; // via in-game testing
            double empiricalMid = (empiricalMax + empiricalMin) / 2;

            double traitMultiplier         = 1;
            double tenacityMultiplier      = Formulas.calculateTenacityMultiplier(tenacity);
            double determinationMultiplier = Formulas.calculateDeterminationMultiplier(determination);

            double result = Formulas.calculateActionDamage(potency, weaponDamage, attackPower, jobID, stat);

            result = Math.Truncate(result * tenacityMultiplier * determinationMultiplier * traitMultiplier);

            Assert.IsTrue((result > (empiricalMid * 0.99)) && (result < (empiricalMid * 1.01)));
        }
    private string GetStatTopText(CharacterStat stat, string statName)
    {
        sb.Length = 0;
        statName  = CheckStatNameLanguage(statName);
        sb.Append(statName);
        sb.Append(" ");
        sb.Append(stat.Value);

        StatModifiersLabelText.enabled = false;

        if (stat.Value != stat.BaseValue)
        {
            sb.Append(" (");
            sb.Append(stat.BaseValue);

            if (stat.Value > stat.BaseValue)
            {
                sb.Append("+");
            }

            sb.Append("<color=lime>" + System.Math.Round(stat.Value - stat.BaseValue, 4) + "</color>");
            sb.Append(")");
            StatModifiersLabelText.enabled = true;
        }

        return(sb.ToString());
    }
    // 아이템 팔 때 발생하는 이벤트
    // 아이템을 팔 때, 캐릭터 스텟을 가져와서 캐릭터 스텟을 수정한다.
    public void OnDropItemSellEvent(Item draggedItem)
    {
        if (PlayerItems.Count == 0)
        {
            return;
        }

        // TODO : 골드 최대치 검사하는 코드 넣기

        // 아이템 해제 후 캐릭터 스텟 수정
        {
            if (Managers.Game.Player == null)
            {
                return;
            }

            CharacterStat characterStat = Managers.Game.Player.GetComponent <PlayerController>().Stat;
            ItemStat      itemStat      = draggedItem.ItemStat;

            characterStat.ItemUnEquipment(itemStat);
        }

        Managers.Game.Player.GetComponent <CharacterStat>().Gold += draggedItem.GetComponent <ItemStat>().Price;
        PlayerItems.Remove(draggedItem);

        // 아이템을 팔 때는 아이템이 사라지는 것이니까 특별히 아래와 같은 코드를 넣어줄 것
        draggedItem.ItemImage.raycastTarget    = true;
        draggedItem.ItemCanvas.sortingOrder    = 0;
        draggedItem.ItemCanvas.overrideSorting = false;

        Managers.Resource.Destroy(draggedItem.gameObject);
    }
Exemple #24
0
    protected virtual void UpdateMaxLifeAndMana()
    {
        int previousMaxLife = (int)totalLife.Value;
        int previousMaxMana = (int)totalMana.Value;

        totalLife    = new CharacterStat(Formulas.CalculateLifePoints((int)constitution.Value));
        totalMana    = new CharacterStat(Formulas.CalculateManaPoints((int)spirit.Value));
        currentLife += (int)(totalLife.Value - previousMaxLife);
        currentMana += (int)(totalMana.Value - previousMaxMana);
        if (currentLife <= 0)
        {
            currentLife = 1;
        }
        else if (currentLife > totalLife.Value)
        {
            currentLife = (int)totalLife.Value;
        }
        if (currentMana <= 0)
        {
            currentMana = 0;
        }
        else if (currentMana > totalMana.Value)
        {
            currentMana = (int)totalMana.Value;
        }
    }
Exemple #25
0
    void Start()
    {
        m_originPos = transform.position;

        theInGame   = FindObjectOfType <InGameManager>();
        theCardInfo = FindObjectOfType <MyCardInfo>();
        theCStat    = FindObjectOfType <CharacterStat>();

        m_aniCtrl = GetComponent <Animator>();

        // 해당 유형의 비활성화 된 객체도 가져온다
        // theCharSlot = Resources.FindObjectsOfTypeAll<CharacterSlot>();
        // 해당 유형의 비활성화 된 객체도 가져온다


        // InGameManager 에서 몇 번째꺼가 켜져있나
        //m_charActiveNum = (int)eCharNum * 9 + m_charSlotNum;
        // InGameManager 에서 몇 번째꺼가 켜져있나


        dist = 1000;

        // 스폰 시 최초 한 번 실행 될 effect
        EffectActive.EffectInstance.CharacterSpawn(this.transform);
        // 스폰 시 최초 한 번 실행 될 effect
    }
 void Start()
 {
     characterStat = gameObject.GetComponent <CharacterStat>();
     gameManager   = GameObject.Find("Game Manager").GetComponent <GameManager>();
     animator      = gameObject.GetComponent <Animator>();
     audioSource   = gameObject.GetComponent <AudioSource>();
 }
Exemple #27
0
    private string GetStatModifiersText(CharacterStat stat)
    {
        sb.Length = 0;

        foreach (StatModifier mod in stat.StatModifiers)
        {
            if (sb.Length > 0)
            {
                sb.AppendLine();
            }

            if (mod.Value > 0)
            {
                sb.AppendLine();
            }

            sb.Append(mod.Value);

            EquippableItem item = mod.Source as EquippableItem;

            if (item != null)
            {
                sb.Append(" ");
                sb.Append(item.ItemName);
            }
            else
            {
                Debug.LogError("Mod is not as EI");
            }
        }
        return(sb.ToString());
    }
Exemple #28
0
    public void ShowToolTip(CharacterStat stat, string statName)
    {
        StatNameText.text      = GetStatTopText(stat, statName);
        StatModifiersText.text = GetStatModifiersText(stat);

        gameObject.SetActive(true);
    }
Exemple #29
0
    private void OnTriggerEnter(Collider other)
    {
        //prevent attack to self or teammates
        if (other.CompareTag("Enemy") && bulletStat.attacker.CompareTag("Player"))
        {
            CharacterStat stat = other.GetComponent <CharacterStat>();
            if (stat != null)
            {
                stat.OnDamage(bulletStat.totalDamage);
            }
            if (bulletStat.isFlinch)
            {
                other.SendMessage("Flinch", transform.rotation * dirction, SendMessageOptions.DontRequireReceiver);
            }
        }
        else if (other.CompareTag("Player") && bulletStat.attacker.CompareTag("Enemy"))
        {
            CharacterStat stat = other.GetComponent <CharacterStat>();
            if (stat != null)
            {
                stat.OnDamage(bulletStat.totalDamage);
            }
            if (bulletStat.isFlinch)
            {
                other.SendMessage("Flinch", transform.rotation * dirction, SendMessageOptions.DontRequireReceiver);
            }
        }


        Destroy(gameObject);
    }
Exemple #30
0
    public void TakeDamage(CharacterStat from, float damage)
    {
        if (damage >= Defense)
        {
            _hp = Mathf.Clamp(_hp - (damage - this.Defense), 0, _maxHp);
        }

        if (from.isPlayer)
        {
            var playerStat = from as PlayerStat;

            if (PlayerFSMManager.Instance.isNormal && !PlayerFSMManager.Instance.isSkill3 && !PlayerFSMManager.Instance.isSkill2AttackTime)
            {
                PlayerFSMManager.Instance.SpecialGauge += playerStat.feverGaugeGetValue;
            }
            if (PlayerFSMManager.Instance.isNormal && PlayerFSMManager.Instance.isSkill2AttackTime && !PlayerFSMManager.Instance.isSkill3)
            {
                PlayerFSMManager.Instance.SpecialGauge += playerStat.skill2GaugeGetValue;
            }
            if (PlayerFSMManager.Instance.isNormal && PlayerFSMManager.Instance.isSkill3)
            {
                PlayerFSMManager.Instance.SpecialGauge += playerStat.skill3GaugeGetValue;
            }
        }
    }
Exemple #31
0
    public static void JJMove(CharacterController cc, Transform target, CharacterStat stat)
    {
        Transform transform = cc.transform;

        //B-A는 A에서 B로 향하는 벡터.

        Vector3 dir = target.position - transform.position;

        dir.y = 0.0f;
        if (dir != Vector3.zero)
        {
            transform.rotation = Quaternion.RotateTowards
                                 (
                transform.rotation,
                Quaternion.LookRotation(dir),
                stat.turnSpeed * Time.deltaTime
                                 );
        }


        //transform.position = Vector3.MoveTowards(
        //    transform.position,
        //    manager.marker.position,
        //    manager.stat.moveSpeed * Time.deltaTime);

        Vector3 deltaMove = Vector3.MoveTowards(
            transform.position,
            target.position,
            stat.moveSpeed * Time.deltaTime) - transform.position;

        deltaMove.y = -stat.fallSpeed * Time.deltaTime;

        cc.Move(deltaMove);
    }
 public SetStatMessage(CharacterStat stat, int value)
     : this()
 {
     this.Stat = stat;
     this.Value = value;
 }
Exemple #33
0
    public double ReturnStat(CharacterStat stat)
    {
        switch (stat)
        {
            case CharacterStat.Damage:
                return Stats.damage;
            case CharacterStat.CritChance:
                break;
            case CharacterStat.CritDamage:
                break;
            case CharacterStat.MainStat:
                return Stats.mainStat;
            case CharacterStat.Vitality:
                return Stats.vitality;
            case CharacterStat.BotDamage:
                return Stats.botDamage;
            case CharacterStat.BotAttackSpeed:
                return Stats.BotAttackSpeed;

        }
        return 0;
    }