Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Spindash
- // CombatConfig.cs
- public class Combat
- {
- .
- .
- .
- public const int SPINDASH_ATK_SPD = 6; // change here if it needs to be edited
- .
- .
- .
- }
- // Game_Unit_Skill.cs
- internal void dmg_skill(
- ref int skill_dmg, ref int weapon_dmg, ref int actor_dmg, ref int support_dmg,
- ref int target_def, Data_Weapon weapon,
- Game_Unit target, Data_Weapon target_weapon, WeaponTriangle tri, bool magic,
- int? distance, float effectiveness = 1)
- {
- .
- .
- .
- // Skill: Spindash
- if (target != null)
- if (actor.has_skill("SPINDASH") && Temp_Moved >= 1 && Global.game_state.team_turn == team)
- skill_dmg += Temp_Moved;
- }
- // New function
- // placed under is_brave_blocked()
- public bool is_brave(Game_Unit target)
- {
- bool bravery = false;
- // Skills: Spindash
- if (target != null)
- {
- int speedmult = actor.atk_spd(distance) - target.atk_spd(distance);
- if ((actor.has_skill("SPINDASH") && speedmult >= Constants.Combat.SPINDASH_ATK_SPD && Global.game_state.team_turn == team)
- bravery = true;
- }
- return bravery;
- }
- // Multiplier_Img.cs
- public int get_multi(Game_Unit unit, Combat_Map_Object target, TactileLibrary.Data_Weapon weapon, int distance)
- {
- int multi = 0;
- if (!target.is_unit())
- return 0;
- if ((weapon.Brave() || unit.is_brave(target as Game_Unit)) && !unit.is_brave_blocked()) // <-- the new line
- multi += 4;
- if (unit.can_double_attack(target, distance))
- multi += 2;
- return multi / 2;
- }
- // Combat_Data.cs
- private void add_attacks(
- Game_Unit battler_1, Combat_Map_Object battler_2,
- int i, Data_Weapon weapon)
- {
- #if DEBUG
- System.Diagnostics.Debug.Assert(i == 1 || i == 2);
- #endif
- Game_Unit attacker = i == 2 ? battler_2 as Game_Unit : battler_1;
- Combat_Map_Object target = i == 2 ? battler_1 : battler_2;
- int num_hits = 1;
- if (!attacker.is_brave_blocked())
- {
- // If only single hits against terrain
- if (!(target != null && !target.is_unit() &&
- Constants.Combat.BRAVE_BLOCKED_AGAINST_DESTROYABLE))
- num_hits = weapon.HitsPerAttack;
- if (num_hits == 1)
- if (attacker.is_brave(target as Game_Unit)) // <-- new line
- num_hits = 2;
- }
- for (int j = 0; j < num_hits; j++)
- add_attacks(battler_1, battler_2, i);
- }
- // Game_Unit.cs
- private int attacks_per_round(int spd, Combat_Map_Object target, int distance)
- {
- if (target.is_unit() && !is_double_disabled())
- if (!stop_follow_up_modifiers(target as Game_Unit) && !(target as Game_Unit).stop_follow_up_modifiers(this))
- {
- int target_spd = (target as Game_Unit).atk_spd(distance);
- // If Spin Dash active, drop attacks per round to 1, make exception for brave weapons? idk
- if (this.is_brave(target as Game_Unit))
- return 1;
- // If enough faster than the opponent, attack twice
- if (spd - Constants.Combat.DBL_ATK_SPD >= target_spd)
- return 2;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement