mirror of
https://github.com/oshima-studios/OshimaGameModule.git
synced 2025-08-02 03:52:59 +00:00
更新工厂模式
This commit is contained in:
parent
1a17fa14b2
commit
bf66e404cd
@ -24,12 +24,12 @@ namespace Oshima.FunGame.OshimaModules.ItemEffects
|
|||||||
character.ExCDR -= 实际冷却缩减加成;
|
character.ExCDR -= 实际冷却缩减加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public 冷却缩减加成(Skill skill, Character? source, Item? item, double exCdr) : base(skill)
|
public 冷却缩减加成(Skill skill, double exCdr, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
|
实际冷却缩减加成 = exCdr;
|
||||||
Source = source;
|
Source = source;
|
||||||
Item = item;
|
Item = item;
|
||||||
实际冷却缩减加成 = exCdr;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,12 +40,12 @@ namespace Oshima.FunGame.OshimaModules.ItemEffects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public 技能硬直时间减少(Skill skill, Character? source, Item? item, double reduce) : base(skill)
|
public 技能硬直时间减少(Skill skill, double reduce, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
|
实际硬直时间减少 = reduce;
|
||||||
Source = source;
|
Source = source;
|
||||||
Item = item;
|
Item = item;
|
||||||
实际硬直时间减少 = reduce;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,12 @@ namespace Oshima.FunGame.OshimaModules.ItemEffects
|
|||||||
character.ExATK2 -= 实际攻击力加成;
|
character.ExATK2 -= 实际攻击力加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public 攻击力加成(Skill skill, Character? source, Item? item, double exATK) : base(skill)
|
public 攻击力加成(Skill skill, double exATK, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
|
实际攻击力加成 = exATK;
|
||||||
Source = source;
|
Source = source;
|
||||||
Item = item;
|
Item = item;
|
||||||
实际攻击力加成 = exATK;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,12 @@ namespace Oshima.FunGame.OshimaModules.ItemEffects
|
|||||||
character.NormalAttack.HardnessTime += 实际硬直时间减少;
|
character.NormalAttack.HardnessTime += 实际硬直时间减少;
|
||||||
}
|
}
|
||||||
|
|
||||||
public 普攻硬直时间减少(Skill skill, Character? source, Item? item, double reduce) : base(skill)
|
public 普攻硬直时间减少(Skill skill, double reduce, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
|
实际硬直时间减少 = reduce;
|
||||||
Source = source;
|
Source = source;
|
||||||
Item = item;
|
Item = item;
|
||||||
实际硬直时间减少 = reduce;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,12 @@ namespace Oshima.FunGame.OshimaModules.ItemEffects
|
|||||||
character.ExDEF2 -= 实际物理护甲加成;
|
character.ExDEF2 -= 实际物理护甲加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public 物理护甲加成(Skill skill, Character? source, Item? item, double exDef) : base(skill)
|
public 物理护甲加成(Skill skill, double exDef, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
|
实际物理护甲加成 = exDef;
|
||||||
Source = source;
|
Source = source;
|
||||||
Item = item;
|
Item = item;
|
||||||
实际物理护甲加成 = exDef;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ namespace Oshima.FunGame.OshimaModules.Items
|
|||||||
{
|
{
|
||||||
Level = 1;
|
Level = 1;
|
||||||
Item = item;
|
Item = item;
|
||||||
Effects.Add(new 攻击力加成(this, character, item, exATK));
|
Effects.Add(new 攻击力加成(this, exATK, character, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
|
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
|
||||||
|
@ -31,8 +31,8 @@ namespace Oshima.FunGame.OshimaModules.Items
|
|||||||
{
|
{
|
||||||
Level = 1;
|
Level = 1;
|
||||||
Item = item;
|
Item = item;
|
||||||
Effects.Add(new 攻击力加成(this, character, item, 攻击力加成));
|
Effects.Add(new 攻击力加成(this, 攻击力加成, character, item));
|
||||||
Effects.Add(new 普攻硬直时间减少(this, character, item, 硬直时间减少));
|
Effects.Add(new 普攻硬直时间减少(this, 硬直时间减少, character, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
|
public override IEnumerable<Effect> AddInactiveEffectToCharacter()
|
||||||
|
@ -10,13 +10,13 @@ namespace Oshima.FunGame.OshimaModules
|
|||||||
public override string Version => OshimaGameModuleConstant.Version;
|
public override string Version => OshimaGameModuleConstant.Version;
|
||||||
public override string Author => OshimaGameModuleConstant.Author;
|
public override string Author => OshimaGameModuleConstant.Author;
|
||||||
|
|
||||||
public override List<Character> Characters
|
public override Dictionary<string, Character> Characters
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
EntityModuleConfig<Character> config = new(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Character);
|
EntityModuleConfig<Character> config = new(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Character);
|
||||||
config.LoadConfig();
|
config.LoadConfig();
|
||||||
return [.. config.Values];
|
return config;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,154 +0,0 @@
|
|||||||
using Milimoe.FunGame.Core.Entity;
|
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
|
||||||
using Oshima.FunGame.OshimaModules.Items;
|
|
||||||
using Oshima.FunGame.OshimaModules.OpenEffects;
|
|
||||||
using Oshima.FunGame.OshimaModules.Skills;
|
|
||||||
|
|
||||||
namespace Oshima.FunGame.OshimaModules
|
|
||||||
{
|
|
||||||
public class EntityFactory
|
|
||||||
{
|
|
||||||
public static Skill? GetSkill(long id, SkillType type)
|
|
||||||
{
|
|
||||||
if (type == SkillType.Magic)
|
|
||||||
{
|
|
||||||
switch ((MagicID)id)
|
|
||||||
{
|
|
||||||
case MagicID.冰霜攻击:
|
|
||||||
return new 冰霜攻击();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == SkillType.Skill)
|
|
||||||
{
|
|
||||||
switch ((SkillID)id)
|
|
||||||
{
|
|
||||||
case SkillID.疾风步:
|
|
||||||
return new 疾风步();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == SkillType.SuperSkill)
|
|
||||||
{
|
|
||||||
switch ((SuperSkillID)id)
|
|
||||||
{
|
|
||||||
case SuperSkillID.力量爆发:
|
|
||||||
return new 力量爆发();
|
|
||||||
case SuperSkillID.天赐之力:
|
|
||||||
return new 天赐之力();
|
|
||||||
case SuperSkillID.魔法涌流:
|
|
||||||
return new 魔法涌流();
|
|
||||||
case SuperSkillID.三重叠加:
|
|
||||||
return new 三重叠加();
|
|
||||||
case SuperSkillID.变幻之心:
|
|
||||||
return new 变幻之心();
|
|
||||||
case SuperSkillID.精准打击:
|
|
||||||
return new 精准打击();
|
|
||||||
case SuperSkillID.绝对领域:
|
|
||||||
return new 绝对领域();
|
|
||||||
case SuperSkillID.能量毁灭:
|
|
||||||
return new 能量毁灭();
|
|
||||||
case SuperSkillID.迅捷之势:
|
|
||||||
return new 迅捷之势();
|
|
||||||
case SuperSkillID.嗜血本能:
|
|
||||||
return new 嗜血本能();
|
|
||||||
case SuperSkillID.平衡强化:
|
|
||||||
return new 平衡强化();
|
|
||||||
case SuperSkillID.血之狂欢:
|
|
||||||
return new 血之狂欢();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == SkillType.Passive)
|
|
||||||
{
|
|
||||||
switch ((PassiveID)id)
|
|
||||||
{
|
|
||||||
case PassiveID.META马:
|
|
||||||
return new META马();
|
|
||||||
case PassiveID.心灵之火:
|
|
||||||
return new 心灵之火();
|
|
||||||
case PassiveID.魔法震荡:
|
|
||||||
return new 魔法震荡();
|
|
||||||
case PassiveID.灵能反射:
|
|
||||||
return new 灵能反射();
|
|
||||||
case PassiveID.智慧与力量:
|
|
||||||
return new 智慧与力量();
|
|
||||||
case PassiveID.致命打击:
|
|
||||||
return new 致命打击();
|
|
||||||
case PassiveID.毁灭之势:
|
|
||||||
return new 毁灭之势();
|
|
||||||
case PassiveID.枯竭打击:
|
|
||||||
return new 枯竭打击();
|
|
||||||
case PassiveID.玻璃大炮:
|
|
||||||
return new 玻璃大炮();
|
|
||||||
case PassiveID.累积之压:
|
|
||||||
return new 累积之压();
|
|
||||||
case PassiveID.敏捷之刃:
|
|
||||||
return new 敏捷之刃();
|
|
||||||
case PassiveID.弱者猎手:
|
|
||||||
return new 弱者猎手();
|
|
||||||
}
|
|
||||||
switch ((ItemPassiveID)id)
|
|
||||||
{
|
|
||||||
case ItemPassiveID.攻击之爪:
|
|
||||||
return new 攻击之爪技能();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Item? GetItem(long id, ItemType type)
|
|
||||||
{
|
|
||||||
if (type == ItemType.MagicCardPack)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == ItemType.Accessory)
|
|
||||||
{
|
|
||||||
switch ((AccessoryID)id)
|
|
||||||
{
|
|
||||||
case AccessoryID.攻击之爪10:
|
|
||||||
return new 攻击之爪10();
|
|
||||||
case AccessoryID.攻击之爪30:
|
|
||||||
return new 攻击之爪30();
|
|
||||||
case AccessoryID.攻击之爪50:
|
|
||||||
return new 攻击之爪50();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Effect? GetEffect(long id, Skill skill, Character? source = null, Item? item = null)
|
|
||||||
{
|
|
||||||
return (EffectID)id switch
|
|
||||||
{
|
|
||||||
EffectID.ExATK => new ExATK(skill, source, item),
|
|
||||||
EffectID.ExDEF => new ExDEF(skill, source, item),
|
|
||||||
EffectID.ExSTR => new ExSTR(skill, source, item),
|
|
||||||
EffectID.ExAGI => new ExAGI(skill, source, item),
|
|
||||||
EffectID.ExINT => new ExINT(skill, source, item),
|
|
||||||
EffectID.SkillHardTimeReduce => new SkillHardTimeReduce(skill, source, item),
|
|
||||||
EffectID.NormalAttackHardTimeReduce => new NormalAttackHardTimeReduce(skill, source, item),
|
|
||||||
EffectID.AccelerationCoefficient => new AccelerationCoefficient(skill, source, item),
|
|
||||||
EffectID.ExSPD => new ExSPD(skill, source, item),
|
|
||||||
EffectID.ExActionCoefficient => new ExActionCoefficient(skill, source, item),
|
|
||||||
EffectID.ExCDR => new ExCDR(skill, source, item),
|
|
||||||
EffectID.ExMaxHP => new ExMaxHP(skill, source, item),
|
|
||||||
EffectID.ExMaxMP => new ExMaxMP(skill, source, item),
|
|
||||||
EffectID.ExCritRate => new ExCritRate(skill, source, item),
|
|
||||||
EffectID.ExCritDMG => new ExCritDMG(skill, source, item),
|
|
||||||
EffectID.ExEvadeRate => new ExEvadeRate(skill, source, item),
|
|
||||||
EffectID.PhysicalPenetration => new PhysicalPenetration(skill, source, item),
|
|
||||||
EffectID.MagicalPenetration => new MagicalPenetration(skill, source, item),
|
|
||||||
EffectID.ExPDR => new ExPDR(skill, source, item),
|
|
||||||
EffectID.ExMDF => new ExMDF(skill, source, item),
|
|
||||||
EffectID.ExHR => new ExHR(skill, source, item),
|
|
||||||
EffectID.ExMR => new ExMR(skill, source, item),
|
|
||||||
_ => null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
using Milimoe.FunGame.Core.Api.Utility;
|
using Milimoe.FunGame.Core.Api.Utility;
|
||||||
using Milimoe.FunGame.Core.Entity;
|
using Milimoe.FunGame.Core.Entity;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Oshima.FunGame.OshimaModules.Items;
|
||||||
|
|
||||||
namespace Oshima.FunGame.OshimaModules
|
namespace Oshima.FunGame.OshimaModules
|
||||||
{
|
{
|
||||||
@ -11,103 +11,26 @@ namespace Oshima.FunGame.OshimaModules
|
|||||||
public override string Version => OshimaGameModuleConstant.Version;
|
public override string Version => OshimaGameModuleConstant.Version;
|
||||||
public override string Author => OshimaGameModuleConstant.Author;
|
public override string Author => OshimaGameModuleConstant.Author;
|
||||||
|
|
||||||
public override List<Item> Items
|
public override Dictionary<string, Item> Items
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
EntityModuleConfig<Item> config = new(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item);
|
return Factory.GetGameModuleInstances<Item>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Item);
|
||||||
config.LoadConfig();
|
|
||||||
foreach (string key in config.Keys)
|
|
||||||
{
|
|
||||||
Item prev = config[key];
|
|
||||||
Item? next = GetItem(prev.Id, prev.Name, prev.ItemType);
|
|
||||||
if (next != null)
|
|
||||||
{
|
|
||||||
prev.SetPropertyToItemModuleNew(next);
|
|
||||||
config[key] = next;
|
|
||||||
}
|
|
||||||
Item item = config[key];
|
|
||||||
HashSet<Skill> skills = item.Skills.Passives;
|
|
||||||
if (item.Skills.Active != null) skills.Add(item.Skills.Active);
|
|
||||||
List<Skill> skilllist = [.. skills];
|
|
||||||
foreach (Skill skill in skilllist)
|
|
||||||
{
|
|
||||||
Skill? newSkill = EntityFactory.GetSkill(skill.Id, skill.SkillType);
|
|
||||||
if (newSkill != null)
|
|
||||||
{
|
|
||||||
if (newSkill.IsActive)
|
|
||||||
{
|
|
||||||
item.Skills.Active = newSkill;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.Skills.Passives.Remove(skill);
|
|
||||||
item.Skills.Passives.Add(newSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Skill s = newSkill ?? skill;
|
|
||||||
List<Effect> effects = [.. s.Effects];
|
|
||||||
foreach (Effect effect in effects)
|
|
||||||
{
|
|
||||||
skill.Effects.Remove(effect);
|
|
||||||
Effect? newEffect = EntityFactory.GetEffect(effect.Id, skill);
|
|
||||||
if (newEffect != null)
|
|
||||||
{
|
|
||||||
skill.Effects.Add(newEffect);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [.. config.Values];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void AfterLoad()
|
protected override Factory.EntityFactoryDelegate<Item> ItemFactory()
|
||||||
{
|
{
|
||||||
Factory.OpenFactory.RegisterFactory(args =>
|
return (id, name, args) =>
|
||||||
{
|
{
|
||||||
if (args.TryGetValue("id", out object? value) && value is long id && args.TryGetValue("itemtype", out value) && value is int type)
|
return id switch
|
||||||
{
|
{
|
||||||
Item? item = EntityFactory.GetItem(id, (ItemType)type);
|
(long)AccessoryID.攻击之爪10 => new 攻击之爪10(),
|
||||||
if (item != null)
|
(long)AccessoryID.攻击之爪30 => new 攻击之爪30(),
|
||||||
{
|
(long)AccessoryID.攻击之爪50 => new 攻击之爪50(),
|
||||||
HashSet<Skill> skills = item.Skills.Passives;
|
_ => null,
|
||||||
if (item.Skills.Active != null) skills.Add(item.Skills.Active);
|
};
|
||||||
List<Skill> skilllist = [.. skills];
|
};
|
||||||
foreach (Skill skill in skilllist)
|
|
||||||
{
|
|
||||||
item.Skills.Passives.Remove(skill);
|
|
||||||
Skill newSkill = EntityFactory.GetSkill(skill.Id, skill.SkillType) ?? new OpenSkill(skill.Id, skill.Name);
|
|
||||||
if (newSkill != null)
|
|
||||||
{
|
|
||||||
if (newSkill.IsActive)
|
|
||||||
{
|
|
||||||
item.Skills.Active = newSkill;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
item.Skills.Passives.Add(newSkill);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Skill s = newSkill ?? skill;
|
|
||||||
List<Effect> effects = [.. s.Effects];
|
|
||||||
foreach (Effect effect in effects)
|
|
||||||
{
|
|
||||||
skill.Effects.Remove(effect);
|
|
||||||
Effect? newEffect = EntityFactory.GetEffect(effect.Id, skill);
|
|
||||||
if (newEffect != null)
|
|
||||||
{
|
|
||||||
skill.Effects.Add(newEffect);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Item? GetItem(long id, string name, ItemType type) => EntityFactory.GetItem(id, type);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using Milimoe.FunGame.Core.Api.Utility;
|
using Milimoe.FunGame.Core.Api.Utility;
|
||||||
using Milimoe.FunGame.Core.Entity;
|
using Milimoe.FunGame.Core.Entity;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Oshima.FunGame.OshimaModules.Items;
|
||||||
|
using Oshima.FunGame.OshimaModules.OpenEffects;
|
||||||
|
using Oshima.FunGame.OshimaModules.Skills;
|
||||||
|
|
||||||
namespace Oshima.FunGame.OshimaModules
|
namespace Oshima.FunGame.OshimaModules
|
||||||
{
|
{
|
||||||
@ -11,36 +13,97 @@ namespace Oshima.FunGame.OshimaModules
|
|||||||
public override string Version => OshimaGameModuleConstant.Version;
|
public override string Version => OshimaGameModuleConstant.Version;
|
||||||
public override string Author => OshimaGameModuleConstant.Author;
|
public override string Author => OshimaGameModuleConstant.Author;
|
||||||
|
|
||||||
public override List<Skill> Skills
|
public override Dictionary<string, Skill> Skills
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
EntityModuleConfig<Skill> config = new(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Skill);
|
return Factory.GetGameModuleInstances<Skill>(OshimaGameModuleConstant.General, OshimaGameModuleConstant.Skill);
|
||||||
config.LoadConfig();
|
|
||||||
foreach (string key in config.Keys)
|
|
||||||
{
|
|
||||||
Skill prev = config[key];
|
|
||||||
Skill? next = EntityFactory.GetSkill(prev.Id, prev.SkillType);
|
|
||||||
if (next != null)
|
|
||||||
{
|
|
||||||
config[key] = next;
|
|
||||||
}
|
|
||||||
Skill skill = config[key];
|
|
||||||
List<Effect> effects = [.. skill.Effects];
|
|
||||||
foreach (Effect effect in effects)
|
|
||||||
{
|
|
||||||
Effect? newEffect = EntityFactory.GetEffect(effect.Id, skill);
|
|
||||||
if (newEffect != null)
|
|
||||||
{
|
|
||||||
skill.Effects.Remove(effect);
|
|
||||||
skill.Effects.Add(newEffect);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [.. config.Values];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Skill? GetSkill(long id, string name, SkillType type) => EntityFactory.GetSkill(id, type);
|
protected override Factory.EntityFactoryDelegate<Skill> SkillFactory()
|
||||||
|
{
|
||||||
|
return (id, name, args) =>
|
||||||
|
{
|
||||||
|
Skill skill = id switch
|
||||||
|
{
|
||||||
|
(long)MagicID.冰霜攻击 => new 冰霜攻击(),
|
||||||
|
(long)SkillID.疾风步 => new 疾风步(),
|
||||||
|
(long)SuperSkillID.力量爆发 => new 力量爆发(),
|
||||||
|
(long)SuperSkillID.天赐之力 => new 天赐之力(),
|
||||||
|
(long)SuperSkillID.魔法涌流 => new 魔法涌流(),
|
||||||
|
(long)SuperSkillID.三重叠加 => new 三重叠加(),
|
||||||
|
(long)SuperSkillID.变幻之心 => new 变幻之心(),
|
||||||
|
(long)SuperSkillID.精准打击 => new 精准打击(),
|
||||||
|
(long)SuperSkillID.绝对领域 => new 绝对领域(),
|
||||||
|
(long)SuperSkillID.能量毁灭 => new 能量毁灭(),
|
||||||
|
(long)SuperSkillID.迅捷之势 => new 迅捷之势(),
|
||||||
|
(long)SuperSkillID.嗜血本能 => new 嗜血本能(),
|
||||||
|
(long)SuperSkillID.平衡强化 => new 平衡强化(),
|
||||||
|
(long)SuperSkillID.血之狂欢 => new 血之狂欢(),
|
||||||
|
(long)PassiveID.META马 => new META马(),
|
||||||
|
(long)PassiveID.心灵之火 => new 心灵之火(),
|
||||||
|
(long)PassiveID.魔法震荡 => new 魔法震荡(),
|
||||||
|
(long)PassiveID.灵能反射 => new 灵能反射(),
|
||||||
|
(long)PassiveID.智慧与力量 => new 智慧与力量(),
|
||||||
|
(long)PassiveID.致命打击 => new 致命打击(),
|
||||||
|
(long)PassiveID.毁灭之势 => new 毁灭之势(),
|
||||||
|
(long)PassiveID.枯竭打击 => new 枯竭打击(),
|
||||||
|
(long)PassiveID.玻璃大炮 => new 玻璃大炮(),
|
||||||
|
(long)PassiveID.累积之压 => new 累积之压(),
|
||||||
|
(long)PassiveID.敏捷之刃 => new 敏捷之刃(),
|
||||||
|
(long)PassiveID.弱者猎手 => new 弱者猎手(),
|
||||||
|
(long)ItemPassiveID.攻击之爪 => new 攻击之爪技能(),
|
||||||
|
_ => new OpenSkill(id, name)
|
||||||
|
};
|
||||||
|
|
||||||
|
if (skill is OpenSkill && args.TryGetValue("others", out object? value) && value is Dictionary<string, object> dict)
|
||||||
|
{
|
||||||
|
foreach (string key in dict.Keys)
|
||||||
|
{
|
||||||
|
skill.OtherArgs[key] = dict[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return skill;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Factory.EntityFactoryDelegate<Effect> EffectFactory()
|
||||||
|
{
|
||||||
|
return (id, name, args) =>
|
||||||
|
{
|
||||||
|
if (args.TryGetValue("skill", out object? value) && value is Skill skill)
|
||||||
|
{
|
||||||
|
Effect? effect = (EffectID)id switch
|
||||||
|
{
|
||||||
|
EffectID.ExATK => new ExATK(skill),
|
||||||
|
EffectID.ExDEF => new ExDEF(skill),
|
||||||
|
EffectID.ExSTR => new ExSTR(skill),
|
||||||
|
EffectID.ExAGI => new ExAGI(skill),
|
||||||
|
EffectID.ExINT => new ExINT(skill),
|
||||||
|
EffectID.SkillHardTimeReduce => new SkillHardTimeReduce(skill),
|
||||||
|
EffectID.NormalAttackHardTimeReduce => new NormalAttackHardTimeReduce(skill),
|
||||||
|
EffectID.AccelerationCoefficient => new AccelerationCoefficient(skill),
|
||||||
|
EffectID.ExSPD => new ExSPD(skill),
|
||||||
|
EffectID.ExActionCoefficient => new ExActionCoefficient(skill),
|
||||||
|
EffectID.ExCDR => new ExCDR(skill),
|
||||||
|
EffectID.ExMaxHP => new ExMaxHP(skill),
|
||||||
|
EffectID.ExMaxMP => new ExMaxMP(skill),
|
||||||
|
EffectID.ExCritRate => new ExCritRate(skill),
|
||||||
|
EffectID.ExCritDMG => new ExCritDMG(skill),
|
||||||
|
EffectID.ExEvadeRate => new ExEvadeRate(skill),
|
||||||
|
EffectID.PhysicalPenetration => new PhysicalPenetration(skill),
|
||||||
|
EffectID.MagicalPenetration => new MagicalPenetration(skill),
|
||||||
|
EffectID.ExPDR => new ExPDR(skill),
|
||||||
|
EffectID.ExMDF => new ExMDF(skill),
|
||||||
|
EffectID.ExHR => new ExHR(skill),
|
||||||
|
EffectID.ExMR => new ExMR(skill),
|
||||||
|
_ => null
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.AccelerationCoefficient -= 实际加成;
|
character.AccelerationCoefficient -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AccelerationCoefficient(Skill skill, Character? source, Item? item) : base(skill)
|
public AccelerationCoefficient(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExAGI -= 实际加成;
|
character.ExAGI -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExAGI(Skill skill, Character? source, Item? item) : base(skill)
|
public ExAGI(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExATK2 -= 实际加成;
|
character.ExATK2 -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExATK(Skill skill, Character? source, Item? item) : base(skill)
|
public ExATK(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExActionCoefficient -= 实际加成;
|
character.ExActionCoefficient -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExActionCoefficient(Skill skill, Character? source, Item? item) : base(skill)
|
public ExActionCoefficient(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExCDR -= 实际加成;
|
character.ExCDR -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExCDR(Skill skill, Character? source, Item? item) : base(skill)
|
public ExCDR(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExCritDMG -= 实际加成;
|
character.ExCritDMG -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExCritDMG(Skill skill, Character? source, Item? item) : base(skill)
|
public ExCritDMG(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExCritRate -= 实际加成;
|
character.ExCritRate -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExCritRate(Skill skill, Character? source, Item? item) : base(skill)
|
public ExCritRate(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExDEF2 -= 实际加成;
|
character.ExDEF2 -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExDEF(Skill skill, Character? source, Item? item) : base(skill)
|
public ExDEF(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExEvadeRate -= 实际加成;
|
character.ExEvadeRate -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExEvadeRate(Skill skill, Character? source, Item? item) : base(skill)
|
public ExEvadeRate(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExHR -= 实际加成;
|
character.ExHR -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExHR(Skill skill, Character? source, Item? item) : base(skill)
|
public ExHR(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExINT -= 实际加成;
|
character.ExINT -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExINT(Skill skill, Character? source, Item? item) : base(skill)
|
public ExINT(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -85,7 +85,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExMDF(Skill skill, Character? source, Item? item) : base(skill)
|
public ExMDF(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExMR -= 实际加成;
|
character.ExMR -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExMR(Skill skill, Character? source, Item? item) : base(skill)
|
public ExMR(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExHP2 -= 实际加成;
|
character.ExHP2 -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExMaxHP(Skill skill, Character? source, Item? item) : base(skill)
|
public ExMaxHP(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExMP2 -= 实际加成;
|
character.ExMP2 -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExMaxMP(Skill skill, Character? source, Item? item) : base(skill)
|
public ExMaxMP(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExPDR -= 实际加成;
|
character.ExPDR -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExPDR(Skill skill, Character? source, Item? item) : base(skill)
|
public ExPDR(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExSPD -= 实际加成;
|
character.ExSPD -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExSPD(Skill skill, Character? source, Item? item) : base(skill)
|
public ExSPD(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.ExDEF2 -= 实际加成;
|
character.ExDEF2 -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExSTR(Skill skill, Character? source, Item? item) : base(skill)
|
public ExSTR(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.MagicalPenetration -= 实际加成;
|
character.MagicalPenetration -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MagicalPenetration(Skill skill, Character? source, Item? item) : base(skill)
|
public MagicalPenetration(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.NormalAttack.HardnessTime += 实际硬直时间减少;
|
character.NormalAttack.HardnessTime += 实际硬直时间减少;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NormalAttackHardTimeReduce(Skill skill, Character? source, Item? item) : base(skill)
|
public NormalAttackHardTimeReduce(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -24,7 +24,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
character.PhysicalPenetration -= 实际加成;
|
character.PhysicalPenetration -= 实际加成;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PhysicalPenetration(Skill skill, Character? source, Item? item) : base(skill)
|
public PhysicalPenetration(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -40,7 +40,7 @@ namespace Oshima.FunGame.OshimaModules.OpenEffects
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SkillHardTimeReduce(Skill skill, Character? source, Item? item) : base(skill)
|
public SkillHardTimeReduce(Skill skill, Character? source = null, Item? item = null) : base(skill)
|
||||||
{
|
{
|
||||||
GamingQueue = skill.GamingQueue;
|
GamingQueue = skill.GamingQueue;
|
||||||
Source = source;
|
Source = source;
|
||||||
|
@ -532,7 +532,7 @@ namespace Oshima.FunGame.OshimaServers
|
|||||||
|
|
||||||
public override void AfterLoad(params object[] args)
|
public override void AfterLoad(params object[] args)
|
||||||
{
|
{
|
||||||
foreach (Character c in GameModuleDepend.Characters)
|
foreach (Character c in GameModuleDepend.Characters.Values)
|
||||||
{
|
{
|
||||||
Character character = c.Copy();
|
Character character = c.Copy();
|
||||||
Characters.Add(character);
|
Characters.Add(character);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user