本文整理汇总了C#中Server.Engines.Harvest.HarvestDefinition.ValidateSpecial方法的典型用法代码示例。如果您正苦于以下问题:C# HarvestDefinition.ValidateSpecial方法的具体用法?C# HarvestDefinition.ValidateSpecial怎么用?C# HarvestDefinition.ValidateSpecial使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Server.Engines.Harvest.HarvestDefinition
的用法示例。
在下文中一共展示了HarvestDefinition.ValidateSpecial方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FinishHarvesting
public virtual void FinishHarvesting(Mobile from, Item tool, HarvestDefinition def, object toHarvest, object locked)
{
from.EndAction(locked);
if (!this.CheckHarvest(from, tool))
return;
int tileID;
Map map;
Point3D loc;
if (!this.GetHarvestDetails(from, tool, toHarvest, out tileID, out map, out loc))
{
this.OnBadHarvestTarget(from, tool, toHarvest);
return;
}
else if (!def.Validate(tileID) && !def.ValidateSpecial(tileID))
{
this.OnBadHarvestTarget(from, tool, toHarvest);
return;
}
if (!this.CheckRange(from, tool, def, map, loc, true))
return;
else if (!this.CheckResources(from, tool, def, map, loc, true))
return;
else if (!this.CheckHarvest(from, tool, def, toHarvest))
return;
if (this.SpecialHarvest(from, tool, def, map, loc))
return;
HarvestBank bank = def.GetBank(map, loc.X, loc.Y);
if (bank == null)
return;
HarvestVein vein = bank.Vein;
if (vein != null)
vein = this.MutateVein(from, tool, def, bank, toHarvest, vein);
if (vein == null)
return;
HarvestResource primary = vein.PrimaryResource;
HarvestResource fallback = vein.FallbackResource;
HarvestResource resource = this.MutateResource(from, tool, def, map, loc, vein, primary, fallback);
double skillBase = from.Skills[def.Skill].Base;
double skillValue = from.Skills[def.Skill].Value;
Type type = null;
if (skillBase >= resource.ReqSkill && from.CheckSkill(def.Skill, resource.MinSkill, resource.MaxSkill))
{
type = this.GetResourceType(from, tool, def, map, loc, resource);
if (type != null)
type = this.MutateType(type, from, tool, def, map, loc, resource);
if (type != null)
{
Item item = this.Construct(type, from, tool);
if (item == null)
{
type = null;
}
else
{
//The whole harvest system is kludgy and I'm sure this is just adding to it.
if (item.Stackable)
{
int amount = def.ConsumedPerHarvest;
int feluccaAmount = def.ConsumedPerFeluccaHarvest;
int racialAmount = (int)Math.Ceiling(amount * 1.1);
int feluccaRacialAmount = (int)Math.Ceiling(feluccaAmount * 1.1);
bool eligableForRacialBonus = (def.RaceBonus && from.Race == Race.Human);
bool inFelucca = (map == Map.Felucca);
if (eligableForRacialBonus && inFelucca && bank.Current >= feluccaRacialAmount && 0.1 > Utility.RandomDouble())
item.Amount = feluccaRacialAmount;
else if (inFelucca && bank.Current >= feluccaAmount)
item.Amount = feluccaAmount;
else if (eligableForRacialBonus && bank.Current >= racialAmount && 0.1 > Utility.RandomDouble())
item.Amount = racialAmount;
else
item.Amount = amount;
// Void Pool Rewards
item.Amount += WoodsmansTalisman.CheckHarvest(from, type, this);
}
bank.Consume(item.Amount, from);
EventSink.InvokeResourceHarvestSuccess(new ResourceHarvestSuccessEventArgs(from, tool,item, this));
//.........这里部分代码省略.........
示例2: FinishHarvesting
public override void FinishHarvesting(Mobile from, Item tool, HarvestDefinition def, object toHarvest, object locked)
{
//Lava fishing needs to have its own set of rules.
if (IsLavaHarvest(tool, toHarvest))
{
from.EndAction(locked);
if (!CheckHarvest(from, tool))
return;
int tileID;
Map map;
Point3D loc;
if (!GetHarvestDetails(from, tool, toHarvest, out tileID, out map, out loc))
{
OnBadHarvestTarget(from, tool, toHarvest);
return;
}
else if (!def.Validate(tileID) && !def.ValidateSpecial(tileID))
{
OnBadHarvestTarget(from, tool, toHarvest);
return;
}
if (!CheckRange(from, tool, def, map, loc, true))
return;
else if (!CheckResources(from, tool, def, map, loc, true))
return;
else if (!CheckHarvest(from, tool, def, toHarvest))
return;
HarvestBank bank = def.GetBank(map, loc.X, loc.Y);
if (bank == null)
return;
HarvestVein vein = bank.Vein;
if (vein == null)
return;
Type type = null;
HarvestResource resource = MutateResource(from, tool, def, map, loc, vein, vein.PrimaryResource, vein.FallbackResource);
if (from.CheckSkill(def.Skill, resource.MinSkill, resource.MaxSkill))
{
//Special eye candy item
type = GetSpecialLavaItem(from, tool, map, loc, toHarvest);
//Special fish
if (type == null)
type = FishInfo.GetSpecialItem(from, tool, loc, IsLavaHarvest(tool, tileID));
if (type != null)
{
Item item = Construct(type, from, tool);
if (item == null)
{
type = null;
}
else
{
if (from.AccessLevel == AccessLevel.Player)
bank.Consume(Convert.ToInt32(map != null && map.Rules == MapRules.FeluccaRules ? Math.Ceiling(item.Amount / 2.0) : item.Amount), from);
if (Give(from, item, true))
{
SendSuccessTo(from, item, null);
}
else
{
SendPackFullTo(from, item, def, null);
item.Delete();
}
}
}
}
if (type == null)
{
def.SendMessageTo(from, def.FailMessage);
double skill = (double)from.Skills[SkillName.Fishing].Value / 50;
if (0.5 / skill > Utility.RandomDouble())
OnToolUsed(from, tool, false);
}
else
OnToolUsed(from, tool, true);
OnHarvestFinished(from, tool, def, vein, bank, null, null);
}
else
base.FinishHarvesting(from, tool, def, toHarvest, locked);
}
示例3: OnHarvesting
public virtual bool OnHarvesting(Mobile from, Item tool, HarvestDefinition def, object toHarvest, object locked, bool last)
{
if (!this.CheckHarvest(from, tool))
{
from.EndAction(locked);
return false;
}
int tileID;
Map map;
Point3D loc;
if (!this.GetHarvestDetails(from, tool, toHarvest, out tileID, out map, out loc))
{
from.EndAction(locked);
this.OnBadHarvestTarget(from, tool, toHarvest);
return false;
}
else if (!def.Validate(tileID) && !def.ValidateSpecial(tileID))
{
from.EndAction(locked);
this.OnBadHarvestTarget(from, tool, toHarvest);
return false;
}
else if (!this.CheckRange(from, tool, def, map, loc, true))
{
from.EndAction(locked);
return false;
}
else if (!this.CheckResources(from, tool, def, map, loc, true))
{
from.EndAction(locked);
return false;
}
else if (!this.CheckHarvest(from, tool, def, toHarvest))
{
from.EndAction(locked);
return false;
}
this.DoHarvestingEffect(from, tool, def, map, loc);
new HarvestSoundTimer(from, tool, this, def, toHarvest, locked, last).Start();
return !last;
}