private static void ApplyNonSalve(ObjectInstance salve, CharacterInstance actor, CharacterInstance victim) { if (victim == actor) { comm.act(ATTypes.AT_ACTION, "$n starts to rub $p on $mself...", actor, salve, victim, ToTypes.Room); comm.act(ATTypes.AT_ACTION, "You try to rub $p on yourself....", actor, salve, victim, ToTypes.Character); return; } comm.act(ATTypes.AT_ACTION, "$n starts to rub $p on $N...", actor, salve, victim, ToTypes.NotVictim); comm.act(ATTypes.AT_ACTION, "$n starts to rub $p on you...", actor, salve, victim, ToTypes.Victim); comm.act(ATTypes.AT_ACTION, "You try to rub $p on $N...", actor, salve, victim, ToTypes.Character); }
public static bool CheckSkill(CharacterInstance ch, string command, string argument) { return(Ability.CheckAbility(ch, command, argument)); }
public static IEnumerator ExecuteRoutine(CharacterInstance c, int rank, SkillExecutionStats executionStats) {
public static void StopHunting(this CharacterInstance ch) { ch.CurrentHunting = null; }
public static bool IsHunting(this CharacterInstance ch, CharacterInstance victim) { return(ch.CurrentHunting != null && ch.CurrentHunting.Who == victim); }
public static void do_sneak(CharacterInstance ch, string argument) { // TODO }
public static int spell_remove_trap(int sn, int level, CharacterInstance ch, object vo) { // TODO return(0); }
private static bool ReflectDamage(int sn, int level, CharacterInstance ch, CharacterInstance vch) { Attack.spell_attack(sn, level, vch, ch); return(ch.CharDied()); }
private static int GetDamageIfSaved(int sn, int level, CharacterInstance ch, SkillData skill, CharacterInstance vch, int damage) { var spellSaveType = EnumerationExtensions.GetEnum <SpellSaveEffectTypes>( Macros.SPELL_SAVE(skill)); switch (spellSaveType) { case SpellSaveEffectTypes.ThreeQuartersDamage: damage = GetThreeQuartersDamage(damage); break; case SpellSaveEffectTypes.HalfDamage: damage = GetHalfDamage(damage); break; case SpellSaveEffectTypes.QuarterDamage: damage = GetQuarterDamage(damage); break; case SpellSaveEffectTypes.EighthDamage: damage = GetEighthDamage(damage); break; case SpellSaveEffectTypes.Absorb: AbsorbDamage(ch, skill, vch, damage); return(damage); case SpellSaveEffectTypes.Reflect: if (ReflectDamage(sn, level, ch, vch)) { break; } return(damage); } return(damage); }
public static double CalculateDustBundleSize(CharacterInstance character, string shopEntryId) { double baseAmount = App.Binder.ConfigMeta.VENDOR_DUST_BUNDLES[shopEntryId]; return(Math.Floor(CharacterStatModifierUtil.ApplyDustBonuses(character, baseAmount))); }
private static int GetBaseDamage(int level, CharacterInstance ch, SkillData skill) { return(!string.IsNullOrEmpty(skill.Dice) ? magic.ParseDiceExpression(ch, skill.DieCharacterMessage) : SmaugRandom.Between(1, level / 2)); }
public static void Execute(CharacterInstance ch, ObjectInstance obj) { }
private void onCharacterMeleeAttackStarted(CharacterInstance sourceCharacter, CharacterInstance targetCharacter) { if (!base.CharacterView.IsMenuView && (sourceCharacter == base.CharacterView.Character)) { base.startAction(AbstractCharacterAnimator.Action.ATTACK_MELEE, base.CharacterView.Character.getAttackDuration() * 1.2f, true, this.m_meleeAttackClipIdx, -1f); if ((this.m_meleeAttackClipIdx % 2) == 0) { this.m_meleeAttackClipIdx = (UnityEngine.Random.Range(0, 2) != 0) ? 3 : 1; } else { this.m_meleeAttackClipIdx = (UnityEngine.Random.Range(0, 2) != 0) ? 2 : 0; } } }
public static void do_detrap(CharacterInstance ch, string argument) { // TODO }
public static int spell_cure_poison(int sn, int level, CharacterInstance ch, object vo) { // TODO return(0); }
public static void Execute(CharacterInstance ch) { }
public static int spell_faerie_fire(int sn, int level, CharacterInstance ch, object vo) { // TODO return(0); }
private static void SetChannel(CharacterInstance ch, ChannelTypes channelType) { ch.Deaf = ch.Deaf.SetBit(channelType); }
public static int spell_create_food(int sn, int level, CharacterInstance ch, object vo) { // TODO return(0); }
private static void RemoveChannel(CharacterInstance ch, ChannelTypes channelType) { ch.Deaf = ch.Deaf.RemoveBit(channelType); }
public static void do_description(CharacterInstance ch, string argument) { // TODO }
public static void do_ban(CharacterInstance ch, string argument) { if (CheckFunctions.CheckIfTrue(ch, ch.IsNpc(), "Monsters are too dumb to do that!")) { return; } var pch = (PlayerInstance)ch; ch.SetColor(ATTypes.AT_IMMORT); var args = new string[4]; args[0] = argument.ParseWord(1, " "); args[1] = argument.ParseWord(2, " "); args[2] = argument.ParseWord(3, " "); args[3] = argument.ParseWord(4, " "); var tempTime = args[3].IsNullOrWhitespace() && !args[3].IsNumber() ? -1 : Convert.ToInt32(args[3]); if (CheckFunctions.CheckIfTrue(ch, tempTime != -1 && (tempTime < 1 || tempTime > 1000), "Time value is -1 (forever) or from 1 to 1000.")) { return; } // Convert the value from DAYS to SECONDS var duration = tempTime > 0 ? tempTime * 86400 : tempTime; if (CheckFunctions.CheckIfTrue(pch, pch.SubState == CharacterSubStates.Restricted, "You cannot use this command from within another command.")) { return; } switch (pch.SubState) { case CharacterSubStates.None: pch.tempnum = (int)CharacterSubStates.None; break; case CharacterSubStates.BanDescription: // TODO: add_ban(ch, "", "", 0, 0); return; default: LogManager.Instance.Bug("Illegal Characer Substate (Name={0}, SubState={1}", pch.Name, pch.SubState); return; } if (args[0].IsNullOrWhitespace()) { SendSyntaxMessage(ch); return; } // site, race, class, show (default is null) if (args[0].EqualsIgnoreCase("site")) { DoSiteBan(ch, args, duration); } else if (args[0].EqualsIgnoreCase("race")) { DoRaceBan(ch, args, duration); } else if (args[0].EqualsIgnoreCase("class")) { DoClassBan(ch, args, duration); } else if (args[0].EqualsIgnoreCase("show") || args[0].IsNullOrWhitespace()) { DoShowBans(ch, args); } else { SendSyntaxMessage(ch); } }
public static void StopFearing(this CharacterInstance ch) { ch.CurrentFearing = null; }
private static void DoClassBan(CharacterInstance ch, string[] args, int duration) { }
public static void do_mpmusic(CharacterInstance ch, string argument) { // TODO }
private static void DoShowBans(CharacterInstance ch, string[] args) { }
public static void do_mp_open_passage(CharacterInstance ch, string argument) { // TODO }
private static void ShowBans(CharacterInstance ch, BanTypes type) { }
public static void Execute(string txt, CharacterInstance ch) { }
public static void do_apply(CharacterInstance ch, string argument) { var firstArg = argument.FirstWord(); if (CheckFunctions.CheckIfEmptyString(ch, firstArg, "Apply what?")) { return; } var secondArg = argument.SecondWord(); if (CheckFunctions.CheckIfNotNullObject(ch, ch.CurrentFighting, "You're too busy fighting...")) { return; } if (handler.FindObject_CheckMentalState(ch)) { return; } var salve = ch.GetCarriedObject(firstArg); if (CheckFunctions.CheckIfNullObject(ch, salve, "You do not have that.")) { return; } CharacterInstance victim; ObjectInstance obj = null; if (string.IsNullOrEmpty(secondArg)) { victim = ch; } else { victim = ch.GetCharacterInRoom(secondArg); obj = ch.GetObjectOnMeOrInRoom(secondArg); if (CheckFunctions.CheckIfTrue(ch, victim == null && obj == null, "Apply it to what or whom?")) { return; } } if (CheckFunctions.CheckIfNotNullObject(ch, obj, "You can't do that... yet.")) { return; } if (CheckFunctions.CheckIfNotNullObject(ch, victim.CurrentFighting, "Wouldn't work very well while they're fighting...")) { return; } if (salve.ItemType != ItemTypes.Salve) { ApplyNonSalve(salve, ch, victim); return; } salve.Split(); salve.Values.Charges -= 1; if (!MudProgHandler.ExecuteObjectProg(MudProgTypes.Use, ch, salve, null, null)) { UseSalve(salve, ch, victim); } Macros.WAIT_STATE(ch, salve.Values.Delay); var retcode = ch.ObjectCastSpell((int)salve.Values.Skill1ID, (int)salve.Values.SpellLevel, victim); if (retcode == ReturnTypes.None) { retcode = ch.ObjectCastSpell((int)salve.Values.Skill2ID, (int)salve.Values.SpellLevel, victim); } if (retcode == ReturnTypes.CharacterDied || retcode == ReturnTypes.BothDied) { throw new CharacterDiedException("Salve {0}, Actor {1}, Victim {2}", salve.ID, ch.ID, victim.ID); } if (!handler.obj_extracted(salve) && salve.Values.Charges <= 0) { salve.Extract(); } }