本文整理汇总了C#中MUDEngine.CharData.IsEvil方法的典型用法代码示例。如果您正苦于以下问题:C# CharData.IsEvil方法的具体用法?C# CharData.IsEvil怎么用?C# CharData.IsEvil使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MUDEngine.CharData
的用法示例。
在下文中一共展示了CharData.IsEvil方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Drink
//.........这里部分代码省略.........
ch, obj, Liquid.Table[liquid].Name, SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&n drinks $T from $p&n.",
ch, obj, Liquid.Table[liquid].Name, SocketConnection.MessageTarget.room);
int amount = MUDMath.NumberRange(3, 10);
if (obj.Values[0] != -1)
{
amount = Math.Min(amount, obj.Values[1]);
}
ch.AdjustDrunk(amount * Liquid.Table[liquid].DrunkValue);
if (!ch.IsUndead())
{
ch.AdjustHunger(amount * Liquid.Table[liquid].HungerValue);
if (ch.IsAffected(Affect.AFFECT_THIRST))
{
ch.AdjustThirst((amount * Liquid.Table[liquid].ThirstValue) / 12);
ch.SendText("That doesn't taste as &+bwet&n as it used to.\r\n");
}
else
{
ch.AdjustThirst(amount * Liquid.Table[liquid].ThirstValue);
}
}
else
{
/* If blood */
if (Liquid.Table[liquid].Name == "blood")
{
ch.AdjustHunger(amount * 2);
ch.AdjustThirst(amount);
}
}
if (!ch.IsNPC() && ((PC)ch).Drunk > 10)
{
ch.SendText("You feel &n&+gdrunk&n.\r\n");
}
if (!ch.IsNPC() && ((PC)ch).Hunger > 20)
{
ch.SendText("You are &n&+yfull&n.\r\n");
}
if (!ch.IsNPC() && ((PC)ch).Thirst > 20)
{
ch.SendText("You do not feel &n&+cth&+Ci&n&+cr&+Cst&n&+cy&n.\r\n");
}
if (obj.Values[3] != 0 && !CharData.CheckImmune(ch, Race.DamageType.poison))
{
/* The shit was poisoned ! */
Affect af = new Affect();
ch.SendText("You choke and gag.\r\n");
SocketConnection.Act("$n chokes and gags.", ch, null, null, SocketConnection.MessageTarget.room);
af.Type = Affect.AffectType.spell;
af.Value = "poison";
af.Duration = 3 * amount;
af.AddModifier(Affect.Apply.strength, -(obj.Level / 7 + 1));
af.SetBitvector(Affect.AFFECT_POISON);
ch.CombineAffect(af);
}
/* HOLY_WATER and UNHOLY_WATER effects */
if ((ch.IsGood() && obj.Values[2] == 27) ||
(ch.IsEvil() && obj.Values[2] == 28))
{
int heal = MUDMath.Dice(1, 8);
if (ch.Hitpoints < ch.GetMaxHit())
{
ch.Hitpoints = Math.Min(ch.Hitpoints + heal, ch.GetMaxHit());
ch.UpdatePosition();
ch.SendText("You feel a little better!\r\n");
}
}
if ((ch.IsEvil() && obj.Values[2] == 27) ||
(ch.IsGood() && obj.Values[2] == 28))
{
int harm = MUDMath.Dice(1, 10);
ch.Hitpoints = Math.Max(ch.Hitpoints - harm, -10);
ch.SendText("You choke and feel as if you'd swallowed boiling oil!\r\n");
ch.UpdatePosition();
}
/* End (UN)HOLY_WATER effects */
// -1 Means a container never goes empty.
if (obj.Values[1] != -1)
{
obj.Values[1] -= amount;
if (obj.Values[1] <= 0)
{
ch.SendText("The container is now &+Lempty&n.\r\n");
obj.Values[1] = 0;
}
}
break;
}
return;
}
示例2: InflictSpellDamage
//.........这里部分代码省略.........
SetFighting( ch, victim.Master );
return false;
}
}
/*
* More charm stuff.
*/
if( victim.Master == ch
&& !( victim.GetRace() == Race.RACE_FIRE_ELE && damType == AttackType.DamageType.fire )
&& !( victim.GetRace() == Race.RACE_WATER_ELE && damType == AttackType.DamageType.water )
&& !( victim.GetRace() == Race.RACE_EARTH_ELE && damType == AttackType.DamageType.earth )
&& !( victim.GetRace() == Race.RACE_AIR_ELE && damType == AttackType.DamageType.wind ) )
StopFighting( victim, true );
/*
* Hunting stuff...
*/
if( dam != 0 && victim.IsNPC()
&& !( victim.GetRace() == Race.RACE_FIRE_ELE && damType == AttackType.DamageType.fire )
&& !( victim.GetRace() == Race.RACE_WATER_ELE && damType == AttackType.DamageType.water )
&& !( victim.GetRace() == Race.RACE_EARTH_ELE && damType == AttackType.DamageType.earth )
&& !( victim.GetRace() == Race.RACE_AIR_ELE && damType == AttackType.DamageType.wind ) )
{
StartGrudge( victim, ch, false );
}
/*
* Damage modifiers.
*/
if (victim.IsAffected( Affect.AFFECT_SANCTUARY))
dam /= 2;
if ((victim.IsAffected( Affect.AFFECT_PROTECT_EVIL)) && ch.IsEvil())
dam -= dam / 8;
else if ((victim.IsAffected( Affect.AFFECT_PROTECT_GOOD)) && ch.IsGood())
dam -= dam / 8;
if( dam < 0 )
dam = 0;
}
switch( victim.CheckRIS( damType ) )
{
case Race.ResistanceType.resistant:
dam -= dam / 3;
break;
case Race.ResistanceType.immune:
immune = true;
dam = 0;
break;
case Race.ResistanceType.susceptible:
dam += dam / 2;
break;
case Race.ResistanceType.vulnerable:
dam *= 2;
break;
}
if( ( damType == AttackType.DamageType.wind || damType == AttackType.DamageType.gas || damType == AttackType.DamageType.asphyxiation )
&& victim.IsAffected( Affect.AFFECT_DENY_AIR))
{
if( MUDMath.NumberPercent() < 50 )
{
victim.SendText( "&+CYou deny the damage.&n\r\n" );
immune = true;
示例3: InflictDamage
//.........这里部分代码省略.........
if( victim.Master == ch )
{
StopFighting( victim, true );
}
ch.BreakInvisibility();
/*
* Hunting stuff...
*/
if( dam != 0 && victim.IsNPC() )
{
/* StartGrudge is combined StartHating and StartHunting */
StartGrudge( victim, ch, false );
}
/*
* Damage modifiers.
*/
// Critical hits for double damage
// Average of 5% for those that have average luck
// Gnomes could concievably have 10%
if( MUDMath.NumberPercent() < ( 2 + ( ch.GetCurrLuck() / 18 ) ) && dam > 0 )
{
ch.SendText( "&+WYou score a CRITICAL HIT!&n\r\n" );
dam *= 2;
critical = true;
}
if( victim.IsAffected( Affect.AFFECT_SANCTUARY ) )
dam /= 2;
if( victim.IsAffected( Affect.AFFECT_PROTECT_EVIL ) && ch.IsEvil() )
dam -= dam / 8;
else if( victim.IsAffected( Affect.AFFECT_PROTECT_GOOD ) && ch.IsGood() )
dam -= dam / 8;
// Check stoneskin. People not affected by a stoneskin affect
// cannot lose their stoneskin for any reason. This should mean
// that mobs will keep their stoneskin and players should always
// have a chance to lose it, since no player should ever be
// setbit stoneskin.
//
// The bool value of found is used so that we can have them
// take full damage when their stoneskin shatters, but get the
// damage reduction if they are either a mob or their stoneskin
// wears off that round.
//
/* Yeah, yeah.. so maybe backstabs shouldn't be aff'd. */
// Actually they should be affected, but they should have a much
// higher chance of getting through (say 30-70%).
//
// Critical hits will now go through stoneskin
// automatically
if (!critical && victim.IsAffected( Affect.AFFECT_STONESKIN) &&
( skill != "backstab" || MUDMath.NumberPercent() < ( 25 + ch.Level ) ) )
{
bool found = false;
for (int i = (victim.Affected.Count - 1); i >= 0; i--)
{
if( victim.Affected[i].HasBitvector( Affect.AFFECT_STONESKIN ) )
{
// Small chance of shattering the stoneskin on a good hit.
// Reduced chance by about 20%
if( dam >= 25 && MUDMath.NumberPercent() <= ( dam / 12 ) )
示例4: IsAggressive
/// <summary>
/// Checks whether the caller is aggressive toward the victim.
/// </summary>
/// <param name="victim"></param>
/// <returns></returns>
public bool IsAggressive(CharData victim)
{
CharData ch = this;
Guild guild = null;
if (victim == null)
{
Log.Error("IsAggressive: called with null ch or victim.", 0);
return false;
}
if (ch == victim)
{
return false;
}
if (MUDString.NameContainedIn("_guildgolem_", ch.Name))
{
foreach (Guild it in Database.GuildList)
{
guild = it;
if (guild.ID == Guild.GolemGuildID(ch))
break;
}
if (guild != null && guild.Ostracized.Length != 0)
{
if (MUDString.NameContainedIn(victim.Name, guild.Ostracized))
return true;
}
}
if (MUDString.NameContainedIn(Race.RaceList[victim.GetRace()].Name, Race.RaceList[ch.GetOrigRace()].Hate))
{
Log.Trace("Returning true for IsAggressive due to race hatred.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGROGOOD) && victim.IsGood())
{
Log.Trace("Returning true for IsAggressive due to aggro good and good victim.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGROEVIL) && victim.IsEvil())
{
Log.Trace("Returning true for IsAggressive due to aggro evil and evil victim.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGRONEUT) && victim.IsNeutral())
{
Log.Trace("Returning true for IsAggressive due to aggro neutral and neutral victim.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGROEVILRACE) && victim.GetRacewarSide() == Race.RacewarSide.evil)
{
Log.Trace("Returning true for IsAggressive due to aggro evil race and victim evil racewar.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGROGOODRACE) && victim.GetRacewarSide() == Race.RacewarSide.good)
{
Log.Trace("Returning true for IsAggressive due to aggro good race and victim good racewar.");
return true;
}
if (ch.HasActionBit(MobTemplate.ACT_AGGRESSIVE))
{
Log.Trace("Returning true for IsAggressive due to aggressive flag on ch.");
return true;
}
return ch.IsHating(victim);
}
示例5: GetObject
public static void GetObject(CharData ch, Object obj, Object container)
{
if (!obj.HasWearFlag(ObjTemplate.WEARABLE_CARRY))
{
ch.SendText("You can't pick that up.\r\n");
return;
}
if (obj._itemType != ObjTemplate.ObjectType.money)
{
if (ch.CarryWeight + obj.GetWeight() > ch.MaxCarryWeight())
{
SocketConnection.Act("$p&n is quite literally the &+Ystraw&n that would break the &n&+ycamel&n's back.", ch, obj, null, SocketConnection.MessageTarget.character);
return;
}
}
if (container != null)
{
SocketConnection.Act("You get $p&n from $P&n.", ch, obj, container, SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&n retrieves $p&n from $P&n.", ch, obj, container, SocketConnection.MessageTarget.room);
obj.RemoveFromObject();
// Fix for corpse EQ dupe on crash
if (container._itemType == ObjTemplate.ObjectType.pc_corpse)
{
Database.CorpseList.Save();
}
}
else
{
SocketConnection.Act("You get $p&n.", ch, obj, container, SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&n picks up $p&n.", ch, obj, container, SocketConnection.MessageTarget.room);
obj.RemoveFromRoom();
}
if (obj.HasFlag(ObjTemplate.ITEM_ANTI_EVIL) && ch.IsEvil())
{
SocketConnection.Act("&+LYou are &n&+rburned&+L by holy &+Rfire&+L from $p&+L. Ouch!&n", ch, obj, null,
SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&+L is &n&+rburned&+L by holy &+Rfire&+L from &n$p&+L!&n", ch, obj, null, SocketConnection.MessageTarget.room);
Combat.InflictSpellDamage(ch, ch, 20, "burning hands", AttackType.DamageType.white_magic);
obj.AddToRoom(ch.InRoom);
return;
}
if (obj.HasFlag(ObjTemplate.ITEM_ANTI_EVIL) && ch.IsEvil())
{
SocketConnection.Act("&+LYou are &n&+rburned&+L by holy &+Rfire&+L from $p&+L. Ouch!&n", ch, obj, null,
SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&+L is &n&+rburned&+L by holy &+Rfire&+L from &n$p&+L!&n", ch, obj, null, SocketConnection.MessageTarget.room);
Combat.InflictSpellDamage(ch, ch, 20, "burning hands", AttackType.DamageType.white_magic);
obj.AddToRoom(ch.InRoom);
return;
}
if (obj.HasFlag(ObjTemplate.ITEM_ANTI_GOOD) && ch.IsGood())
{
SocketConnection.Act("&+LYou are &n&+rconsumed&+L by &+Rfire&+L and &+Ldespair&n from $p&+L!&n", ch, obj, null, SocketConnection.MessageTarget.character);
SocketConnection.Act("$n&+L is &n&+rengulfed&+L by an abundancy of &+Rflames&+L from &n$p&+L!&n", ch, obj, null, SocketConnection.MessageTarget.room);
Combat.InflictSpellDamage(ch, ch, 20, "burning hands", AttackType.DamageType.white_magic);
obj.AddToRoom(ch.InRoom);
return;
}
if (obj._itemType == ObjTemplate.ObjectType.money)
{
int amount = obj._values[0] + obj._values[1] + obj._values[2] + obj._values[3];
ch.ReceiveCopper(obj._values[0]);
ch.ReceiveSilver(obj._values[1]);
ch.ReceiveGold(obj._values[2]);
ch.ReceivePlatinum(obj._values[3]);
if (amount > 1)
{
string text = String.Format("You pick up");
string text2;
if (obj._values[3] > 0)
{
text2 = String.Format(" {0} &+Wplatinum&n", obj._values[3]);
if (obj._values[0] > 0 || obj._values[1] > 0 || obj._values[2] > 0)
{
text2 += ",";
}
text += text2;
}
if (obj._values[2] > 0)
{
text2 = String.Format(" {0} &+Ygold&n", obj._values[2]);
if (obj._values[0] > 0 || obj._values[1] > 0)
{
text2 += ",";
}
text += text2;
}
if (obj._values[1] > 0)
{
text2 = String.Format(" {0} &n&+wsilver&n", obj._values[1]);
if (obj._values[0] > 0)
{
text2 += ",";
//.........这里部分代码省略.........
示例6: ShowCharacterToCharacterAbbreviated
//.........这里部分代码省略.........
if (victim.CurrentPosition == Position.standing && victim.CanFly())
{
text += "flying";
}
else
{
text += Position.PositionString(victim.CurrentPosition);
}
text += " here";
if (victim.Fighting != null)
{
text += "&n fighting ";
if (victim.Fighting == ch)
{
text += "&nyou!";
}
else if (victim.InRoom == victim.Fighting.InRoom)
{
text += victim.Fighting.ShowNameTo(ch, false);
}
else
{
text += "&nsomeone who left??";
}
}
if (victim.Riding && victim.Riding.InRoom == victim.InRoom)
{
text += "&n, mounted on " + victim.Riding.ShowNameTo(ch, false);
}
text += "&n.";
}
if (victim.IsAffected(Affect.AFFECT_CASTING))
{
text += "&n&+y (casting)&n";
}
if (victim.IsAffected(Affect.AFFECT_MINOR_PARA))
{
text += "&n (&+Yparalyzed)&n";
}
if (!victim.IsNPC() && victim.HasActionBit(PC.PLAYER_WIZINVIS)
&& victim.GetTrust() <= ch.GetTrust())
{
text += " &n&+g*&n";
}
if (victim.IsAffected(Affect.AFFECT_HIDE) && (ch.IsAffected(Affect.AFFECT_DETECT_HIDDEN) ||
ch.HasInnate(Race.RACE_DETECT_HIDDEN)))
{
text += " &n(&+LHiding&n)";
}
if (victim.IsAffected(Affect.AFFECT_CHARM) && ch.HasActionBit(PC.PLAYER_GODMODE))
{
text += " &n(&n&+mCharmed&n)";
}
if ((victim.IsAffected(Affect.AFFECT_PASS_DOOR) || victim.HasInnate(Race.RACE_PASSDOOR))
&& ch.HasActionBit(PC.PLAYER_GODMODE))
{
text += " &n(&+WTranslucent&n)";
}
if ((victim.GetRace() == Race.RACE_UNDEAD || victim.GetRace() == Race.RACE_VAMPIRE)
&& (ch.IsAffected( Affect.AFFECT_DETECT_UNDEAD) || ch.HasActionBit(PC.PLAYER_GODMODE)))
{
text += " &n(&+WPale&n)";
}
if (victim.IsAffected(Affect.AFFECT_FAERIE_FIRE))
{
text += " &n(&n&+mFa&+Me&n&+mr&+Mie&+L Aura&n)";
}
if (victim.IsEvil() && (ch.IsAffected(Affect.AFFECT_DETECT_EVIL)
|| ch.HasInnate(Race.RACE_DETECT_ALIGN)
|| ch.IsClass(CharClass.Names.paladin)
|| ch.IsClass(CharClass.Names.antipaladin)))
{
text += " &n(&+rBlood&+L Aura&n)";
}
if (victim.IsGood() && (ch.IsAffected(Affect.AFFECT_DETECT_GOOD)
|| ch.HasInnate(Race.RACE_DETECT_ALIGN)
|| ch.IsClass(CharClass.Names.paladin)
|| ch.IsClass(CharClass.Names.antipaladin)))
{
text += " &n(&+CLight&+L Aura&n)";
}
if (victim.IsAffected(Affect.AFFECT_SANCTUARY))
{
text += " &n(&+WWhite&+L Aura&n)";
}
if (!victim.IsNPC() && victim.HasActionBit(PC.PLAYER_AFK))
{
text += " &n&+b(&+RAFK&n&+b)&n";
}
if (!victim.IsNPC() && victim.HasActionBit(PC.PLAYER_BOTTING))
{
text += " &n&+b(&+YBot&n&+b)&n";
}
text += "\r\n";
ch.SendText(text);
return;
}