示例#1
0
    public override void GetFeared(RollResultEnum rollResult, Monster monster)
    {
        if (bCanBeFeared)
        {
            int fearDamage = 0;

            if (rollResult == RollResultEnum.Crit)
            {
                fearDamage      = 1000;
                bInConversation = false;
                bWantsToAttack  = true;

                bCanListen = false;
            }
            else if (rollResult == RollResultEnum.Normal)
            {
                fearDamage      = 1;
                bInConversation = false;
                bWantsToAttack  = true;

                bCanListen = false;
            }

            else
            {
                bCanBeFeared    = false;
                bInConversation = false;
                bWantsToAttack  = true;
            }

            AddFear(fearDamage);
        }
    }
示例#2
0
    public override void GetConvinced(RollResultEnum rollResult, Monster monster)
    {
        if (bCanListen)
        {
            int convinceDamage = 0;

            if (rollResult == RollResultEnum.Crit)
            {
                convinceDamage  = 1000;
                bInConversation = true;
                bWantsToAttack  = false;
            }
            else if (rollResult == RollResultEnum.Normal)
            {
                convinceDamage  = 1;
                bInConversation = true;
                bWantsToAttack  = false;
            }
            else
            {
                bCanListen      = false;
                bWantsToAttack  = true;
                bInConversation = false;
            }


            AddConvice(convinceDamage);
        }
    }
示例#3
0
    public override void GetConvinced(RollResultEnum rollResult, Monster monster)
    {
        int convinceDamage = 0;

        if (rollResult == RollResultEnum.Crit)
        {
            convinceDamage = 1000;
        }
        else if (rollResult == RollResultEnum.Normal)
        {
            convinceDamage = 1;
        }

        AddConvice(convinceDamage);
    }
示例#4
0
    public override void GetFeared(RollResultEnum rollResult, Monster monster)
    {
        int fearDamage = 0;

        if (rollResult == RollResultEnum.Crit)
        {
            fearDamage = 1000;
        }
        else if (rollResult == RollResultEnum.Normal)
        {
            fearDamage = 1;
        }

        AddFear(fearDamage);
    }
 public GameObject GetParticuleOfAction(ActionType action, RollResultEnum rollResult)
 {
     if (action == ActionType.FEAR)
     {
         if (rollResult == RollResultEnum.Crit)
         {
             return(defaultParticules.fearCritParticule);
         }
         if (rollResult == RollResultEnum.Fail)
         {
             return(defaultParticules.fearFailParticule);
         }
         return(defaultParticules.fearParticule);
     }
     else if (action == ActionType.ATTACK)
     {
         if (rollResult == RollResultEnum.Fail)
         {
             return(defaultParticules.attackFailParticule);
         }
         else
         {
             return(null);
         }
     }
     else if (action == ActionType.TALK)
     {
         if (rollResult == RollResultEnum.Normal)
         {
             return(defaultParticules.talkParticule);
         }
         else if (rollResult == RollResultEnum.Crit)
         {
             return(defaultParticules.talkCritParticule);
         }
         else
         {
             return(defaultParticules.talkFailParticule);
         }
     }
     else
     {
         return(null);
     }
 }
