Exemple #1
0
    // added random pre-attack delay after demo so mobs don't all attack at once
    private void Attack(GameObject target, float t)
    {
        MobController enemy = target.GetComponent <MobController>();

        LookAt(target.transform.position, t);
        if (attackTimer <= 0)
        {
            preAttackDelay = Random.Range(0f, preAttackMaxDelay);
            if (preAttackTimer <= 0)
            {
                animation.Play("attack");
                attackTimer    += attackDelay;
                preAttackTimer += preAttackDelay;
                if (gameObject.name.Equals("skeletonMage(Clone)"))
                {
                    GameObject fireball = (GameObject)Instantiate(fireballPrefab, transform.position + (transform.forward + transform.up) / 2f, Quaternion.identity);
                    fireball.GetComponent <FireballScript>().Init(gameObject, enemy.transform.position, friendly);
                }
                else
                {
                    if (Random.Range(0f, 1f) > enemy.dodgeChance)
                    {
                        enemy.TakeDamage(CalcDamage(enemy.armor), false);
                    }
                    else
                    {
                        enemy.Dodge();
                    }
                }
            }
            preAttackTimer -= t;
        }
        attackTimer -= t;
    }
    public void SetControllingObject(GameObject g)
    {
        // Set Fuse of Old Mob
        MobController mob = parentObject.GetComponentInChildren<MobController>();
        mob.SetFuse(GameController.GetInstance.TimeRemaining);

        // Swap Bodies
        Vector3 offset = transform.localPosition;
        Quaternion offrot = transform.localRotation;

        transform.parent = g.transform;
        transform.localPosition = offset;
        transform.localRotation = offrot;

        parentObject = g;

        mobController.isAIEnabled = true;
        mobController = transform.root.GetComponentInChildren<MobController>();
        mobController.isAIEnabled = false;

        meshTransform = transform.root.FindChild("Mesh");

        // Resets Explosion Timer
        GameController.GetInstance.StartTimer();
    }
 private void Explode()
 {
     Collider[] hitColliders = Physics.OverlapSphere(transform.position, radius);
     if (hitColliders.Length > 0)
     {
         foreach (Collider inRangeUnit in hitColliders)
         {
             if (inRangeUnit.transform.tag == "Mob")
             {
                 MobController enemy = inRangeUnit.gameObject.GetComponent <MobController>();
                 if (enemy != null && friendly != enemy.friendly)
                 {
                     if (Random.Range(0f, 1f) > enemy.dodgeChance)
                     {
                         enemy.Project(((enemy.transform.position + Vector3.up * 10f) - transform.position).normalized * projectionPower);
                         enemy.TakeDamage(caster.GetComponent <MobController>().CalcDamage(enemy.armor), true);
                     }
                     else
                     {
                         enemy.Dodge();
                     }
                 }
             }
         }
     }
 }
Exemple #4
0
    public void SetControllingObject(GameObject g)
    {
        // Set Fuse of Old Mob
        MobController mob = parentObject.GetComponentInChildren <MobController>();

        mob.SetFuse(GameController.GetInstance.TimeRemaining);

        // Swap Bodies
        Vector3    offset = transform.localPosition;
        Quaternion offrot = transform.localRotation;

        transform.parent        = g.transform;
        transform.localPosition = offset;
        transform.localRotation = offrot;

        parentObject = g;

        mobController.isAIEnabled = true;
        mobController             = transform.root.GetComponentInChildren <MobController>();
        mobController.isAIEnabled = false;

        meshTransform = transform.root.FindChild("Mesh");

        // Resets Explosion Timer
        GameController.GetInstance.StartTimer();
    }
 // Start is called before the first frame update
 void Start()
 {
     mc = GetComponent <MobController>();
     StartSetting[0] = mc.shotTime; StartSetting[1] = mc.bonusTime;
     StartSetting[2] = mc.angle; StartSetting[3] = mc.bulletNum; StartSetting[4] = mc.atk;
     StartCoroutine(ChangeForm(changeTime));
 }
    public void spawnCircular(Vector3 center, float radius)
    {
        int     angle = 0;
        Vector3 pointInCircle;

        for (int i = 0; i < mobCount; i++)
        {
            angle = Random.Range(0, 360);

            pointInCircle = new Vector3(center.x + radius * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT) * Mathf.Sin(angle * Mathf.Deg2Rad), 0,
                                        center.z + radius * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT) * Mathf.Cos(angle * Mathf.Deg2Rad));

            GameObject g = Instantiate(mobPrefab, pointInCircle, Quaternion.identity) as GameObject;

            // Randomize MoveSpeed
            MobController m = g.GetComponent <MobController>();
            m.MoveSpeed = MOVESPEED * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT);

            // Randomize Scale
            Vector3 lScale = m.transform.localScale;
            lScale = new Vector3(lScale.x * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT),
                                 lScale.y * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT),
                                 lScale.z * Random.Range(1 - JIGGLE_AMOUNT, 1 + JIGGLE_AMOUNT));
            m.transform.localScale = lScale;
        }
    }
