本文整理汇总了C#中Server.MirObjects.MapObject类的典型用法代码示例。如果您正苦于以下问题:C# MapObject类的具体用法?C# MapObject怎么用?C# MapObject使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MapObject类属于Server.MirObjects命名空间,在下文中一共展示了MapObject类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: ItemObject
public ItemObject(MapObject dropper, uint gold, Point manuallocation)
{
ExpireTime = Envir.Time + Settings.ItemTimeOut * Settings.Minute;
Gold = gold;
CurrentMap = dropper.CurrentMap;
CurrentLocation = manuallocation;
}
开发者ID:quttap,项目名称:mir2,代码行数:9,代码来源:ItemObject.cs
示例2: ItemObject
public ItemObject(MapObject dropper, UserItem item, bool DeathDrop = false)
{
if (DeathDrop)//player dropped it when he died: allow for time to run back and pickup his drops
ExpireTime = Envir.Time + Settings.PlayerDiedItemTimeOut * Settings.Minute;
else
ExpireTime = Envir.Time + Settings.ItemTimeOut * Settings.Minute;
Item = item;
if (Item.IsAdded)
NameColour = Color.Cyan;
CurrentMap = dropper.CurrentMap;
CurrentLocation = dropper.CurrentLocation;
}
开发者ID:Pete107,项目名称:Mir2,代码行数:14,代码来源:ItemObject.cs
示例3: Remove
public void Remove(MapObject mapObject)
{
Objects.Remove(mapObject);
if (Objects.Count == 0) Objects = null;
}
开发者ID:ElijahLOMCN,项目名称:mir2,代码行数:5,代码来源:Map.cs
示例4: Add
public void Add(MapObject mapObject)
{
if (Objects == null) Objects = new List<MapObject>();
Objects.Add(mapObject);
}
开发者ID:ElijahLOMCN,项目名称:mir2,代码行数:6,代码来源:Map.cs
示例5: RemoveObject
public void RemoveObject(MapObject ob)
{
if (ob.Race == ObjectType.Player) Players.Remove((PlayerObject)ob);
if (ob.Race == ObjectType.Merchant) NPCs.Remove((NPCObject)ob);
GetCell(ob.CurrentLocation).Remove(ob);
}
开发者ID:ElijahLOMCN,项目名称:mir2,代码行数:7,代码来源:Map.cs
示例6: SpecialArrowShot
public void SpecialArrowShot(MapObject target, UserMagic magic)
{
if (target == null || !target.IsAttackTarget(this)) return;
if ((Info.MentalState != 1) && !CanFly(target.CurrentLocation)) return;
int distance = Functions.MaxDistance(CurrentLocation, target.CurrentLocation);
int damage = (GetAttackPower(MinMC, MaxMC) + magic.GetPower());
if (magic.Spell != Spell.CrippleShot)
damage = (int)(damage * Math.Max(1, (distance * 0.4)));//range boost
damage = ApplyArcherState(damage);
int delay = distance * 50 + 500; //50 MS per Step
DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time + delay, magic, damage, target);
ActionList.Add(action);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:15,代码来源:PlayerObject.cs
示例7: Pushed
public override int Pushed(MapObject pusher, MirDirection dir, int distance)
{
throw new NotSupportedException();
}
开发者ID:quttap,项目名称:mir2,代码行数:4,代码来源:ItemObject.cs
示例8: ApplyPoison
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false)
{
throw new NotSupportedException();
}
开发者ID:quttap,项目名称:mir2,代码行数:4,代码来源:ItemObject.cs
示例9: ApplyPoison
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false)
{
//FindTarget();
}
开发者ID:mstation,项目名称:mir2,代码行数:4,代码来源:IntelligentCreatureObject.cs
示例10: ApplyPoison
public abstract void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false);
开发者ID:ufaith,项目名称:cmir2,代码行数:1,代码来源:MapObject.cs
示例11: DoKnockback
public void DoKnockback(MapObject target, UserMagic magic)//ElementalShot - knockback
{
Cell cell = CurrentMap.GetCell(target.CurrentLocation);
if (!cell.Valid || cell.Objects == null) return;
if (target.CurrentLocation.Y < 0 || target.CurrentLocation.Y >= CurrentMap.Height || target.CurrentLocation.X < 0 || target.CurrentLocation.X >= CurrentMap.Height) return;
if (target.Race != ObjectType.Monster && target.Race != ObjectType.Player) return;
if (!target.IsAttackTarget(this) || target.Level >= Level) return;
if (Envir.Random.Next(20) >= 6 + magic.Level * 3 + ElementsLevel + Level - target.Level) return;
int distance = 1 + Math.Max(0, magic.Level - 1) + Envir.Random.Next(2);
MirDirection dir = Functions.DirectionFromPoint(CurrentLocation, target.CurrentLocation);
target.Pushed(this, dir, distance);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:16,代码来源:PlayerObject.cs
示例12: ApplyPoison
public override void ApplyPoison(Poison p, MapObject Caster = null, bool NoResist = false, bool ignoreDefence = true)
{
if ((Caster != null) && (!NoResist))
if (((Caster.Race != ObjectType.Player) || Settings.PvpCanResistPoison) && (Envir.Random.Next(Settings.PoisonResistWeight) < PoisonResist))
return;
if (!ignoreDefence && (p.PType == PoisonType.Green))
{
int armour = GetAttackPower(MinMAC, MaxMAC);
if (p.Value > armour)
p.PType = PoisonType.None;
else
p.Value -= armour;
}
if (p.Owner != null && p.Owner.Race == ObjectType.Player && Envir.Time > BrownTime && PKPoints < 200)
p.Owner.BrownTime = Envir.Time + Settings.Minute;
if ((p.PType == PoisonType.Green) || (p.PType == PoisonType.Red)) p.Duration = Math.Max(0, p.Duration - PoisonRecovery);
if (p.Duration == 0) return;
for (int i = 0; i < PoisonList.Count; i++)
{
if (PoisonList[i].PType != p.PType) continue;
if ((PoisonList[i].PType == PoisonType.Green) && (PoisonList[i].Value > p.Value)) return;//cant cast weak poison to cancel out strong poison
if ((PoisonList[i].PType != PoisonType.Green) && ((PoisonList[i].Duration - PoisonList[i].Time) > p.Duration)) return;//cant cast 1 second poison to make a 1minute poison go away!
if ((PoisonList[i].PType == PoisonType.Frozen) || (PoisonList[i].PType == PoisonType.Slow) || (PoisonList[i].PType == PoisonType.Paralysis) || (PoisonList[i].PType == PoisonType.LRParalysis)) return;//prevents mobs from being perma frozen/slowed
if (p.PType == PoisonType.DelayedExplosion) return;
ReceiveChat("You have been poisoned.", ChatType.System2);
PoisonList[i] = p;
return;
}
if (p.PType == PoisonType.DelayedExplosion)
{
ExplosionInflictedTime = Envir.Time + 4000;
Enqueue(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion });
Broadcast(new S.ObjectEffect { ObjectID = ObjectID, Effect = SpellEffect.DelayedExplosion });
ReceiveChat("You are a walking explosive.", ChatType.System);
}
else
ReceiveChat("You have been poisoned.", ChatType.System2);
PoisonList.Add(p);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:46,代码来源:PlayerObject.cs
示例13: OneWithNature
public void OneWithNature(MapObject target, UserMagic magic)
{
int damage = GetAttackPower(MinMC, MaxMC) + magic.GetPower();
DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time + 500, this, magic, damage, CurrentLocation);
CurrentMap.ActionList.Add(action);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:7,代码来源:PlayerObject.cs
示例14: ArcherSummon
public void ArcherSummon(UserMagic magic, MapObject target, Point location)
{
if (target != null && target.IsAttackTarget(this))
location = target.CurrentLocation;
if (!CanFly(location)) return;
uint duration = (uint)((magic.Level * 5 + 10) * 1000);
int value = (int)duration;
int delay = Functions.MaxDistance(CurrentLocation, location) * 50 + 500; //50 MS per Step
DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time + delay, magic, value, location, target);
ActionList.Add(action);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:13,代码来源:PlayerObject.cs
示例15: NapalmShot
public void NapalmShot(MapObject target, UserMagic magic)
{
if (target == null || !target.IsAttackTarget(this)) return;
if ((Info.MentalState != 1) && !CanFly(target.CurrentLocation)) return;
int distance = Functions.MaxDistance(CurrentLocation, target.CurrentLocation);
int damage = (GetAttackPower(MinMC, MaxMC) + magic.GetPower());
damage = ApplyArcherState(damage);
int delay = distance * 50 + 500; //50 MS per Step
DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time + delay, this, magic, damage, target.CurrentLocation);
CurrentMap.ActionList.Add(action);
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:14,代码来源:PlayerObject.cs
示例16: AddObject
public void AddObject(MapObject ob)
{
if (ob.Race == ObjectType.Player)
{
Players.Add((PlayerObject)ob);
InactiveTime = Envir.Time;
}
if (ob.Race == ObjectType.Merchant) NPCs.Add((NPCObject)ob);
GetCell(ob.CurrentLocation).Add(ob);
}
开发者ID:ElijahLOMCN,项目名称:mir2,代码行数:11,代码来源:Map.cs
示例17: ProcessSpell
public void ProcessSpell(MapObject ob)
{
if (Envir.Time < StartTime) return;
switch (Spell)
{
case Spell.FireWall:
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
if (!ob.IsAttackTarget(Caster)) return;
ob.Attacked(Caster, Value, DefenceType.MAC, false);
break;
case Spell.Healing: //SafeZone
if (ob.Race != ObjectType.Player && (ob.Race != ObjectType.Monster || ob.Master == null || ob.Master.Race != ObjectType.Player)) return;
if (ob.Dead || ob.HealAmount != 0 || ob.PercentHealth == 100) return;
ob.HealAmount += 25;
Broadcast(new S.ObjectEffect {ObjectID = ob.ObjectID, Effect = SpellEffect.Healing});
break;
case Spell.PoisonCloud:
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
if (!ob.IsAttackTarget(Caster)) return;
ob.Attacked(Caster, Value, DefenceType.None, false);
if (!ob.Dead)
ob.ApplyPoison(new Poison
{
Duration = 15,
Owner = Caster,
PType = PoisonType.Green,
TickSpeed = 2000,
Value = Value/20
}, Caster, false, false);
break;
case Spell.Blizzard:
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
if (Caster.ActiveBlizzard == false) return;
if (!ob.IsAttackTarget(Caster)) return;
ob.Attacked(Caster, Value, DefenceType.MAC, false);
if (!ob.Dead && Envir.Random.Next(8) == 0)
ob.ApplyPoison(new Poison
{
Duration = 5 + Envir.Random.Next(Caster.Freezing),
Owner = Caster,
PType = PoisonType.Slow,
TickSpeed = 2000,
}, Caster);
break;
case Spell.MeteorStrike:
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
if (Caster.ActiveBlizzard == false) return;
if (!ob.IsAttackTarget(Caster)) return;
ob.Attacked(Caster, Value, DefenceType.MAC, false);
break;
case Spell.ExplosiveTrap:
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
if (!ob.IsAttackTarget(Caster)) return;
if (DetonatedTrap) return;//make sure explosion happens only once
DetonateTrapNow();
ob.Attacked(Caster, Value, DefenceType.MAC, false);
break;
case Spell.MapLava:
case Spell.MapLightning:
if (Value == 0) return;
if (ob.Race != ObjectType.Player && ob.Race != ObjectType.Monster) return;
if (ob.Dead) return;
ob.Struck(Value, DefenceType.MAC);
break;
case Spell.Portal:
if (ob.Race != ObjectType.Player) return;
if (Caster != ob && (Caster == null || (Caster.GroupMembers == null) || (!Caster.GroupMembers.Contains((PlayerObject)ob)))) return;
if (ExitMap == null) return;
MirDirection dir = ob.Direction;
Point newExit = Functions.PointMove(ExitCoord, dir, 1);
if (!ExitMap.ValidPoint(newExit)) return;
ob.Teleport(ExitMap, newExit, false);
break;
}
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:90,代码来源:SpellObject.cs
示例18: DelayedExplosion
private bool DelayedExplosion(MapObject target, UserMagic magic)
{
if (target == null || !target.IsAttackTarget(this) || !CanFly(target.CurrentLocation)) return false;
int power = GetAttackPower(MinMC, MaxMC) + magic.GetPower();
int delay = Functions.MaxDistance(CurrentLocation, target.CurrentLocation) * 50 + 500; //50 MS per Step
DelayedAction action = new DelayedAction(DelayedType.Magic, Envir.Time + delay, magic, power, target);
ActionList.Add(action);
return true;
}
开发者ID:thedeaths,项目名称:official-mir2c-,代码行数:11,代码来源:PlayerObject.cs
示例19: IsMasterGroupMember
private bool IsMasterGroupMember(MapObject player)
{
if (player.Race != ObjectType.Player || Master == null) return false;
return ((PlayerObject)Master).GroupMembers != null && ((PlayerObject)Master).GroupMembers.Contains((PlayerObject)player);
}
开发者ID:mstation,项目名称:mir2,代码行数:5,代码来源:IntelligentCreatureObject.cs
示例20: Pushed
public override int Pushed(MapObject pusher, MirDirection dir, int distance)
{
if (!Info.CanPush) return 0;
//if (!CanMove) return 0; //stops mobs that can't move (like cannibalplants) from being pushed
int result = 0;
MirDirection reverse = Functions.ReverseDirection(dir);
for (int i = 0; i < distance; i++)
{
Point location = Functions.PointMove(CurrentLocation, dir, 1);
if (!CurrentMap.ValidPoint(location)) return result;
Cell cell = CurrentMap.GetCell(location);
bool stop = false;
if (cell.Objects != null)
for (int c = 0; c < cell.Objects.Count; c++)
{
MapObject ob = cell.Objects[c];
if (!ob.Blocking) continue;
stop = true;
}
if (stop) break;
CurrentMap.GetCell(CurrentLocation).Remove(this);
Direction = reverse;
RemoveObjects(dir, 1);
CurrentLocation = location;
CurrentMap.GetCell(CurrentLocation).Add(this);
AddObjects(dir, 1);
Broadcast(new S.ObjectPushed { ObjectID = ObjectID, Direction = Direction, Location = CurrentLocation });
result++;
}
ActionTime = Envir.Time + 300 * result;
MoveTime = Envir.Time + 500 * result;
if (result > 0)
{
Cell cell = CurrentMap.GetCell(CurrentLocation);
for (int i = 0; i < cell.Objects.Count; i++)
{
if (cell.Objects[i].Race != ObjectType.Spell) continue;
SpellObject ob = (SpellObject)cell.Objects[i];
ob.ProcessSpell(this);
break;
}
}
return result;
}
开发者ID:GenysisGaming,项目名称:mir2,代码行数:57,代码来源:MonsterObject.cs
注:本文中的Server.MirObjects.MapObject类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论