更新工厂模式

This commit is contained in:
milimoe 2024-10-25 19:26:03 +08:00
parent 1a17fa14b2
commit bf66e404cd
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
34 changed files with 139 additions and 307 deletions

View File

@ -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;
} }
} }
} }

View File

@ -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;
} }
} }
} }

View File

@ -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;
} }
} }
} }

View File

@ -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;
} }
} }
} }

View File

@ -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;
} }
} }
} }

View File

@ -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()

View File

@ -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()

View File

@ -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;
} }
} }
} }

View File

@ -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
};
}
}
}

View File

@ -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);
} }
} }

View File

@ -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;
};
}
} }
} }

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);