Exemple #7
0
    void Awake()
    {
        controller = GetComponent <MobController>();

        _originalPosition = transform.position;

        // Set random initial rotation
        StartCoroutine(NewHeading());
    }
Exemple #8
0
    IEnumerator MobCoroutine()
    {
        Debug.Log("MobCoroutine ReOn");
        while (isSpawn)
        {
            yield return(new WaitForSeconds(spawnTime));

            if (nowMob < 3)
            {
                int mobNum = Random.Range(1, 3);
                switch (mobNum)
                {
                case 1:
                    if (unUsedMob1.Count != 0)
                    {
                        MobController _mob = unUsedMob1[0].GetComponent <MobController>();
                        _mob.hp = _mob.maxHp;
                        unUsedMob1[0].transform.position = new Vector3(7, Random.Range(-4, 5), 0);
                        unUsedMob1[0].SetActive(true);
                        _mob.parents = this;
                        nowMob++;
                        unUsedMob1.RemoveAt(0);
                    }
                    else
                    {
                        MobController _mob = Instantiate(mobData[mobNum]).GetComponent <MobController>();;
                        _mob.transform.position          = new Vector3(7, Random.Range(-4, 5), 0);
                        _mob.gameObject.transform.parent = null;
                        _mob.parents = this;
                        nowMob++;
                    }
                    break;

                case 2:
                    if (unUsedMob2.Count != 0)
                    {
                        MobController _mob = unUsedMob2[0].GetComponent <MobController>();
                        _mob.hp = _mob.maxHp;
                        unUsedMob2[0].transform.position = new Vector3(7, Random.Range(-4, 5), 0);
                        unUsedMob2[0].SetActive(true);
                        _mob.parents = this;
                        nowMob++;
                        unUsedMob2.RemoveAt(0);
                    }
                    else
                    {
                        MobController _mob = Instantiate(mobData[mobNum]).GetComponent <MobController>();;
                        _mob.transform.position          = new Vector3(7, Random.Range(-4, 5), 0);
                        _mob.gameObject.transform.parent = null;
                        _mob.parents = this;
                        nowMob++;
                    }
                    break;
                }
            }
        }
    }
Exemple #9
0
        void OnSceneGUI()
        {
            MobController mob_controller = (MobController)target;

            Handles.color = Color.blue;
            if (mob_controller.patrol_script != null)
            {
                Handles.DrawLine(mob_controller.transform.position, mob_controller.patrol_script.get_destination());
            }
        }
Exemple #10
0
 // Update is called once per frame
 void Update()
 {
     if (myMob != null)
     {
         this.transform.position = new Vector3(myMob.transform.position.x - values.x, myMob.transform.position.y - values.y, myMob.transform.position.z - values.z);
     }
     else
     {
         myMob = GameObject.FindGameObjectWithTag(myMobtag).gameObject.GetComponent <MobController>();
     }
 }
Exemple #11
0
 private void OnCollisionEnter(Collision collision)
 {
     if (collision.gameObject.tag == "mob")
     {
         CameraShake.instance.Shake(0.3f, 0.1f);
         MobController mobb = collision.gameObject.GetComponent <MobController>();
         mobb.hp -= controller.atk;
         mobb.BeHurt();
         this.gameObject.SetActive(false);
         controller.unUsedBullets.Add(this.gameObject);
     }
 }
Exemple #12
0
        // Start is called before the first frame update
        void Start()
        {
            gc = GameObject.Find("Controller").GetComponent <GameController>();
            pa = GameObject.Find("Controller").GetComponent <PlayerAttack>();
            mc = GameObject.Find("Controller").GetComponent <MobController>();
            //id = (int) transform.position.x + (int) transform.position.y + (int) transform.position.z;
            hp          = 100f;
            stamina     = 100f;
            breath      = 100f;
            basicAttack = 20f;

            seeCanvas = false;
            isDead    = false;
        }