示例#6
0
    void Update()
    {
        if (fighter.nID != 0)
        {
            if (!initPar)
            {
                initPar = true;
                InitParticules();
            }
        }
        if (fighter.nCurrentHealth == 0 && fighterRenderer != null)
        {
            fighterRenderer.enabled = false;
            gameObject.transform.GetChild(0).gameObject.SetActive(false);
            ui.SetActive(false);
            canvas.SetActive(false);

            Renderer[] rs = GetComponentsInChildren <Renderer>();
            foreach (Renderer r in rs)
            {
                r.enabled = false;
            }

            // mutation
        }
        if (fighter.justTookDamage)
        {
            fighter.justTookDamage = false;
            slash.Play();

            if (!isTrigger)
            {
                isTrigger = true;

                GameObject g = GameObject.FindGameObjectWithTag("ParticuleManager");
                if (g != null && fighter.eCreatureType == CreatureType.Monster)
                {
                    ParticuleManager pm = g.GetComponent <ParticuleManager>();
                    GameObject       go = Instantiate(pm.defaultParticules.trigger) as GameObject;

                    // go.transform.position = ui.transform.position;
                    go.transform.parent        = ui.transform;
                    go.transform.localPosition = Vector3.zero;
                    go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y + 0.5f, go.transform.localPosition.z - 2f);

                    ParticleSystem par = go.GetComponent <ParticleSystem>();

                    par.Play();

                    Destroy(go, 2f);
                }
            }
        }

        if (fighter.bTryToescape && !bHasBeenTurned)
        {
            bHasBeenTurned = true;
            fighterRenderer.gameObject.transform.Rotate(new Vector3(0, 180, 0));
            //  renderer.gameObject.transform.Rotate(new Vector3(0, 180, 0));
        }

        if (fighter.justdidAction)
        {
            fighter.justdidAction = false;

            if (fighter.lastAction == ActionType.ATTACK)
            {
                if (fighter.lastActionResult == RollResultEnum.Fail)
                {
                    GameObject go = Instantiate(pm.GetParticuleOfAction(fighter.lastAction, fighter.lastActionResult)) as GameObject;
                    go.transform.position      = ui.transform.position;
                    go.transform.localPosition = new Vector3(go.transform.localPosition.x - 0.5f, go.transform.localPosition.y, go.transform.localPosition.z);

                    particulPlaying = go.GetComponent <ParticleSystem>();

                    particulPlaying.Play();

                    Destroy(go, 5f);
                }
                else
                {
                    GameObject partic = pm.GetParticuleAttack(fighter);
                    if (partic != null)
                    {
                        GameObject go = Instantiate(partic) as GameObject;
                        go.transform.position      = ui.transform.position;
                        go.transform.localPosition = new Vector3(go.transform.localPosition.x, go.transform.localPosition.y, go.transform.localPosition.z);

                        particulPlaying = go.GetComponent <ParticleSystem>();

                        particulPlaying.Play();

                        Destroy(go, 5f);
                    }


                    partic = pm.GetParticuleImpact(fighter);
                    if (partic != null)
                    {
                        GameObject go2 = Instantiate(partic) as GameObject;
                        go2.transform.position      = fighter.lastAttackedUI.ui.transform.position;
                        go2.transform.localPosition = new Vector3(go2.transform.localPosition.x, go2.transform.localPosition.y, go2.transform.localPosition.z);
                        go2.GetComponent <ParticleSystem>().Play();

                        Destroy(go2, 5f);
                    }

                    if (fighter.lastActionResult == RollResultEnum.Crit)
                    {
                        GameObject       g   = GameObject.FindGameObjectWithTag("ParticuleManager");
                        ParticuleManager pm  = g.GetComponent <ParticuleManager>();
                        GameObject       go2 = Instantiate(pm.defaultParticules.attackCriti) as GameObject;
                        go2.transform.parent        = fighter.lastAttackedUI.ui.transform;
                        go2.transform.localPosition = Vector3.zero;
                        go2.transform.localPosition = new Vector3(go2.transform.localPosition.x - 0.5f, go2.transform.localPosition.y + 1, go2.transform.localPosition.z);
                        go2.GetComponent <ParticleSystem>().Play();

                        Destroy(go2, 5f);
                    }


                    // attackParticules.Play();
                    //  particulPlaying = attackParticules;
                }
            }


            else if (fighter.lastAction == ActionType.TALK)
            {
                RollResultEnum result = RollResultEnum.Normal;

                if (fighter.eCreatureType == CreatureType.Monster)
                {
                    result = fighter.lastActionResult;
                }

                GameObject go         = Instantiate(pm.GetParticuleOfAction(fighter.lastAction, result)) as GameObject;
                GameObject meshHolder = GameObject.FindGameObjectWithTag("DialogueMesh");

                if (meshHolder == null)
                {
                    go.transform.position = ui.transform.position;
                }
                else
                {
                    //    meshHolder.GetComponent<MeshMonsterBuble>().UpdateMeshHoldePosition();
                    go.transform.position = meshHolder.transform.position;
                }

                go.transform.localPosition = new Vector3(go.transform.localPosition.x - 1f, go.transform.localPosition.y, go.transform.localPosition.z);

                talkParticules = go.GetComponent <ParticleSystem>();

                talkParticules.Play();
                particulPlaying = talkParticules;

                Destroy(go, 5f);
            }
            else if (fighter.lastAction == ActionType.FEAR)
            {
                GameObject go = Instantiate(pm.GetParticuleOfAction(fighter.lastAction, fighter.lastActionResult)) as GameObject;

                GameObject meshHolder = GameObject.FindGameObjectWithTag("DialogueMesh");

                if (meshHolder == null)
                {
                    go.transform.position = ui.transform.position;
                }
                else
                {
                    //  meshHolder.GetComponent<MeshMonsterBuble>().UpdateMeshHoldePosition();
                    go.transform.position = meshHolder.transform.position;
                }
                go.transform.localPosition = new Vector3(go.transform.localPosition.x - 1f, go.transform.localPosition.y, go.transform.localPosition.z);

                fearParticules = go.GetComponent <ParticleSystem>();

                fearParticules.Play();
                particulPlaying = fearParticules;

                Destroy(go, 5f);
            }
            else
            {
                particulPlaying = null;
            }
        }

        if (particulPlaying == null || particulPlaying.isStopped)
        {
            fighter.performingAction = false;
        }
    }
