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); } }
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); } }
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); }
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); } }
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; } }
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); } }
public virtual void GetConvinced(RollResultEnum rollResult, Monster monster) { }
public virtual void GetFeared(RollResultEnum rollResult, Monster monster) { }
public override void GetConvinced(RollResultEnum rollResult, Monster monster) { }
public override void GetFeared(RollResultEnum rollResult, Monster monster) { }