Exemple #13
0
        public OtherGrabbedLootEvent(Dictionary <byte, object> parameters) : base(parameters)
        {
            ConsoleManager.WriteLineForNetworkHandler(GetType().Name, parameters);

            try
            {
                if (parameters.ContainsKey(1))
                {
                    _lootedBody = MobController.IsMob(parameters[1].ToString()) ? LanguageController.Translation("MOB") : parameters[1].ToString();
                }

                if (parameters.ContainsKey(2))
                {
                    _looterName = parameters[2].ToString();
                }

                if (parameters.ContainsKey(3))
                {
                    _isSilver = parameters[3].ObjectToBool();
                }

                if (parameters.ContainsKey(4))
                {
                    _itemId = parameters[4].ObjectToInt();
                }

                if (parameters.ContainsKey(5))
                {
                    _quantity = parameters[5].ObjectToInt();
                }

                Loot = new Loot()
                {
                    LootedBody = _lootedBody,
                    IsTrash    = ItemController.IsTrash(_itemId),
                    Item       = ItemController.GetItemByIndex(_itemId),
                    ItemId     = _itemId,
                    LooterName = _looterName,
                    IsSilver   = _isSilver,
                    Quantity   = _quantity
                };
            }
            catch (Exception e)
            {
                ConsoleManager.WriteLineForError(MethodBase.GetCurrentMethod().DeclaringType, e);
            }
        }
    private float FindClostestMob()
    {
        float         distanceToClosestMob = 100f;
        MobController closestMob           = null;

        MobController[] allMob = GameObject.FindObjectsOfType <MobController>();

        foreach (MobController currentMob in allMob)
        {
            float distanceToMob = (currentMob.transform.position - gameObject.transform.position).sqrMagnitude;
            if (distanceToMob < distanceToClosestMob)
            {
                distanceToClosestMob = distanceToMob;
                closestMob           = currentMob;
            }
        }
        return(distanceToClosestMob);
    }
Exemple #15
0
 public Mob(MobController mController)
 {
     this.mController = mController;
     this.uID = WMap.Instance.mobsCount;
     this.maxHP = mController.getData().getMaxHP();
     this.curHP = maxHP;
     WMap.Instance.mobsCount++;
     this.spawnX = mController.getSpawnX();
     this.spawnY = mController.getSpawnY();
     this.area = WMap.Instance.getGrid(mController.getMap()).getAreaByRound(spawnX, spawnY);
     this.positionX = Randomizer.NextInt(this.area.getGrid().getaSize()) + this.area.getAreaStartingPosition()[0]; // cause I can.
     this.positionY = Randomizer.NextInt(this.area.getGrid().getaSize()) + this.area.getAreaStartingPosition()[1]; // cause I can.
     if(area != null)
         area.addMob(this);
     else
         Console.WriteLine("out of grid kurwa. {0} {1} {2}", mController.getMap(), spawnX, spawnY);
     this.death = false;
 }
Exemple #16
0
    /// <summary>
    /// Sets a new position when the user clicks
    /// </summary>

    public void SetTargetPosition()
    {
        //Plane plane = new Plane(Vector3.up, transform.position);
        Ray ray;

        if (clickposition.x > 1600 && clickposition.y < 320)
        {
            ray = MinimapCamera.ScreenPointToRay(Input.mousePosition);
        }
        else
        {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        }
        //float point = 0f;
        RaycastHit hite;

        if (Physics.Raycast(ray, out hite))
        {
            if (!hite.collider.gameObject.tag.Contains(this.statsvalues.team) && !hite.collider.gameObject.tag.Contains("Obstacle"))
            {
                print(hite.collider.gameObject.tag + ": " + hite.point);
                if (objective != hite.collider.gameObject.GetComponent <MobController>())
                {
                    isAttacking = false;
                    objective   = hite.collider.gameObject.GetComponent <MobController>();
                }
            }
            else
            {
                this.objective = null;
                isAttacking    = false;
            }

            targetPosition = hite.point;
        }


        isMoving = true;
    }
Exemple #17
0
 public Mob(MobController mController)
 {
     this.mController = mController;
     this.uID         = WMap.Instance.mobsCount;
     this.maxHP       = mController.getData().getMaxHP();
     this.curHP       = maxHP;
     WMap.Instance.mobsCount++;
     this.spawnX    = mController.getSpawnX();
     this.spawnY    = mController.getSpawnY();
     this.area      = WMap.Instance.getGrid(mController.getMap()).getAreaByRound(spawnX, spawnY);
     this.positionX = Randomizer.NextInt(this.area.getGrid().getaSize()) + this.area.getAreaStartingPosition()[0];             // cause I can.
     this.positionY = Randomizer.NextInt(this.area.getGrid().getaSize()) + this.area.getAreaStartingPosition()[1];             // cause I can.
     if (area != null)
     {
         area.addMob(this);
     }
     else
     {
         Console.WriteLine("out of grid kurwa. {0} {1} {2}", mController.getMap(), spawnX, spawnY);
     }
     this.death = false;
 }