示例#7
0
    public virtual void PerformActionOnTarget(ActionType action, Fighter fighter)
    {
        performingAction = true;
        justdidAction    = true;
        lastAction       = action;

        lastAttackedUI = fighter.currentUI;

        if (fighter == null || fighter.sName == null)
        {
            Debug.Log("Fighter :" + this.sName + "  Perform action :" + action.sName);
        }
        else
        {
            Debug.Log("Fighter :" + this.sName + "  Perform action :" + action.sName + "on target " + fighter.sName);
        }

        if (action == ActionType.ATTACK)
        {
            CombatManager combatManager = GameObject.FindGameObjectWithTag("CombatManager").GetComponent <CombatManager>();

            // float rand = 0.5f;
            float rand = Random.Range(0f, 1f);

            float terrain = GameObject.FindGameObjectWithTag("CombatTerrain").GetComponent <CombatTerrainInfo>().modRoll.GetValueOfAction(action, this.eCreatureType);
            rand += terrain;

            if (this.eCreatureType == CreatureType.Human)
            {
                if (!combatManager.humanGroupFighter.bIsSpecial)
                {
                    float bonus = GameObject.FindGameObjectWithTag("TipManager").GetComponent <TipsManager>().GetBonus(action, (Human)this, (GroupMonsterFighter)combatManager.monsterGroupFighter);

                    rand += bonus;
                }
            }


            if (combatManager.protoScript != null && combatManager.protoScript.combat != null && combatManager.protoScript.combat.currentTurn != null)
            {
                float l = combatManager.protoScript.combat.currentTurn.fRoll;
                if (l != 0)
                {
                    rand = l;
                }
            }

            if (combatManager.humanGroupFighter.bIsSpecial)
            {
                rand = 0.5f;
            }
            int damage = this.GetDamage();

            if (eCreatureType == CreatureType.Human && !combatManager.humanGroupFighter.bIsSpecial)
            {
                float damageMod = GameObject.FindGameObjectWithTag("TipManager").GetComponent <TipsManager>().GetBonusDmg((Human)this, (GroupMonsterFighter)combatManager.monsterGroupFighter);
                if (damageMod != 0)
                {
                    damage /= 2;
                }
            }

            if (rand >= combatManager.rollProbaManager.Attack.normal)
            {
                fighter.TakeDamage(damage * 2);
                AkSoundEngine.PostEvent("Play_" + sName + "_crit", GameObject.FindGameObjectWithTag("MainCamera"));

                lastActionResult = RollResultEnum.Crit;
            }
            else if (rand > combatManager.rollProbaManager.Attack.fail)
            {
                fighter.TakeDamage(damage);

                if (this.eCreatureType == CreatureType.Monster)
                {
                    AkSoundEngine.PostEvent("Play_" + "merchant" + "_hit", GameObject.FindGameObjectWithTag("MainCamera"));
                }
                else
                {
                    AkSoundEngine.PostEvent("Play_" + sName + "_hit", GameObject.FindGameObjectWithTag("MainCamera"));
                }

                lastActionResult = RollResultEnum.Normal;
            }
            else
            {
                lastActionResult = RollResultEnum.Fail;

                if (eCreatureType == CreatureType.Human)
                {
                    if (combatManager.protoScript != null && combatManager.protoScript.combat != null && combatManager.protoScript.combat.currentTurn != null)
                    {
                        if (combatManager.protoScript.combat.index < 7)
                        {
                            combatManager.protoScript.combat.HumainFailAttack();
                        }
                    }
                }


                Debug.Log("Fail");
                AkSoundEngine.PostEvent("Play_miss", GameObject.FindGameObjectWithTag("MainCamera"));
                GameObject    g  = GameObject.FindGameObjectWithTag("CombatManager");
                CombatManager cm = g.GetComponent <CombatManager>();

                if (fighter.eCreatureType == CreatureType.Monster)
                {
                    ((GroupMonsterFighter)cm.GetGroupFighterOfFighter(fighter)).OneFighterGotTargetted();
                }
                else
                {
                    ((GroupHumanFighter)cm.GetGroupFighterOfFighter(fighter)).OneFighterGotTargetted();
                }
                ActionTalk(action, rand);
            }

            if (fighter.eCreatureType == CreatureType.Monster)
            {
                if (combatManager.protoScript != null && combatManager.protoScript.combat != null && combatManager.protoScript.combat.currentTurn != null)
                {
                    if (combatManager.protoScript.combat.nbAttack == 0 || (combatManager.protoScript.combat.nbAttack == 1 && combatManager.protoScript.combat.roundIt == 3) ||
                        combatManager.protoScript.combat.nbAttack == 2 || combatManager.protoScript.combat.nbAttack == 3)
                    {
                        combatManager.protoScript.combat.HumanAttack();
                    }
                }
            }


            // ActionTalk(action, rand);
        }
    }
示例#8
0
 public virtual void GetConvinced(RollResultEnum rollResult, Monster monster)
 {
 }
示例#9
0
 public virtual void GetFeared(RollResultEnum rollResult, Monster monster)
 {
 }
示例#10
0
 public override void GetConvinced(RollResultEnum rollResult, Monster monster)
 {
 }
示例#11
0
 public override void GetFeared(RollResultEnum rollResult, Monster monster)
 {
 }