public void Check_For_Wrong_Stats(ref Equipment_Foundation Weapon_Editor, Stat Select_Stat) { if (Weapon_Editor.Get_Stat(Select_Stat) != 0) { EditorGUILayout.HelpBox(Select_Stat.ToString() + " is not equal to zero, if this is okay contact me",MessageType.Warning); } }
//************************************// //****************Equip***************// //************************************// public virtual void Equip(Equipment_Foundation Equipment, Assign_Slot Equip_Slot) { Statuses_Activate(State.Equip); Slot[Equip_Slot.toInt()].Passives.ForEach(p => Passives.Remove(p)); Slot[Equip_Slot.toInt()] = Equipment; if (Equipment.Passives.Count > 0) { Equipment.Passives.ForEach(p => Passives.Add(p)); } Turn = false; }
protected void Display_All_Stats(ref Equipment_Foundation Equipment_Foundation_Editor) { Layout.Text("Name", ref Equipment_Foundation_Editor.Name); Layout.Text("Description", ref Equipment_Foundation_Editor.Description); Display_Class_Stats(ref Equipment_Foundation_Editor); if (Equipment_Foundation_Editor.Class != Assign_Class.Ammo && Equipment_Foundation_Editor.Subclass != Assign_Subclass.Arrow && Equipment_Foundation_Editor.Subclass != Assign_Subclass.Bolt) { Display_AOE_Foldout(ref Equipment_Foundation_Editor); Display_Config_Foldout(ref Equipment_Foundation_Editor); Damage_Foldout = EditorGUILayout.Foldout(Damage_Foldout, "Stats"); if (Damage_Foldout) { Layout.Float("Tier",ref Equipment_Foundation_Editor.Level); Display_Damage_Foldout(ref Equipment_Foundation_Editor); } } else { Display_Stat("Archery Damage",ref Equipment_Foundation_Editor,Stat.Archery_Damage); Display_Stat("Accuracy",ref Equipment_Foundation_Editor,Stat.Accuracy); foreach (Stat All_Stats in System.Enum.GetValues(typeof(Stat))) { if (All_Stats != Stat.Archery_Damage && All_Stats != Stat.Accuracy) { Check_For_Wrong_Stats(ref Equipment_Foundation_Editor,All_Stats); } } } if (Equipment_Foundation_Editor.Class != Assign_Class.Archery && Equipment_Foundation_Editor.Class != Assign_Class.Magic) { EditorGUILayout.PropertyField(Defect,true); } else { if (Equipment_Foundation_Editor.Defect != System_Control.Defect.None) { EditorGUILayout.HelpBox("Defect is not set to None, if this is expected please contact me",MessageType.Warning); } } Display_Passive(); Notes(Equipment_Foundation_Editor); }
private void Equipment(ref Creature Creature_Editor) { EditorGUILayout.ObjectField("Primary Hand",Creature_Editor.Slot[(int)Assign_Slot.Primary_Hand],typeof(Equipment_Foundation),true); EditorGUILayout.ObjectField("Secondary Hand",Creature_Editor.Slot[(int)Assign_Slot.Secondary_Hand],typeof(Equipment_Foundation),true); EditorGUILayout.ObjectField("Armor",Creature_Editor.Slot[(int)Assign_Slot.Armor],typeof(Equipment_Foundation),true); EditorGUILayout.ObjectField("Arrow",Creature_Editor.Slot[(int)Assign_Slot.Arrow],typeof(Equipment_Foundation),true); EditorGUILayout.BeginHorizontal (); Equipped = (Equipment_Foundation)EditorGUILayout.ObjectField("Equip",Equipped,typeof(Equipment_Foundation),true); Slot = (Assign_Slot)EditorGUILayout.EnumPopup(Slot); if(GUILayout.Button("Yield",GUILayout.Width(45f),GUILayout.Height(14f))) { Creature_Editor.Equip(Equipped,Slot); } if(GUILayout.Button("Reset",GUILayout.Width(45f),GUILayout.Height(14f))) { Creature_Editor.Slot[(int)Assign_Slot.Primary_Hand] = (Equipment_Foundation)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/System/Nothing/None_Hand_1H.prefab",typeof(Equipment_Foundation)); Creature_Editor.Slot[(int)Assign_Slot.Secondary_Hand] = (Equipment_Foundation)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/System/Nothing/None_Hand_1H.prefab",typeof(Equipment_Foundation)); Creature_Editor.Slot[(int)Assign_Slot.Armor] = (Equipment_Foundation)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/System/Nothing/None_Armor.prefab",typeof(Equipment_Foundation)); Creature_Editor.Slot[(int)Assign_Slot.Arrow] = (Equipment_Foundation)AssetDatabase.LoadAssetAtPath("Assets/Prefabs/System/Nothing/None_Arrow.prefab",typeof(Equipment_Foundation)); } EditorGUILayout.EndHorizontal (); }
private void xForm_Warning(ref Equipment_Foundation Weapon_Editor) { Layout.Text("Name", ref Weapon_Editor.Name); Layout.Text("Description", ref Weapon_Editor.Description); EditorGUILayout.PropertyField(Class,true); EditorGUILayout.HelpBox("Please use Create -> xForm 1 or Create -> xForm 2. Equipment_Foundation (this class) does not support xForms",MessageType.Warning); serializedObject.ApplyModifiedProperties(); }
private void Notes(Equipment_Foundation Weapon_Editor) { Note_Foldout = EditorGUILayout.Foldout(Note_Foldout, "Notes"); if (Note_Foldout) { EditorGUILayout.HelpBox("Use / to make a newline. When typing it is possible to type everything out first like: line1/line2/line3/etc and then press return.",MessageType.Info); Layout.Text(string.Empty,ref Weapon_Editor.Equipment_Notes,GUILayout.MaxHeight(200f)); if (Weapon_Editor.Equipment_Notes.Contains("/") && !string.IsNullOrEmpty(Weapon_Editor.Equipment_Notes)) { Weapon_Editor.Equipment_Notes = Weapon_Editor.Equipment_Notes.Replace("/","\n"); } } }
private void Display_Stat(string Name, ref Equipment_Foundation Weapon_Editor, Stat Choose_Stat) { EditorGUILayout.BeginHorizontal (); EditorGUILayout.FloatField(Name,Weapon_Editor.Get_Stat(Choose_Stat)); Weapon_Editor.Stat_Multiplier[(int)Choose_Stat] = EditorGUILayout.FloatField(Weapon_Editor.Stat_Multiplier[(int)Choose_Stat],GUILayout.Width(50f)); EditorGUILayout.EndHorizontal (); Weapon_Editor.Level_Up(Choose_Stat); }
private void Display_Damage_Foldout(ref Equipment_Foundation Weapon_Editor) { if (Weapon_Editor.Class == Assign_Class.Armor || Weapon_Editor.Class == Assign_Class.Shield || Weapon_Editor.Class == Assign_Class.xForm) { EditorGUILayout.LabelField("Hitpoints", EditorStyles.boldLabel); EditorGUI.indentLevel = EditorGUI.indentLevel + 1; EditorGUILayout.BeginHorizontal (); EditorGUILayout.FloatField("Hitpoints",Weapon_Editor.Get_Stat(Stat.Hitpoints)); EditorGUILayout.LabelField("x" + Weapon_Editor.Level.ToString(),GUILayout.Width(48f)); Weapon_Editor.Stat_Multiplier[(int)Stat.Hitpoints] = EditorGUILayout.FloatField(Weapon_Editor.Stat_Multiplier[(int)Stat.Hitpoints],GUILayout.Width(50f)); EditorGUILayout.EndHorizontal (); Weapon_Editor.Level_Up(Stat.Hitpoints); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; } else { Check_For_Wrong_Stats(ref Weapon_Editor,Stat.Hitpoints); } EditorGUILayout.LabelField("Damage", EditorStyles.boldLabel); EditorGUI.indentLevel = EditorGUI.indentLevel + 1; Display_Stat("Melee Damage",ref Weapon_Editor,Stat.Melee_Damage); Display_Stat("Magic Damage",ref Weapon_Editor,Stat.Magic_Damage); Display_Stat("Archery Damage",ref Weapon_Editor,Stat.Archery_Damage); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; EditorGUILayout.LabelField("Accuracy", EditorStyles.boldLabel); EditorGUI.indentLevel = EditorGUI.indentLevel + 1; Display_Stat("Accuracy",ref Weapon_Editor,Stat.Accuracy); Display_Stat("Evade",ref Weapon_Editor,Stat.Evade); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; EditorGUILayout.LabelField("Critical", EditorStyles.boldLabel); EditorGUI.indentLevel = EditorGUI.indentLevel + 1; Layout.Float("Critical Damage", ref Weapon_Editor.Stat_Dictionary,Stat.Critical_Damage); Layout.Float("Critical Chance", ref Weapon_Editor.Stat_Dictionary,Stat.Critical_Chance); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; EditorGUILayout.LabelField("Resistance", EditorStyles.boldLabel); EditorGUI.indentLevel = EditorGUI.indentLevel + 1; Layout.Float("Melee Resistance", ref Weapon_Editor.Stat_Dictionary,Stat.Melee_Resistance); Layout.Float("Magic Resistance", ref Weapon_Editor.Stat_Dictionary,Stat.Magic_Resistance); Layout.Float("Archery Resistance", ref Weapon_Editor.Stat_Dictionary,Stat.Archery_Resistance); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; }
protected void Default_Stats(ref Equipment_Foundation Weapon_Editor) { if (GUILayout.Button("Default Stats",GUILayout.Height(14f),GUILayout.Width(80f))) { switch (Weapon_Editor.Class) { case Assign_Class.Melee: if (Weapon_Editor.Subclass == Assign_Subclass.Sword) { if (Weapon_Editor.Two_Handed == false) { Set_Default_Stats(ref Weapon_Editor,0f,1f,1f,1f,0,0,0,1f,1.5f,0f,0f,1f,.5f,0,0,0,0,0,0,15f); } else { Set_Default_Stats(ref Weapon_Editor,0f,1f,1f,1f,0,0,0,1f,4.5f,0f,0f,2f,0f,0,0,0,0,0,0,30f); } } if (Weapon_Editor.Subclass == Assign_Subclass.Spear) { Weapon_Editor.Two_Handed = true; Set_Default_Stats(ref Weapon_Editor,0f,1f,1f,2f,0,0,0,1f,4.5f,0f,0f,2f,0f,0,0,0,0,0,0,30f); } break; case Assign_Class.Magic: if (Weapon_Editor.Subclass == Assign_Subclass.Wand) { Weapon_Editor.Two_Handed = false; Set_Default_Stats(ref Weapon_Editor,0f,1f,1f,5f,0,0,0,1f,0f,1f,0f,1f,.5f,20,40,5,5,5,0,20); } if (Weapon_Editor.Subclass == Assign_Subclass.Staff) { Weapon_Editor.Two_Handed = true; Set_Default_Stats(ref Weapon_Editor,0f,1f,1f,5f,0,0,0,1f,0f,3f,0f,2f,0f,60,80,10,10,10,0,30); } if (Weapon_Editor.Subclass == Assign_Subclass.Spellbook) { Weapon_Editor.Class = Assign_Class.Shield; Set_Default_Stats(ref Weapon_Editor,0f,0f,0f,0f,0,0,0,1f,0f,.2f,0f,.2f,1f,20,20,7.5f,7.5f,7.5f,0); } break; case Assign_Class.Archery: if (Weapon_Editor.Subclass == Assign_Subclass.Bow) { Weapon_Editor.Two_Handed = true; Set_Default_Stats(ref Weapon_Editor,0f,3f,4f,7f,0,0,0,1f,0f,0f,3f,3f,0f,0,0,0,0,0,0,10); } if (Weapon_Editor.Subclass == Assign_Subclass.Crossbow) { Weapon_Editor.Two_Handed = false; Set_Default_Stats(ref Weapon_Editor,0f,3f,3f,5f,0,0,0,1f,0f,0f,1f,1.5f,.5f,0,0,0,0,0,0,5); } break; case Assign_Class.Shield: if (Weapon_Editor.Class == Assign_Class.Shield && Weapon_Editor.Subclass == Assign_Subclass.None) { Set_Default_Stats(ref Weapon_Editor,0f,0f,0f,0f,0,0,0,1f,0f,0f,0f,0f,1.5f,0,0,12.5f,12.5f,12.5f,.5f); } if (Weapon_Editor.Subclass == Assign_Subclass.Spellbook) { Weapon_Editor.Class = Assign_Class.Shield; Set_Default_Stats(ref Weapon_Editor,0f,0f,0f,0f,0,0,0,1f,0f,.2f,0f,.2f,1f,20,20,7.5f,7.5f,7.5f); } break; case Assign_Class.Armor: Weapon_Editor.Subclass = Assign_Subclass.None; Set_Default_Stats(ref Weapon_Editor,0f,0f,0f,0f,0,0,0,1f,0f,0f,0f,0f,0f,0,0,25f,25f,25f,1f); break; case Assign_Class.Ammo: Set_Default_Stats(ref Weapon_Editor,0f,0f,0f,0f,0,0,0,1f,0f,0f,0f,0f,0f,0,0,0f,0f,0f,0f); break; default: EditorGUILayout.HelpBox("This Class isn't supported",MessageType.Error); break; } } }
private void Display_AOE_Foldout(ref Equipment_Foundation Weapon_Editor) { AOE_Foldout = EditorGUILayout.Foldout(AOE_Foldout, "Area of Effect"); if (AOE_Foldout) { EditorGUILayout.BeginHorizontal(); Layout.Float("Area of Effect",ref Weapon_Editor.Stat_Dictionary,Stat.Area_Of_Effect); if(GUILayout.Button("Show",GUILayout.Height(14f))) { float Number_Of_Booleans = Mathf.Pow(Weapon_Editor.Get_Stat(Stat.Area_Of_Effect),2f); Weapon_Editor.AOE_Pattern = new List<bool>(new bool[(int)Number_Of_Booleans]); Weapon_Editor.AOE_Knockback_Direction = new List<Equipment_Foundation.AOE_Knockback_Direction_Enum>(new Equipment_Foundation.AOE_Knockback_Direction_Enum[(int)Number_Of_Booleans]); Weapon_Editor.AOE_Damage = new List<float>(new float[(int)Number_Of_Booleans]); Weapon_Editor.AOE_Hit_Order = new List<float>(new float[Weapon_Editor.AOE_Pattern.Count]); } EditorGUILayout.EndHorizontal(); if (Weapon_Editor.Get_Stat(Stat.Area_Of_Effect) > 15) { Layout.Label("AOE is too high for the editor contact me if you want to"); Layout.Label("do something nuts."); return; } if (Mathf.Sqrt((float)Weapon_Editor.AOE_Pattern.Count) != Weapon_Editor.Get_Stat(Stat.Area_Of_Effect)) return; AOE_Box_Layout (ref Weapon_Editor, AOE_Type_Enum.Pattern); AOE_Box_Layout (ref Weapon_Editor, AOE_Type_Enum.Damage); AOE_Box_Layout (ref Weapon_Editor, AOE_Type_Enum.Knockback_Direction); AOE_Box_Layout (ref Weapon_Editor, AOE_Type_Enum.Hit_Order); } }
private void AOE_Box_Layout(ref Equipment_Foundation Weapon_Editor, AOE_Type_Enum AOE_Type) { if (Weapon_Editor.Get_Stat(Stat.Area_Of_Effect) > 0) { if (AOE_Type == AOE_Type_Enum.Pattern) EditorGUILayout.HelpBox("The center represents the enemy you clicked on to attack. Check off the areas you want the AOE to hit.",MessageType.Info); if (AOE_Type == AOE_Type_Enum.Damage) EditorGUILayout.HelpBox("Each box represents the % damage that will be dealt to the enemy. The percent is based off of your total damage when you attack.",MessageType.Info); if (AOE_Type == AOE_Type_Enum.Knockback_Direction) EditorGUILayout.HelpBox("The direction the enemy will go if you have knockback.",MessageType.Info); if (AOE_Type == AOE_Type_Enum.Hit_Order) EditorGUILayout.HelpBox("The order in which each enemy will be hit. This is mostly for knockback, as you would want it to be outer -> inner to avoid people bumping into each other",MessageType.Info); } if (Weapon_Editor.Get_Stat(Stat.Area_Of_Effect) > 0 && (Weapon_Editor.AOE_Damage.Count == 0 || Weapon_Editor.AOE_Knockback_Direction.Count == 0 || Weapon_Editor.AOE_Hit_Order.Count == 0)) { Weapon_Editor.AOE_Knockback_Direction = new List<Equipment_Foundation.AOE_Knockback_Direction_Enum>(new Equipment_Foundation.AOE_Knockback_Direction_Enum[Weapon_Editor.AOE_Pattern.Count]); Weapon_Editor.AOE_Damage = new List<float>(new float[Weapon_Editor.AOE_Pattern.Count]); Weapon_Editor.AOE_Hit_Order = new List<float>(new float[Weapon_Editor.AOE_Pattern.Count]); } EditorGUILayout.BeginHorizontal(); for (float i = 0; i < Weapon_Editor.AOE_Pattern.Count; i++) { if (i/Weapon_Editor.Get_Stat(Stat.Area_Of_Effect) == Mathf.Floor(i/Weapon_Editor.Get_Stat(Stat.Area_Of_Effect)) && i != 0) { EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); } if (AOE_Type == AOE_Type_Enum.Pattern) { Weapon_Editor.AOE_Pattern[(int)i] = EditorGUILayout.Toggle(Weapon_Editor.AOE_Pattern[(int)i],GUILayout.Width(12f)); } if (AOE_Type != AOE_Type_Enum.Pattern) { if (Weapon_Editor.AOE_Pattern[(int)i]) { if (AOE_Type == AOE_Type_Enum.Damage) Weapon_Editor.AOE_Damage[(int)i] = EditorGUILayout.FloatField(Weapon_Editor.AOE_Damage[(int)i],GUILayout.Width(30f)); if (AOE_Type == AOE_Type_Enum.Knockback_Direction) Weapon_Editor.AOE_Knockback_Direction[(int)i] = (Equipment_Foundation.AOE_Knockback_Direction_Enum)EditorGUILayout.Popup(Weapon_Editor.AOE_Knockback_Direction[(int)i].toInt(),Arrow.Array,GUILayout.Width(30f)); if (AOE_Type == AOE_Type_Enum.Hit_Order) Weapon_Editor.AOE_Hit_Order[(int)i] = EditorGUILayout.FloatField(Weapon_Editor.AOE_Hit_Order[(int)i],GUILayout.Width(30f)); } else { Layout.Label("",30f); } } } EditorGUILayout.EndHorizontal(); }
protected virtual void Display_Class_Stats(ref Equipment_Foundation Weapon_Editor) { EditorGUILayout.PropertyField(Class,true); if (Weapon_Editor.Class != Assign_Class.Armor) { EditorGUILayout.PropertyField(Subclass,true); } if (Weapon_Editor.Class != Assign_Class.Ammo && (Weapon_Editor.Subclass == Assign_Subclass.Arrow || Weapon_Editor.Subclass == Assign_Subclass.Bolt)) { EditorGUILayout.HelpBox(Weapon_Editor.Class + " does not support the '" + Weapon_Editor.Subclass + "' subclass",MessageType.Warning); } if (Weapon_Editor.Class == Assign_Class.Melee || Weapon_Editor.Class == Assign_Class.Magic || Weapon_Editor.Class == Assign_Class.Archery || Weapon_Editor.Class == Assign_Class.Shield) { Layout.Bool("Two Handed",ref Weapon_Editor.Two_Handed); } else { if (Weapon_Editor.Two_Handed) { EditorGUILayout.HelpBox("Two Handed is true",MessageType.Warning); } } Default_Stats(ref Weapon_Editor); }
//**************************************// //*************Start Attack*************// //**************************************// public void Initiate(Equipment_Foundation Weapon) { //**************************************// //*********Check For Non Weapons********// //**************************************// if (Is_Level_Damage_Resistance_Statable(Weapon.Class) == false) { Debug.Log(Weapon.Name + " was not run threw the attack code"); return; } //****************************************// //*Calculate: Attack Count & Shield Bonus*// //****************************************// Number_Of_Attacks = Weapon.Get_Stat(Stat.Number_Of_Attacks); Shield_Bonus(Class_Damage,Class_Resistance); //**************************************// //***********Start Attack Loop**********// //**************************************// while (Attack_Count < Number_Of_Attacks) { Reset_Stats(); //**************************************// //*******Passive Attack Begin 1/4*******// //**************************************// Passives (Creature, State.Attack_Begin); Passives (Advisory, State.Attack_Begin); //**************************************// //******Calculate: Number of Attacks****// //**************************************// Number_Of_Attacks = Weapon.Get_Stat(Stat.Number_Of_Attacks); //**************************************// //*********Calculate: Accuracy**********// //**************************************// //Enforce a primary or secondary system or have some way where shields commincate to the weapon or something??????? Maybe shields have a passive that's run or something????? float Class_Accuracy = Tier.Formula(Creature.Get_Stat(Class_Level)); float Weapon_Accuracy = Weapon.Get_Stat(Stat.Accuracy); float Armor_Accuracy = Creature.Slot[Assign_Slot.Armor.toInt()].Get_Stat(Stat.Accuracy); float Creature_Accuracy = Class_Accuracy + Weapon_Accuracy + Armor_Accuracy + Shield_Accuracy; float Advisory_Primary_Evade = Advisory.Slot[Assign_Slot.Primary_Hand.toInt()].Get_Stat(Stat.Evade); float Advisory_Secondary_Evade = Advisory.Slot[Assign_Slot.Secondary_Hand.toInt()].Get_Stat(Stat.Evade); float Advisory_Weapon_Evade = Advisory_Primary_Evade + Advisory_Secondary_Evade; float Advisory_Armor_Evade = Advisory.Slot[Assign_Slot.Armor.toInt()].Get_Stat(Stat.Evade); float Advisory_Class_Level_Evade = Tier.Formula(Advisory.Get_Stat(Class_Level)); float Advisory_Evade = Advisory_Weapon_Evade + Advisory_Armor_Evade + Advisory_Class_Level_Evade; Accuracy = 50f * (Creature_Accuracy/Advisory_Evade) * Accuracy_Bonus_Multiplier.Multiple(); //**************************************// //******Calculate: Base Damage**********// //**************************************// if (Dual_Wield_Equipped ()) { float Armor_Damage = Creature.Slot[Assign_Slot.Armor.toInt()].Get_Stat(Class_Damage); float Class_Level_Damage = Tier.Formula(Creature.Get_Stat(Class_Level)); float All_Damage = Weapon.Get_Stat(Class_Damage) + (Armor_Damage * .5f) + (Class_Level_Damage * .5f); Base_Damage = (All_Damage * Damage_Bonus_Multiplier.Multiple()) / Number_Of_Attacks; } else { float Armor_Damage = Creature.Slot[Assign_Slot.Armor.toInt()].Get_Stat(Class_Damage); float Class_Level_Damage = Tier.Formula(Creature.Get_Stat(Class_Level)); float All_Damage = Weapon.Get_Stat(Class_Damage) + (Armor_Damage) + (Class_Level_Damage) + Shield_Damage; Base_Damage = (All_Damage * Damage_Bonus_Multiplier.Multiple()) / Number_Of_Attacks; } //**************************************// //*****Calculate: Critical Damage*******// //**************************************// float Critical_Damage_Percent = 0f; Critical_Chance = Weapon.Get_Stat(Stat.Critical_Chance) + Critical_Chance_Bonus_Additive.Sum() + Shield_Critical_Chance; Critical_Chance *= Critical_Chance_Bonus_Multiplier.Multiple(); if (Critical_Chance >= UnityEngine.Random.Range(0f,100f)) { Critical_Damage_Percent = (Weapon.Get_Stat(Stat.Critical_Damage) + Critical_Damage_Bonus_Additive.Sum()) + Shield_Critical_Damage / 100; Critical_Damage_Percent *= Critical_Damage_Bonus_Multiplier.Multiple(); } Critical_Damage = Base_Damage * Critical_Damage_Percent; //**************************************// //*****Calculate: Resistance Damage*****// //**************************************// float Resistance_Percent = (Creature.Get_Stat(Class_Resistance) + Resistance_Bonus_Additive.Sum()) / 100 * Resistance_Bonus_Multiplier.Multiple(); Resistance = Base_Damage * Resistance_Percent; //**************************************// //*****Calculate: Total Damage**********// //**************************************// Damage = Critical_Damage + Base_Damage - Resistance; //**************************************// //**************Dice Roll***************// //**************************************// if (Accuracy >= UnityEngine.Random.Range(0f,100f)) { //**************************************// //*******Passive Attack Hit 2/4*********// //**************************************// Passives (Creature, State.Attack_Hit); Passives (Advisory, State.Counter_Attack_Hit); //**************************************// //******Calculate: Adversary - Damage***// //**************************************// Damage = Mathf.Floor(Damage); Advisory.Get_Stat(Stat.Hitpoints,-Damage); //**************************************// //***********Calculate: Energy**********// //**************************************// Energy = (Weapon.Get_Stat(Stat.Energy) + Energy_Bonus_Additive.Sum()) * Energy_Bonus_Multiplier.Multiple(); Energy *= Dont_Negate_Energy.toFloat(); Creature.Get_Stat(Stat.Energy, Energy); if (Creature.Get_Stat(Stat.Energy) > 100) { Creature.Get_Stat(Stat.Energy, 100, true); } if (Creature.Get_Stat(Stat.Energy) < 0) { Creature.Get_Stat(Stat.Energy, 0, true); } if (Weapon.Defect != Defect.None) { // Advisory.gameObject.AddComponent() } } else { //**************************************// //********Passive Attack Miss 3/4*******// //**************************************// Passives (Creature, State.Attack_Miss); Passives (Advisory, State.Counter_Attack_Miss); Debug.Log(Creature.Name + ": Missed!"); } //**************************************// //********Passive Attack End 4/4********// //**************************************// Passives (Creature, State.Attack_End); Passives (Advisory, State.Counter_Attack_End); Attack_Count++; } //**************************************// //**************End Loop****************// //**************************************// }
private void Set_Default_Stats(ref Equipment_Foundation Weapon_Editor, float Area_Of_Effect, float Number_Of_Attacks, float Minimum_Distance, float Maximum_Distance, float Movement, float Jump, float Knockback, float Level, float Melee_Multiplier, float Magic_Multiplier, float Archery_Multiplier, float Accuracy, float Evade, float Critical_Damage, float Critical_Chance, float Melee_Resistance, float Magic_Resistance, float Archery_Resistance,float Hitpoints_Multiplier = 0f, float Energy = 0f, Defect Defect = Defect.None) { Weapon_Editor.Get_Stat(Stat.Area_Of_Effect,Area_Of_Effect,true); Weapon_Editor.Get_Stat(Stat.Number_Of_Attacks,Number_Of_Attacks,true); Weapon_Editor.Get_Stat(Stat.Minimum_Distance,Minimum_Distance,true); Weapon_Editor.Get_Stat(Stat.Maximum_Distance,Maximum_Distance,true); Weapon_Editor.Get_Stat(Stat.Movement,Movement,true); Weapon_Editor.Get_Stat(Stat.Jump,Jump,true,true); Weapon_Editor.Get_Stat(Stat.Knockback,Knockback,true); Weapon_Editor.Level = Level; Weapon_Editor.Stat_Multiplier[(int)Stat.Melee_Damage] = Melee_Multiplier; Weapon_Editor.Stat_Multiplier[(int)Stat.Magic_Damage] = Magic_Multiplier; Weapon_Editor.Stat_Multiplier[(int)Stat.Archery_Damage] = Archery_Multiplier; Weapon_Editor.Stat_Multiplier[(int)Stat.Accuracy] = Accuracy; Weapon_Editor.Stat_Multiplier[(int)Stat.Evade] = Evade; Weapon_Editor.Get_Stat(Stat.Critical_Damage,Critical_Damage,true,true); Weapon_Editor.Get_Stat(Stat.Critical_Chance,Critical_Chance,true,true); Weapon_Editor.Get_Stat(Stat.Melee_Resistance,Melee_Resistance,true,true); Weapon_Editor.Get_Stat(Stat.Magic_Resistance,Magic_Resistance,true,true); Weapon_Editor.Get_Stat(Stat.Archery_Resistance,Archery_Resistance,true,true); Weapon_Editor.Get_Stat(Stat.Energy,Energy,true,true); Weapon_Editor.Stat_Multiplier[(int)Stat.Hitpoints] = Hitpoints_Multiplier; Weapon_Editor.Defect = Defect; Weapon_Editor.Passives.Clear(); }
private void Level_Up_Equipment(ref Equipment_Foundation Equipment, float Change_All_Levels) { Equipment.Level = Change_All_Levels; Equipment.Level_Up(Stat.Hitpoints); Equipment.Level_Up(Stat.Melee_Damage); Equipment.Level_Up(Stat.Magic_Damage); Equipment.Level_Up(Stat.Archery_Damage); Equipment.Level_Up(Stat.Accuracy); Equipment.Level_Up(Stat.Evade); }
private void Display_Config_Foldout(ref Equipment_Foundation Weapon_Editor) { Config_Foldout = EditorGUILayout.Foldout(Config_Foldout, "Config"); if (Config_Foldout) { if (Weapon_Editor.Class == Assign_Class.Melee || Weapon_Editor.Class == Assign_Class.Magic || Weapon_Editor.Class == Assign_Class.Archery) { Layout.Float("Energy",ref Weapon_Editor.Stat_Dictionary,Stat.Energy); } Layout.Float("Number of Attacks",ref Weapon_Editor.Stat_Dictionary,Stat.Number_Of_Attacks); Layout.Float("Minimum Distance",ref Weapon_Editor.Stat_Dictionary,Stat.Minimum_Distance); Layout.Float("Maximum Distance",ref Weapon_Editor.Stat_Dictionary,Stat.Maximum_Distance); Layout.Float("Movement", ref Weapon_Editor.Stat_Dictionary, Stat.Movement); Layout.Float("Jump", ref Weapon_Editor.Stat_Dictionary, Stat.Jump); Layout.Float("Knockback", ref Weapon_Editor.Stat_Dictionary, Stat.Knockback); } }
protected override void Display_Class_Stats(ref Equipment_Foundation Weapon_Editor) { Layout.Horizontal(xForm_Class_Stats); Layout.Horizontal(xForm_Subclass_Stats); }