Exemple #18
0
    void Start()
    {
        /*
         * "Particle Effects"
         */
        // Get All Cubes
        cubes = transform.GetComponentsInChildren <Rigidbody>();

        // Jiggle Positions
        for (int i = 0; i < cubes.Length; i++)
        {
            cubes[i].transform.position += new Vector3(Random.Range(-0.25f, 0.25f), Random.Range(0, 0.25f), Random.Range(-0.25f, 0.25f));
        }

        // Add Explosion Force
        for (int i = 0; i < cubes.Length; i++)
        {
            cubes[i].AddExplosionForce(40f, transform.position, explosionRadius);
        }

        /*
         * Explosion Force
         */
        GameObject[] mobs = GameObject.FindGameObjectsWithTag("Mob");
        for (int i = 0; i < mobs.Length; i++)
        {
            if (Vector3.Distance(transform.position, mobs[i].transform.position) <= explosionRadius)
            {
                MobController m = mobs[i].GetComponent <MobController>();

                m.BlownAway();
                mobs[i].rigidbody.AddExplosionForce(400f, transform.position, explosionRadius);

                TimedDestroy t = mobs[i].AddComponent <TimedDestroy>();
                t.destroyTime = explosionLength;
            }
        }
    }
Exemple #19
0
    void RpcHitReaction(NetworkInstanceId netId, Vector3 point, Vector3 normal, NetworkInstanceId attackerid, Hitpart part)
    {
        GameObject hit      = ClientScene.FindLocalObject(netId);
        GameObject attacker = ClientScene.FindLocalObject(attackerid);

        if (hit != null && attacker != null)
        {
            if (hit.GetComponent <Rigidbody>() != null)
            {
                hit.GetComponent <Rigidbody>().AddForce(fpsCamera.transform.forward * 200f);
            }
            BulletSound bs = hit.GetComponent <BulletSound>();
            if (bs != null)
            {
                bs.Play();
            }
            BulletRandomSound brs = hit.GetComponent <BulletRandomSound>();
            if (brs != null)
            {
                brs.Play();
            }

            Hitreaction hr = hit.GetComponent <Hitreaction>();
            if (hr != null)
            {
                MobController mc = hit.GetComponent <MobController>();
                if (mc != null)
                {
                    mc.attacker = attacker;
                }
                hr.React(part.ToString());
            }

            MakeImpactFX(point, normal);
            MakeBulletHole(point, normal, hit.transform);
        }
    }
Exemple #20
0
    void Awake()
    {
#if UNITY_EDITOR
        Log.level = Log.LogLevel.DEBUG;
#else
        Log.level = Log.LogLevel.INFO;
#endif
        Debug.Log("---------------  Awake ------------------------");
        Transform facadeContainer = this.transform.Find("facades");
        facades = new UIFacade[facadeContainer.childCount];
        for (int i = 0; i < facadeContainer.childCount; i++)
        {
            Transform child = facadeContainer.GetChild(i);
            facades[i] = child.GetComponent <UIFacade>();
            facades[i].Register();
        }

        initialize();

        playerModel_ = new PlayerModel();
        PlayerView       playerView       = new PlayerView();
        PlayerController playerController = new PlayerController();
        framework.modelCenter.Register(PlayerModel.NAME, playerModel_);
        framework.viewCenter.Register(PlayerView.NAME, playerView);
        framework.controllerCenter.Register(PlayerController.NAME, playerController);

        mobModel_ = new MobModel();
        MobView       mobView       = new MobView();
        MobController mobController = new MobController();
        framework.modelCenter.Register(MobModel.NAME, mobModel_);
        framework.viewCenter.Register(MobView.NAME, mobView);
        framework.controllerCenter.Register(MobController.NAME, mobController);

        inputController_ = new InputController();
        framework.controllerCenter.Register(InputController.NAME, inputController_);
    }
Exemple #21
0
 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     mc = animator.GetComponent <MobController>();
     nm = animator.GetComponent <NavMeshAgent>();
 }
 //how long it takes to possess a node
 void Awake()
 {
     playerControllerInstance = this;
     mobController = transform.root.GetComponentInChildren<MobController>();
     meshTransform = transform.root.FindChild("Mesh");
 }
 public void OnHitMob(MobController mobController)
 {
     Debug.Log("#Warrior# hit mob " + mobController);
     mobController.TakeMeleeDamage(weapon.damage);
 }
Exemple #24
0
 public Mob(EntityType entityTypeId, Level level) : base(entityTypeId, level)
 {
     Width      = Length = 0.6;
     Height     = 1.80;
     Controller = new MobController(this);
 }
Exemple #25
0
 public ToTargetState(MobController mob) {
     this.mob = mob;
     this.player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
     movement = player.transform.position - mob.transform.position;
     movement.Normalize();
 }
 public void OnHitMob(MobController mobController)
 {
     Debug.Log("#Warrior# hit mob " + mobController);
     mobController.TakeMeleeDamage(weapon.damage);
 }
Exemple #27
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        GameObject other = collision.gameObject;

        Debug.Log("collided with " + other.name);


        if (other.tag == "Mob")
        {
            MobController mc = other.GetComponent <MobController>();
            if (mc.mob.Type == MobType.Enemy)
            {
                StartCoroutine(Damage((int)mc.mob.AttackDamage));
            }
        }
        if (other.tag == "Player")
        {
            PlayerController pc = other.GetComponent <PlayerController>();
        }
        if (other.tag == "Projectile")
        {
            ProjectileController pc = other.GetComponent <ProjectileController>();
        }
        if (other.tag == "Item")
        {
            ItemController item = other.GetComponent <ItemController>();

            /*
             * switch (item.item.Type)
             * {
             *  case ItemType.None:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Attack:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Auxiliar:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Magic:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Especial:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Taunt:
             *      {
             *
             *      }
             *      break;
             *  case ItemType.Item:
             *      {
             *          for(int i = 0; i < Items.Length; i++)
             *          {
             *              if (Items[i] == null)
             *              {
             *                  Items[i] = item.item;
             *                  Destroy(other);
             *                  break;
             *              }
             *          }
             *      }
             *      break;
             * }
             */
        }
    }
Exemple #28
0
 private void Start()
 {
     animator      = GetComponentInChildren <Animator>();
     mobController = GetComponent <MobController>();
 }
Exemple #29
0
 public DeadState(MobController mob) {
     this.mob = mob;
     mob.Instantiate(mob.explosion.gameObject, mob.transform.position);
     mob.Destroy();
 }
Exemple #30
0
 public FollowingPathState(MobController mob){
     this.mob = mob;
     movementClock.Start();
     nextNode = mob.startingNode;
 }
Exemple #31
0
 public FollowingPlayerState(MobController mob) {
     player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
     this.mob = mob;
     movementClock.Start();
     currentNode = mob.startingNode;
     GetRightDirection();
 }
Exemple #32
0
    //how long it takes to possess a node

    void Awake()
    {
        playerControllerInstance = this;
        mobController            = transform.root.GetComponentInChildren <MobController>();
        meshTransform            = transform.root.FindChild("Mesh");
    }
Exemple #33
0
    // Update is called once per frame
    protected virtual void Update()
    {
        LineUpdater();
        navagent.speed = this.statsvalues.speed / 70;
        if (this.statsvalues.life <= 0)
        {
            this.statsvalues.life = 0;
            LifeBar.fillAmount    = this.statsvalues.life / this.statsvalues.totallife;
            Lifetext.text         = (int)this.statsvalues.life + " / " + (int)this.statsvalues.totallife + "                      +" + this.statsvalues.regen;
            Kill();
        }
        else
        {
            base.UpdateLife();
            LifeBar.fillAmount = this.statsvalues.life / this.statsvalues.totallife;
            Lifetext.text      = (int)this.statsvalues.life + " / " + (int)this.statsvalues.totallife + "                      +" + this.statsvalues.regen;

            if (Input.GetMouseButtonDown(1))
            {
                clickposition = Input.mousePosition;
                SetTargetPosition();
            }

            if (this.transform.position.x < targetPosition.x + .5 && this.transform.position.x > targetPosition.x - .5)
            {
                if (this.transform.position.z < targetPosition.z + .5 && this.transform.position.z > targetPosition.z - .5)
                {
                    if (!this.objective)
                    {
                        isMoving = false;
                    }
                }
            }

            if (isMoving == true)
            {
                MovePlayer();
            }

            if (this.objective)
            {
                if (this.objective.GetLife() > 0)
                {
                    float distance;
                    distance = Vector3.Distance(this.transform.position, objective.transform.position);
                    distance = distance - (objective.transform.lossyScale.x);

                    if (distance <= this.statsvalues.attackrange)
                    {
                        isAttacking = true;
                    }
                    else
                    {
                        isAttacking    = false;
                        targetPosition = this.objective.transform.position;
                        MovePlayer();
                    }
                }
                else
                {
                    isAttacking    = false;
                    this.objective = null;
                    targetPosition = this.transform.position;
                }
            }
        }

        if (rotate == true)
        {
            RotatePlayer();
        }
    }