public Reballancing(List <Fear> lv1, List <Fear> lv2, List <Fear> lv3) { this.l1List = new List <Fear>(lv1); this.l2List = new List <Fear>(lv2); this.l3List = new List <Fear>(lv3); //levelThree.Add(new Fear("A", 100)); //levelThree.Add(new Fear("B", 86)); //levelThree.Add(new Fear("C", 34)); //levelTwo.Add(new Fear("D", 94)); //levelTwo.Add(new Fear("E", 66)); //levelTwo.Add(new Fear("F", 90)); //levelOne.Add(new Fear("G", 44)); //levelOne.Add(new Fear("H", 99)); //levelOne.Add(new Fear("I", 22)); this.l3Size = l3List.Count; this.l2Size = l2List.Count; this.l1Size = l1List.Count; this.l1Highest = new Fear(null, 1, 1, null); //setup base fears to be overwritten this.l2Highest = new Fear(null, 1, 1, null); this.l3Highest = new Fear(null, 1, 1, null); }
void Start() { isPaused = false; pc = Player.GetComponent <PlayerController>(); ts = Player.GetComponent <TorchScript>(); fs = FearPanel.GetComponent <Fear>(); }
void SpiderRoomSelected() { if (currentFear == null) { SceneManager.LoadScene(this.scenePath + this.Spider.name); this.currentFear = this.Spider; } }
void DollRoomSelected() { if (currentFear == null) { SceneManager.LoadScene(this.scenePath + this.Doll.name); this.currentFear = this.Doll; } }
public Room(String roomName, float intensity, Fear fearType, List <SamTags> samTags, float timeSpent) { this.roomName = roomName; this.intensity = intensity; this.fearType = fearType; this.samTags = samTags; this.timeSpent = timeSpent; }
void HeightRoomSelected() { if (currentFear == null) { SceneManager.LoadScene(this.scenePath + this.Height.name); this.currentFear = this.Height; } }
void GameRestarted() { SceneManager.LoadScene(this.scenePath + "Menu"); foreach (var fear in this.fearList) { fear.CompletedStatus(false); } currentFear = null; }
public float FearMe(float[] stats) { Fear fear = addModifier <Fear>(); float def = fear.Init(this, stats); modified_defenses = true; IncrementDefense(EffectType.Fear, def); return(def); }
public void updateModifiers(Reballancing reb) { Fear m1 = reb.getMaxFear(1); Fear m2 = reb.getMaxFear(2); Fear m3 = reb.getMaxFear(3); this.l1Mod = m3.getFitness() / m1.getFitness(); this.l2Mod = m3.getFitness() / m2.getFitness(); }
public override int GetHashCode() { return(Anger.GetHashCode() ^ Disgust.GetHashCode() ^ Fear.GetHashCode() ^ Happiness.GetHashCode() ^ Neutral.GetHashCode() ^ Sadness.GetHashCode() ^ Surprise.GetHashCode()); }
protected bool Equals(EmotionScores other) { return(Anger.Equals(other.Anger) && Contempt.Equals(other.Contempt) && Disgust.Equals(other.Disgust) && Fear.Equals(other.Fear) && Happiness.Equals(other.Happiness) && Neutral.Equals(other.Neutral) && Sadness.Equals(other.Sadness) && Surprise.Equals(other.Surprise)); }
// Start is called before the first frame update void Start() { camMaster = FindObjectOfType <CameraMaster>(); bCam = FindObjectOfType <BodyCam>(); ted = FindObjectOfType <Teddy>(); rightEye = FindObjectOfType <TeddyRightEye>(); fearMeter = FindObjectOfType <Fear>(); HideMeshesAndColliders(); SetTint(); }
//todo maybe list of effect exemptions in ability class? public Intimidate(Entity abilityOwner) : base("Intimidate", "Anyone adjacent gains Fear effect.", -1, 1, abilityOwner, TargetType.Hostile, true, false) { _fearTiles = new List <Tile>(); _fearEffect = new Fear(abilityOwner, true, Fear.INFINITE); EffectExemptions = new List <Effect> { _fearEffect }; var eventMediator = Object.FindObjectOfType <EventMediator>(); eventMediator.SubscribeToEvent(GlobalHelper.ActiveEntityMoved, this); }
public void UpdateRoomConfig(List <SamTags> tags, Fear fearType, float fearIntensity) { samLineManager.CleanPipe(); if (states.GetGameState() != GameStates.PLAY_MODE) { states.SetGameState(GameStates.PLAY_MODE); } ++incIntroductionRoom; currentRoom = new Room(fearType.ToString(), fearIntensity, fearType, tags, Time.time); Debug.Log("wuuuut"); if (currentRoom.GetSamTags().Count > 0) { Debug.Log("Room Name :: " + currentRoom.GetRoomName() + ", tags :: " + currentRoom.GetSamTags()[0].name); } else { Debug.Log("Room Name :: " + currentRoom.GetRoomName()); } if (incIntroductionRoom == 1) { states.SetGameState(GameStates.INTRODUCTION); samLineManager.CleanPipe(); ConfigureSoundFirstRoom(); } else if (incIntroductionRoom == 2) { states.SetGameState(GameStates.INTRODUCTION); samLineManager.CleanPipe(); ConfigureSoundSecondRoom(); } else if (currentRoom.FindSamTagsByName("Jumps") != null) { samLineManager.CleanPipe(); ConfigureSoundVertigoRoom(); } else if (currentRoom.FindSamTagsByName("moving_room") != null && currentRoom.FindSamTagsByName("moving_room").name == "moving_room") { samLineManager.CleanPipe(); ConfigureSoundClaustrophobiaRoom(); } else if (currentRoom.FindSamTagsByName("spider") != null && currentRoom.FindSamTagsByName("spider").name == "spider") { samLineManager.CleanPipe(); ConfigureSoundArachnophobiaRoom(); } else if (currentRoom.FindSamTagsByName("Interupt") != null) { samLineManager.CleanPipe(); ConfigureSoundNyctophobiaRoom(); } }
public override int GetHashCode() { unchecked { var hashCode = Anger.GetHashCode(); hashCode = (hashCode * 397) ^ Contempt.GetHashCode(); hashCode = (hashCode * 397) ^ Disgust.GetHashCode(); hashCode = (hashCode * 397) ^ Fear.GetHashCode(); hashCode = (hashCode * 397) ^ Happiness.GetHashCode(); hashCode = (hashCode * 397) ^ Neutral.GetHashCode(); hashCode = (hashCode * 397) ^ Sadness.GetHashCode(); hashCode = (hashCode * 397) ^ Surprise.GetHashCode(); return(hashCode); } }
private Fear calculateHighest(List <Fear> fearlist) { //returns highest valued fear for (int i = 0; i < fearlist.Count; i++) { Fear highest = new Fear(null, 1, 1, null); Fear search = fearlist[i]; if (search.getFitness() >= highest.getFitness()) { highest = search; } return(highest); } return(null); }
void RoomCompleted() { if (currentFear != null) { this.currentFear.CompletedStatus(true); this.currentFear = null; } if (!VictoryCheck()) { SceneManager.LoadScene(this.scenePath + "LibraryHub"); } else { SceneManager.LoadScene(this.scenePath + "Win"); } }
public void reballanceElement(Fear fear, float percentageChange) //rebalance fears { if (fear.getCategory() == 1) { if (percentageChange == 0.0f) { cat1.Remove(new Fear(fear.getFear(), fear.getFitness(), 1, fear.getFearType())); cat1.Add(new Fear(fear.getFear(), fear.getFitness() - 8, 1, fear.getFearType())); } else { cat1.Remove(new Fear(fear.getFear(), fear.getFitness(), 1, fear.getFearType())); cat1.Add(new Fear(fear.getFear(), fear.getFitness() + (16 * percentageChange), 1, fear.getFearType())); } } if (fear.getCategory() == 2) { if (percentageChange == 0.0f) { cat2.Remove(new Fear(fear.getFear(), fear.getFitness(), 2, fear.getFearType())); cat2.Add(new Fear(fear.getFear(), fear.getFitness() - 6, 2, fear.getFearType())); } else { cat2.Remove(new Fear(fear.getFear(), fear.getFitness(), 2, fear.getFearType())); cat2.Add(new Fear(fear.getFear(), fear.getFitness() + (12 * percentageChange), 2, fear.getFearType())); } } if (fear.getCategory() == 3) { if (percentageChange == 0.0f) { cat3.Remove(new Fear(fear.getFear(), fear.getFitness(), 3, fear.getFearType())); cat3.Add(new Fear(fear.getFear(), fear.getFitness() - 4, 3, fear.getFearType())); } else { cat3.Remove(new Fear(fear.getFear(), fear.getFitness(), 3, fear.getFearType())); cat3.Add(new Fear(fear.getFear(), fear.getFitness() + (8 * percentageChange), 3, fear.getFearType())); } } UpdateAllFitness(); }
void Update() { fearMeter = Mathf.Clamp(fearMeter, 0, 100); //får bara vara mellan 0-100 och det kommer aldrig överstiga det! if (Input.GetKeyDown(KeyCode.F)) { fear = Fear.None; } if (Input.GetKeyDown(KeyCode.G)) { fear = Fear.Low; } if (Input.GetKeyDown(KeyCode.H)) { fear = Fear.Normal; } if (Input.GetKeyDown(KeyCode.J)) { fear = Fear.High; } CameraEffects(); //Update the effects there. Cleaner in the update function! switch (fear) { case Fear.None: break; case Fear.Low: break; case Fear.Normal: break; case Fear.High: break; } }
public GameState(params Spirit[] spirits) { if (spirits.Length == 0) { throw new ArgumentException("Game must include at least 1 spirit"); } this.Spirits = spirits; // Note: don't init invader deck here, let users substitute RoundNumber = 1; Fear = new Fear(this); Invaders = new Invaders(this); Tokens = new Tokens_ForIsland(this); TimePasses_WholeGame += TokenCleanUp; TimePasses_WholeGame += ModifyBlightAddedEffect.ForRound.Clear; TimePasses_WholeGame += PreRavaging.ForRound.Clear; TimePasses_WholeGame += PreBuilding.ForRound.Clear; TimePasses_WholeGame += PreExplore.ForRound.Clear; }
public void changeFearValue(String name, float newFitness) //changes fear value { Fear l3 = l3List.Find(x => x.getFear() == name); Fear l2 = l2List.Find(x => x.getFear() == name); Fear l1 = l1List.Find(x => x.getFear() == name); if (l1 != null) { l1.setFitness(newFitness); } else if (l2 != null) { l2.setFitness(newFitness); } else if (l3 != null) { l3.setFitness(newFitness); } }
IEnumerator StartRoutine() { timeToWait = TAI.getTime(); // get time from TAI Debug.Log("Time to wait: " + timeToWait); fear = SAI.FireOnce(); // get fear from SAI Debug.Log("Fear: " + fear.getFear() + "Fear Type: " + fear.getFearType()); yield return(new WaitForSeconds(timeToWait)); //wait time from TAI Debug.Log("Wait over, implementing fear"); fear = doFear(fear); // implement fear doFear(new Fear("A", 50, 3, "Spawn")); yield return(new WaitForSeconds(1f)); //wait reactionScore = Reaction.checkReaction(fear, fear.returnObject()); //check reaction Debug.Log("Reaction Score: " + reactionScore); SAI.reballanceElement(fear, reactionScore); //send reaction score to reballance SAI yield return(new WaitForSeconds(5f)); StartCoroutine(StartRoutine()); //restart }
protected Vector3 flee() { Vector3 flee = new Vector3(0, 0, 0); foreach (Thing thing in nearbyThings) { if (thing.GetType() == typeof(Predator)) { flee += (this.location - thing.location); if (_fearState == null) { _fearState = new Fear(world, this, FEAR_TTL); states.Add(_fearState); } _fearState.TTL = FEAR_TTL; } } return(flee); }
public float getFearValue(String name) //returns fear value { Fear l3 = l3List.Find(x => x.getFear() == name); Fear l2 = l2List.Find(x => x.getFear() == name); Fear l1 = l1List.Find(x => x.getFear() == name); if (l1 != null) { return(l1.getFitness() / l1Highest.getFitness() * 100); } if (l2 != null) { return(l2.getFitness() / l2Highest.getFitness() * 100); } if (l3 != null) { return(l3.getFitness() / l3Highest.getFitness() * 100); } return(0.0f); }
// Use this for initialization void Start() { camMaster = FindObjectOfType <CameraMaster>(); bCam = FindObjectOfType <BodyCam>(); ted = FindObjectOfType <Teddy>(); rightEye = FindObjectOfType <TeddyRightEye>(); fearMeter = FindObjectOfType <Fear>(); tedDoorInside = tedDoorTrigInside.GetComponent <AutoDoor>(); tedDoorOutside = tedDoorTrigOutside.GetComponent <AutoDoor>(); anim = tedDoorToAnimate.GetComponent <Animator>(); animDup = tedDoorToAnimateDup.GetComponent <Animator>(); doorCollider = tedDoorToAnimate.GetComponent <Collider>(); statusWindow = FindObjectOfType <StatusPopup>(); doorOpen = false; tedInsideOrOut = false; wholeDoorTransportFromLocation = wholeDoorSetup.position; tedTransportFromLocation = ted.transform.position; rightEyeTransportFromLocation = rightEye.transform.position; }
void Start() { Events.PlayerDeath.AddListener(PlayerDied); Events.RoomCompleted.AddListener(RoomCompleted); Events.RoomHeightSelected.AddListener(HeightRoomSelected); Events.RoomSpiderSelected.AddListener(SpiderRoomSelected); Events.RoomDollSelected.AddListener(DollRoomSelected); Events.GameStarted.AddListener(RoomCompleted); Events.GameRestarted.AddListener(GameRestarted); Spider = new Fear("Spiders"); Height = new Fear("Heights"); Doll = new Fear("Dolls"); this.fearList = new List <Fear>(); this.fearList.Add(Spider); this.fearList.Add(Height); this.fearList.Add(Doll); }
public void addFear(String name, int fitness, int level, String type) //adds fear to its category corresponding to level { if (level == 1) { l1List.Add(new Fear(name, fitness, 1, type)); l1Size = l1List.Count; l1Highest = calculateHighest(l1List); } else if (level == 2) { l2List.Add(new Fear(name, fitness, 2, type)); l2Size = l2List.Count; l2Highest = calculateHighest(l2List); } else { l3List.Add(new Fear(name, fitness, 3, type)); l3Size = l3List.Count; l3Highest = calculateHighest(l3List); } }
/// <summary> /// Sets all the ghosts to scared state /// </summary> public void ScareGhosts() { Fear?.Invoke(); //Prolongs the duration of the scare if they are already scared if (isScared) { scared.Stop(); } foreach (Ghost g in ghosts) { if (g.CurrentState == GhostState.Chase) { g.ChangeState(GhostState.Scared); } } isScared = true; scared = new Timer(5500); scared.Elapsed += DisableScared; scared.Start(); }
public override bool Apply(GameObject Object) { int radius = 20; Cell currentCell = Object.CurrentCell; if (currentCell != null) { List <GameObject> list = currentCell.ParentZone.FastSquareSearch(currentCell.X, currentCell.Y, radius, "Combat"); foreach (GameObject item in list) { if (Object.DistanceTo(item) <= radius && item.pBrain != null) { int mod = 1; if (Object.Statistics["Ego"].Modifier > 0) { mod += Object.Statistics["Ego"].Modifier; } Fear.ApplyFearToObject(mod.ToString() + "d8", Stat.Roll("1d20") + mod, item, Object); } } } return(true); }
void Start() { fear = FearPanel.GetComponent <Fear>(); }
public void TriggerEffect(SkillType type, int rank, bool friendly, uint target, uint owner) { uint eid = Entity.NextEntity(); HealOverTime HoT; TimedEffect time; DamageOverTime DoT; Buff buff; InstantEffect instantEffect; DirectDamage directDamage; InstantEffect instant; switch (type) { #region Vermis Triggered SKills #region ThrownBlade case SkillType.ThrownBlades: if (friendly) return; eid = Entity.NextEntity(); instantEffect = new InstantEffect() { EntityID = eid, isTriggered = true }; DirectDamage damage; switch (rank) { #region Rank 1 case 1: damage = new DirectDamage() { Damage = 10, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 2 case 2: damage = new DirectDamage() { Damage = 10, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 3 case 3: damage = new DirectDamage() { Damage = 11, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 4 case 4: damage = new DirectDamage() { Damage = 11, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 5 case 5: damage = new DirectDamage() { Damage = 12, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 6 case 6: damage = new DirectDamage() { Damage = 12, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 7 case 7: damage = new DirectDamage() { Damage = 13, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 8 case 8: damage = new DirectDamage() { Damage = 13, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 9 case 9: damage = new DirectDamage() { Damage = 14, EntityID = eid, TargetID = target, }; break; #endregion #region Rank 10 case 10: damage = new DirectDamage() { Damage = 15, EntityID = eid, TargetID = target, }; break; #endregion default: throw new Exception("Unimplemented Rank"); } _game.DirectDamageComponent.Add(eid, damage); instant = new InstantEffect() { EntityID = eid, isTriggered = false, }; _game.InstantEffectComponent.Add(eid, instant); break; #endregion //unsure how to properly trigger, left unimplemented #region Caustic Weapons case SkillType.CausticWeapons: switch (rank) { #region Rank 1 case 1: break; #endregion #region Rank 2 case 2: break; #endregion #region Rank 3 case 3: break; #endregion #region Rank 4 case 4: break; #endregion #region Rank 5 case 5: break; #endregion #region Rank 6 case 6: break; #endregion #region Rank 7 case 7: break; #endregion #region Rank 8 case 8: break; #endregion #region Rank 9 case 9: break; #endregion #region Rank 10 case 10: break; #endregion default: throw new Exception("Unimplemented Rank"); } break; #endregion #region BenignParasite case SkillType.BenignParasite: if (!friendly) return; eid = Entity.NextEntity(); switch (rank) { #region Rank 1 case 1: HoT = new HealOverTime() { AmountPerTick = 1, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 10, TotalDuration = 10, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 2 case 2: HoT = new HealOverTime() { AmountPerTick = 1, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 12, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 3 case 3: HoT = new HealOverTime() { AmountPerTick = 2, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 12, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 4 case 4: HoT = new HealOverTime() { AmountPerTick = 2, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 5 case 5: HoT = new HealOverTime() { AmountPerTick = 3, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 6 case 6: HoT = new HealOverTime() { AmountPerTick = 3, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 7 case 7: HoT = new HealOverTime() { AmountPerTick = 4, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 8 case 8: HoT = new HealOverTime() { AmountPerTick = 4, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 9 case 9: HoT = new HealOverTime() { AmountPerTick = 5, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 10 case 10: HoT = new HealOverTime() { AmountPerTick = 7, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.HealOverTimeComponent.Add(eid, HoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 20, TotalDuration = 20, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion default: throw new Exception("Unimplemented Rank"); } break; #endregion #region Malicious Parasite case SkillType.MaliciousParasite: if (friendly) return; eid = Entity.NextEntity(); switch (rank) { #region Rank 1 case 1: DoT = new DamageOverTime() { AmountPerTick = 1, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 10, TotalDuration = 10, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 2 case 2: DoT = new DamageOverTime() { AmountPerTick = 1, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 10, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 3 case 3: DoT = new DamageOverTime() { AmountPerTick = 2, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 12, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 4 case 4: DoT = new DamageOverTime() { AmountPerTick = 2, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 5 case 5: DoT = new DamageOverTime() { AmountPerTick = 3, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 6 case 6: DoT = new DamageOverTime() { AmountPerTick = 3, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 7 case 7: DoT = new DamageOverTime() { AmountPerTick = 4, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 8 case 8: DoT = new DamageOverTime() { AmountPerTick = 4, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 9 case 9: DoT = new DamageOverTime() { AmountPerTick = 5, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion #region Rank 10 case 10: DoT = new DamageOverTime() { AmountPerTick = 7, CurrentStack = 1, CurrentTime = 0, EntityID = eid, MaxStack = 1, TargetID = target, TickTime = 1, }; _game.DamageOverTimeComponent.Add(eid, DoT); time = new TimedEffect() { EntityID = eid, TimeLeft = 20, TotalDuration = 20, }; _game.TimedEffectComponent.Add(eid, time); break; #endregion default: throw new Exception("Unimplemented Rank"); } break; #endregion #region Mindless Parasite case SkillType.MindlessParasites: int mod; eid = Entity.NextEntity(); if (friendly) mod = 1; else mod = -1; switch (rank) { #region Rank 1 case 1: time = new TimedEffect() { EntityID = eid, TimeLeft = 10, TotalDuration = 10, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .1)), DefenseMelee = mod * 1, DefenseRanged = mod * 1, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 2 case 2: time = new TimedEffect() { EntityID = eid, TimeLeft = 12, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .1)), DefenseMelee = mod * 1, DefenseRanged = mod * 1, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 3 case 3: time = new TimedEffect() { EntityID = eid, TimeLeft = 12, TotalDuration = 12, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .2)), DefenseMelee = mod * 2, DefenseRanged = mod * 2, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 4 case 4: time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .2)), DefenseMelee = mod * 2, DefenseRanged = mod * 2, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 5 case 5: time = new TimedEffect() { EntityID = eid, TimeLeft = 14, TotalDuration = 14, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .3)), DefenseMelee = mod * 3, DefenseRanged = mod * 3, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 6 case 6: time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .3)), DefenseMelee = mod * 3, DefenseRanged = mod * 3, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 7 case 7: time = new TimedEffect() { EntityID = eid, TimeLeft = 16, TotalDuration = 16, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .4)), DefenseMelee = mod * 4, DefenseRanged = mod * 4, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 8 case 8: time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .4)), DefenseMelee = mod * 4, DefenseRanged = mod * 4, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 9 case 9: time = new TimedEffect() { EntityID = eid, TimeLeft = 18, TotalDuration = 18, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .5)), DefenseMelee = mod * 5, DefenseRanged = mod * 5, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion #region Rank 10 case 10: time = new TimedEffect() { EntityID = eid, TimeLeft = 20, TotalDuration = 20, }; _game.TimedEffectComponent.Add(eid, time); buff = new Buff() { EntityID = eid, MovementSpeed = mod * ((int)(_game.MovementComponent[target].Speed * .7)), DefenseMelee = mod * 7, DefenseRanged = mod * 7, AttackMelee = 0, AttackRanged = 0, AttackSpeed = 0, isPercentAttackMelee = false, isPercentAttackRanged = false, isPercentAttackSpeed = false, isPercentDefenseMelee = false, isPercentDefenseRanged = false, isPercentFatigue = false, isPercentHealth = false, isPercentMovementSpeed = true, Fatigue = 0, Health = 0, isPercentPsi = false, isPercentResistPoison = false, isPercentWeaponAccuracy = false, isPercentWeaponSpeed = false, isPercentWeaponStrength = false, Psi = 0, ResistPoison = 0, TargetID = target, WeaponAccuracy = 0, WeaponSpeed = 0, WeaponStrength = 0, }; _game.BuffComponent.Add(eid, buff); break; #endregion default: throw new Exception("Unimplemented Rank"); } break; #endregion #endregion #region Cultist Triggered Skills #region Psionic Spear case SkillType.PsionicSpear: { #region Skill Variables InstantEffect instant_Effect; DirectDamage direct_damage; Random damageMod = new Random(); int damageValue = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { damageValue = damageMod.Next(10) + 1; //Damage from 1 to 10 break; } #endregion #region Rank 2 case 2: { damageValue = damageMod.Next(20) + 1; //Damage from 1 to 20 break; } #endregion #region Rank 3 case 3: { damageValue = damageMod.Next(35) + 1; //Damage from 1 to 35 break; } #endregion #region Rank 4 case 4: { damageValue = damageMod.Next(50) + 1; //Damage from 1 to 50 break; } #endregion #region Rank 5 case 5: { damageValue = damageMod.Next(75) + 1; //Damage from 1 to 75 break; } #endregion #region Rank 6 case 6: { damageValue = damageMod.Next(100) + 1; //Damage from 1 to 100 break; } #endregion #region Rank 7 case 7: { damageValue = damageMod.Next(150) + 1; //Damage from 1 to 150 break; } #endregion #region Rank 8 case 8: { damageValue = damageMod.Next(200) + 1; //Damage from 1 to 200 break; } #endregion #region Rank 9 case 9: { damageValue = damageMod.Next(300) + 1; //Damage from 1 to 300 break; } #endregion #region Rank 10 case 10: { damageValue = damageMod.Next(400) + 1; //Damage from 1 to 400 break; } #endregion default: { throw new Exception("Unimplemented Rank"); } } eid = Entity.NextEntity(); instant_Effect = new InstantEffect() { EntityID = eid, isTriggered = false, }; _game.InstantEffectComponent.Add(eid, instant_Effect); direct_damage = new DirectDamage() { EntityID = eid, TargetID = target, Damage = damageValue, }; _game.DirectDamageComponent.Add(eid, direct_damage); #endregion break; } #endregion #region Enslave case SkillType.Enslave: { #region Skill Variables TimedEffect timedEffect; Enslave enslaveEffect; uint cts_ID = 0; ChanceToSucceed chanceToSucceed; int percentChance = 0; int maxSlaveNum = 0; float duration = 0; List<uint> chanceToSucceedList = new List<uint>(); #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { percentChance = 60; //60% chance to succeed maxSlaveNum = 1; //Can only Enslave 1 enemy duration = 3; //For 3 seconds break; } #endregion #region Rank 2 case 2: { percentChance = 60; //60% chance to succeed maxSlaveNum = 1; //Can only Enslave 1 enemy duration = 5; //For 5 seconds break; } #endregion #region Rank 3 case 3: { percentChance = 65; //65% chance to succeed maxSlaveNum = 1; //Can only Enslave 1 enemy duration = 5; //For 5 seconds break; } #endregion #region Rank 4 case 4: { percentChance = 70; //70% chance to succeed maxSlaveNum = 1; //Can only Enslave 1 enemy duration = 8; //For 8 seconds break; } #endregion #region Rank 5 case 5: { percentChance = 70; //70% chance to succeed maxSlaveNum = 2; //Can only Enslave 2 enemies duration = 8; //For 8 seconds break; } #endregion #region Rank 6 case 6: { percentChance = 75; //75% chance to succeed maxSlaveNum = 2; //Can only Enslave 2 enemies duration = 8; //For 8 seconds break; } #endregion #region Rank 7 case 7: { percentChance = 75; //75% chance to succeed maxSlaveNum = 2; //Can only Enslave 2 enemies duration = 10; //For 10 seconds break; } #endregion #region Rank 8 case 8: { percentChance = 80; //80% chance to succeed maxSlaveNum = 2; //Can only Enslave 2 enemies duration = 10; //For 10 seconds break; } #endregion #region Rank 9 case 9: { percentChance = 85; //85% chance to succeed maxSlaveNum = 2; //Can only Enslave 2 enemies duration = 12; //For 12 seconds break; } #endregion #region Rank 10 case 10: { percentChance = 85; //85% chance to succeed maxSlaveNum = 3; //Can only Enslave 3 enemies duration = 15; //For 15 seconds break; } #endregion default: { break; } } eid = Entity.NextEntity(); timedEffect = new TimedEffect() { EntityID = eid, TotalDuration = duration, TimeLeft = duration, }; _game.TimedEffectComponent.Add(eid, timedEffect); enslaveEffect = new Enslave() { EntityID = eid, OwnerID = owner, TargetID = target, }; _game.EnslaveComponent.Add(eid, enslaveEffect); chanceToSucceedList.Add(eid); cts_ID = Entity.NextEntity(); chanceToSucceed = new ChanceToSucceed() { EntityID = cts_ID, SuccessRateAsPercentage = percentChance, AffectedIDList = chanceToSucceedList, }; _game.ChanceToSucceedComponent.Add(cts_ID, chanceToSucceed); #endregion break; } #endregion #region Fear case SkillType.Fear: { #region Skill Variables TimedEffect timedEffect; Fear fear; uint cts_id = 0; ChanceToSucceed chanceToSucceed; List<uint> chanceToSucceedList = new List<uint>(); int percentChance = 0; float duration = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { percentChance = 60; //60% chance to succeed duration = 2; //lasts 2 seconds break; } #endregion #region Rank 2 case 2: { percentChance = 65; //65% chance to succeed duration = 2; //lasts 2 seconds break; } #endregion #region Rank 3 case 3: { percentChance = 70; //70% chance to succeed duration = 2; //lasts 2 seconds break; } #endregion #region Rank 4 case 4: { percentChance = 70; //70% chance to succeed duration = 3; //lasts 3 seconds break; } #endregion #region Rank 5 case 5: { percentChance = 70; //70% chance to succeed duration = 5; //lasts 5 seconds break; } #endregion #region Rank 6 case 6: { percentChance = 75; //75% chance to succeed duration = 6; //lasts 6 seconds break; } #endregion #region Rank 7 case 7: { percentChance = 75; //75% chance to succeed duration = 8; //lasts 8 seconds break; } #endregion #region Rank 8 case 8: { percentChance = 75; //75% chance to succeed duration = 9; //lasts 9 seconds break; } #endregion #region Rank 9 case 9: { percentChance = 80; //80% chance to succeed duration = 10; //lasts 10 seconds break; } #endregion #region Rank 10 case 10: { percentChance = 85; //85% chance to succeed duration = 12; //lasts 12 seconds break; } #endregion default: { break; } } eid = Entity.NextEntity(); timedEffect = new TimedEffect() { EntityID = eid, TotalDuration = duration, TimeLeft = duration, }; _game.TimedEffectComponent.Add(eid, timedEffect); fear = new Fear() { EntityID = eid, SourceID = owner, TargetID = target, }; _game.FearComponent.Add(eid, fear); chanceToSucceedList.Add(eid); cts_id = Entity.NextEntity(); chanceToSucceed = new ChanceToSucceed() { EntityID = cts_id, AffectedIDList = chanceToSucceedList, SuccessRateAsPercentage = percentChance, }; _game.ChanceToSucceedComponent.Add(cts_id, chanceToSucceed); #endregion break; } #endregion #region Taint case SkillType.Taint: { #region Skill Variables TimedEffect timedEffect; DamageOverTime damageOverTime; float duration = 0; int dps = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { dps = 2; // 2 damage per second duration = 5; // for 5 seconds break; } #endregion #region Rank 2 case 2: { dps = 3; // 3 damage per second duration = 5; // for 5 seconds break; } #endregion #region Rank 3 case 3: { dps = 5; // 5 damage per second duration = 5; // for 5 seconds break; } #endregion #region Rank 4 case 4: { dps = 6; // 6 damage per second duration = 6; // for 6 seconds break; } #endregion #region Rank 5 case 5: { dps = 8; // 8 damage per second duration = 7; // for 7 seconds break; } #endregion #region Rank 6 case 6: { dps = 12; // 12 damage per second duration = 8; // for 8 seconds break; } #endregion #region Rank 7 case 7: { dps = 15; // 15 damage per second duration = 9; // for 9 seconds break; } #endregion #region Rank 8 case 8: { dps = 20; // 20 damage per second duration = 10; // for 10 seconds break; } #endregion #region Rank 9 case 9: { dps = 30; // 30 damage per second duration = 12; // for 12 seconds break; } #endregion #region Rank 10 case 10: { dps = 45; // 45 damage per second duration = 15; // for 15 seconds break; } #endregion default: { break; } } eid = Entity.NextEntity(); timedEffect = new TimedEffect() { EntityID = eid, TotalDuration = duration, TimeLeft = duration, }; _game.TimedEffectComponent.Add(eid, timedEffect); damageOverTime = new DamageOverTime() { EntityID = eid, MaxStack = 1, CurrentStack = 1, AmountPerTick = dps, CurrentTime = 0, TickTime = 1, TargetID = target, }; _game.DamageOverTimeComponent.Add(eid, damageOverTime); #endregion break; } #endregion #region Rot case SkillType.Rot: { #region Skill Variables TimedEffect timedEffect; Buff buffEffect; bool targetTainted = false; int dps = 0; float duration = 0; int staminaDebuff = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { dps = 2; // 2 damage per second duration = 5; // over 5 seconds staminaDebuff = -1; // and -1 to Stamina break; } #endregion #region Rank 2 case 2: { dps = 3; // 3 damage per second duration = 5; // over 5 seconds staminaDebuff = -1; // and -1 to Stamina break; } #endregion #region Rank 3 case 3: { dps = 3; // 3 damage per second duration = 6; // over 6 seconds staminaDebuff = -1; // and -1 to Stamina break; } #endregion #region Rank 4 case 4: { dps = 5; // 5 damage per second duration = 6; // over 6 seconds staminaDebuff = -1; // and -1 to Stamina break; } #endregion #region Rank 5 case 5: { dps = 5; // 5 damage per second duration = 7; // over 7 seconds staminaDebuff = -2; // and -2 to Stamina break; } #endregion #region Rank 6 case 6: { dps = 8; // 8 damage per second duration = 7; // over 7 seconds staminaDebuff = -2; // and -2 to Stamina break; } #endregion #region Rank 7 case 7: { dps = 10; // 10 damage per second duration = 9; // over 9 seconds staminaDebuff = -3; // and -3 to Stamina break; } #endregion #region Rank 8 case 8: { dps = 12; // 12 damage per second duration = 11; // over 11 seconds staminaDebuff = -3; // and -3 to Stamina break; } #endregion #region Rank 9 case 9: { dps = 15; // 15 damage per second duration = 11; // over 11 seconds staminaDebuff = -3; // and -3 to Stamina break; } #endregion #region Rank 10 case 10: { dps = 17; // 17 damage per second duration = 13; // over 13 seconds staminaDebuff = -4; // and -4 to Stamina break; } #endregion default: { break; } } //TODO: check if the target has been tainted targetTainted = true; if (!targetTainted) return; eid = Entity.NextEntity(); timedEffect = new TimedEffect() { EntityID = eid, TotalDuration = duration, TimeLeft = duration, }; _game.TimedEffectComponent.Add(eid, timedEffect); buffEffect = new Buff() { EntityID = eid, Stamina = staminaDebuff, }; _game.BuffComponent.Add(eid, buffEffect); #endregion break; } #endregion #region Push case SkillType.Push: { #region Skill Variables InstantEffect instant_Effect; KnockBack knockBack; DirectDamage direct_damage; Random damageMod = new Random(); int meterConversion = 75; int pushDistance = 0; int damageValue = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { pushDistance = 1; // 1 meter damageValue = 1 + damageMod.Next(2); // Damage between 1 and 2 break; } #endregion #region Rank 2 case 2: { pushDistance = 1; // 1 meter damageValue = 2 + damageMod.Next(4); // Damage between 2 and 5 break; } #endregion #region Rank 3 case 3: { pushDistance = 2; // 2 meters damageValue = 2 + damageMod.Next(4); // Damage between 2 and 5 break; } #endregion #region Rank 4 case 4: { pushDistance = 2; // 2 meters damageValue = 5 + damageMod.Next(6); // Damage between 5 and 10 break; } #endregion #region Rank 5 case 5: { pushDistance = 2; // 2 meters damageValue = 10 + damageMod.Next(6); // Damage between 10 and 15 break; } #endregion #region Rank 6 case 6: { pushDistance = 3; // 3 meters damageValue = 10 + damageMod.Next(6); // Damage between 10 and 15 break; } #endregion #region Rank 7 case 7: { pushDistance = 3; // 3 meters damageValue = 15 + damageMod.Next(6); // Damage between 15 and 20 break; } #endregion #region Rank 8 case 8: { pushDistance = 3; // 3 meters damageValue = 20 + damageMod.Next(6); // Damage between 20 and 25 break; } #endregion #region Rank 9 case 9: { pushDistance = 4; // 4 meters damageValue = 20 + damageMod.Next(6); // Damage between 20 and 25 break; } #endregion #region Rank 10 case 10: { pushDistance = 5; // 5 meters damageValue = 25 + damageMod.Next(6); // Damage between 25 and 30 break; } #endregion default: { break; } } eid = Entity.NextEntity(); instant_Effect = new InstantEffect() { EntityID = eid, isTriggered = false, }; _game.InstantEffectComponent.Add(eid, instant_Effect); knockBack = new KnockBack() { EntityID = eid, Distance = pushDistance * meterConversion, Origin = _game.PositionComponent[owner].Center, TargetID = target, }; _game.KnockBackComponent.Add(eid, knockBack); direct_damage = new DirectDamage() { EntityID = eid, TargetID = target, Damage = damageValue, }; _game.DirectDamageComponent.Add(eid, direct_damage); #endregion break; } #endregion #region Malice case SkillType.Malice: { #region Skill Variables InstantEffect instant_Effect; DirectDamage direct_Damage; Random damageMod = new Random(); int damageValue = 0; #endregion #region Skill Logic switch (rank) { #region Rank 1 case 1: { damageValue = 20 + damageMod.Next(6); //Damage between 20 and 25 break; } #endregion #region Rank 2 case 2: { damageValue = 20 + damageMod.Next(11); //Damage between 20 and 30 break; } #endregion #region Rank 3 case 3: { damageValue = 25 + damageMod.Next(11); //Damage between 25 and 25 break; } #endregion #region Rank 4 case 4: { damageValue = 40 + damageMod.Next(6); //Damage between 40 and 45 break; } #endregion #region Rank 5 case 5: { damageValue = 50 + damageMod.Next(11); //Damage between 50 and 60 break; } #endregion #region Rank 6 case 6: { damageValue = 65 + damageMod.Next(6); //Damage between 65 and 70 break; } #endregion #region Rank 7 case 7: { damageValue = 70 + damageMod.Next(16); //Damage between 70 and 85 break; } #endregion #region Rank 8 case 8: { damageValue = 90 + damageMod.Next(11); //Damage between 90 and 100 break; } #endregion #region Rank 9 case 9: { damageValue = 105 + damageMod.Next(11); //Damage between 105 and 115 break; } #endregion #region Rank 10 case 10: { damageValue = 120 + damageMod.Next(6); //Damage between 120 and 125 break; } #endregion default: { break; } } eid = Entity.NextEntity(); instant_Effect = new InstantEffect() { EntityID = eid, isTriggered = false, }; _game.InstantEffectComponent.Add(eid, instant_Effect); direct_Damage = new DirectDamage() { EntityID = eid, TargetID = target, Damage = damageValue, }; _game.DirectDamageComponent.Add(eid, direct_Damage); #endregion break; } #endregion #endregion case SkillType.SniperShot: instantEffect = new InstantEffect() { EntityID = eid, }; _game.InstantEffectComponent.Add(eid, instantEffect); directDamage = new DirectDamage() { TargetID = target, Damage = 1, EntityID = eid, }; _game.DirectDamageComponent.Add(eid, directDamage); break; case SkillType.BasicRangedAttack: eid = Entity.NextEntity(); instantEffect = new InstantEffect() { EntityID = eid, }; _game.InstantEffectComponent.Add(eid, instantEffect); damage = new DirectDamage() { Damage = rank, EntityID = eid, TargetID = target, }; _game.DirectDamageComponent.Add(eid, damage); break; default: throw new Exception("Unimplemented SKill"); } }