public static void CheckBuffAdd(BattleObject source) { int skillID = source.damage.skillID; bool isWeaponDamage = source.damage.isWeaponDamage; SkillData skillData = DataManager.Instance.GetSkillDataSet().GetSkillData(skillID); for(int i = 0; i < skillData.buffID.Count; i++) { if(skillData.buffID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= skillData.buffPercent[i]) { if(skillData.buffAddTriggers[i] == (int)BuffAddTrigger.SelfAfterDamage) { source.AddBuff(skillData.buffID[i], skillData.buffTurns[i]); } else if(skillData.buffAddTriggers[i] == (int)BuffAddTrigger.TargetAfterDamage) { source.damage.target.AddBuff(skillData.buffID[i], skillData.buffTurns[i]); } } } if(isWeaponDamage) { WeaponData weaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(source.GetWeapon()); for(int i = 0; i < weaponData.buffID.Count; i++) { if(weaponData.buffID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= weaponData.buffPercent[i]) { if(weaponData.buffAddTriggers[i] == (int)BuffAddTrigger.SelfAfterDamage) { source.AddBuff(weaponData.buffID[i], weaponData.buffTurns[i]); } else if(weaponData.buffAddTriggers[i] == (int)BuffAddTrigger.TargetAfterDamage) { source.damage.target.AddBuff(weaponData.buffID[i], weaponData.buffTurns[i]); } } } } }
public TargetType targetType; //目标类型 #endregion Fields #region Methods public static List<Command> GetAvailableCommands(BattleObject bo) { List<Command> availableCommands = new List<Command>(); //检查攻击类技能 if(!bo.disableAttackCommand) { if(bo.GetBattleType() != BattleType.Magical && bo.GetWeapon() > 1000) { WeaponData weaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(bo.GetWeapon()); if(weaponData.skill1ID > 0) availableCommands.Add(new CommandUseWeaponSkill(weaponData, weaponData.skill1ID)); if(weaponData.skill2ID > 0) availableCommands.Add(new CommandUseWeaponSkill(weaponData, weaponData.skill2ID)); if(weaponData.skill3ID > 0) availableCommands.Add(new CommandUseWeaponSkill(weaponData, weaponData.skill3ID)); } if(bo.GetBattleType() != BattleType.Physical) { foreach(int magicID in bo.GetMagicList()) { MagicData magicData = DataManager.Instance.GetItemDataSet().GetMagicData(magicID); availableCommands.Add(new CommandUseMagicSkill(magicData, magicData.skillID)); } } } //检查防御技能 if(!bo.disableDefenceCommand) { availableCommands.Add(new CommandBlock()); availableCommands.Add(new CommandEvade()); availableCommands.Add(new CommandGuard()); } //检查物品 if(!bo.disableItemCommand) { if(bo.GetBattleType() != BattleType.Magical) { foreach(int weaponID in bo.GetWeaponList()) { if(weaponID != bo.GetWeapon()) availableCommands.Add(new CommandSwitchWeapon(weaponID)); } } foreach(var item in bo.GetItemList()) { availableCommands.Add(new CommandUseItem(item.Key, item.Value)); } } //检查策略 if(!bo.disableStrategyCommand) { availableCommands.Add(new CommandNone()); availableCommands.Add(new CommandEscape()); } foreach(Command command in availableCommands) { command.source = bo; } return availableCommands; }
public static void CheckWeaponBuff(BattleObject source, int offID = 0) { if(offID > 0) { WeaponData oldWeaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(offID); for(int i = 0; i < oldWeaponData.buffID.Count; i++) { if(oldWeaponData.buffID[i] == 0)continue; if(oldWeaponData.buffAddTriggers[i] == (int)BuffAddTrigger.Self) { source.RemoveBuff(oldWeaponData.buffID[i]); } } } WeaponData weaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(source.GetWeapon()); for(int i = 0; i < weaponData.buffID.Count; i++) { if(weaponData.buffID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= weaponData.buffPercent[i]) { if(weaponData.buffAddTriggers[i] == (int)BuffAddTrigger.Self) { source.AddBuff(weaponData.buffID[i], weaponData.buffTurns[i]); } } } }
public static void CheckWeaponEffect(EffectTrigger trigger, BattleObject source) { WeaponData weaponData = DataManager.Instance.GetItemDataSet().GetWeaponData(source.GetWeapon()); for(int i = 0; i < weaponData.effectID.Count; i++) { if(weaponData.effectID[i] == 0)continue; int random = UnityEngine.Random.Range(0, 101); if(random <= weaponData.effectPercent[i]) { SkillEffectData effectData = DataManager.Instance.GetSkillDataSet().GetEffectData(weaponData.effectID[i]); if(effectData.trigger == trigger) { SkillEffect.ExecuteSkillEffect(source, effectData.effectString); } } } }