public override bool OnHeartbeat(GameObject attachee, GameObject triggerer) { if ((GetGlobalVar(958) == 1)) { attachee.ClearObjectFlag(ObjectFlag.OFF); if ((!GameSystems.Combat.IsCombatActive())) { if ((is_better_to_talk(attachee, PartyLeader))) { PartyLeader.BeginDialog(attachee, 1000); } } } else if ((GetGlobalVar(958) == 4)) { if ((!GameSystems.Combat.IsCombatActive())) { if ((is_better_to_talk(attachee, PartyLeader))) { PartyLeader.BeginDialog(attachee, 4000); } } } return(RunDefault); }
public override bool OnDialog(GameObject attachee, GameObject triggerer) { if ((attachee.GetLeader() != null)) { triggerer.BeginDialog(attachee, 210); // rufus in party } else if ((GetGlobalVar(912) == 32 && attachee.GetMap() != 5016 && attachee.GetMap() != 5018)) { triggerer.BeginDialog(attachee, 240); // have attacked 3 or more farm animals with rufus in party and not in castle main hall or upper hall } else if ((GetGlobalFlag(835) && !GetGlobalFlag(37) && GetGlobalFlag(842) && !GetGlobalFlag(839))) { triggerer.BeginDialog(attachee, 320); // handled tower fight diplomatically and lareth is alive and have heard about prisoner lareth and have not liberated lareth } else if ((PartyLeader.HasReputation(27))) { triggerer.BeginDialog(attachee, 11002); // have rabble-rouser reputation - rufus won't talk to you } else { triggerer.BeginDialog(attachee, 1); // none of the above } return(SkipDefault); }
public override bool OnHeartbeat(GameObject attachee, GameObject triggerer) { if ((!GameSystems.Combat.IsCombatActive())) { if ((!attachee.HasMet(PartyLeader))) { if ((is_cool_to_talk(attachee, PartyLeader))) { attachee.TurnTowards(PartyLeader); PartyLeader.BeginDialog(attachee, 1); } } else if ((attachee.HasMet(PartyLeader) && GetGlobalVar(700) == 0)) { if ((is_cool_to_talk(attachee, PartyLeader))) { attachee.TurnTowards(PartyLeader); PartyLeader.BeginDialog(attachee, 120); DetachScript(); } } else if ((GetGlobalVar(700) == 1)) { if ((is_cool_to_talk(attachee, PartyLeader))) { attachee.TurnTowards(PartyLeader); PartyLeader.BeginDialog(attachee, 100); } } } return(RunDefault); }
public override bool OnHeartbeat(GameObject attachee, GameObject triggerer) { if (((attachee.GetMap() != 5171) && (PartyLeader.HasReputation(34) || PartyLeader.HasReputation(35) || PartyLeader.HasReputation(42) || PartyLeader.HasReputation(44) || PartyLeader.HasReputation(45) || PartyLeader.HasReputation(43) || PartyLeader.HasReputation(46) || (GetGlobalVar(993) == 5 && !GetGlobalFlag(870))))) { if (((GetGlobalVar(969) == 0) && (!GetGlobalFlag(955)))) { if ((!GameSystems.Combat.IsCombatActive())) { foreach (var obj in ObjList.ListVicinity(attachee.GetLocation(), ObjectListFilter.OLC_PC)) { if ((is_better_to_talk(attachee, obj))) { attachee.TurnTowards(obj); obj.BeginDialog(attachee, 30); } } } } } else if (((attachee.GetMap() == 5149) && (GetGlobalVar(944) == 1 || GetGlobalVar(944) == 2) && (!GetGlobalFlag(861)))) { attachee.RunOff(); SetGlobalFlag(861, true); } // game.new_sid = 0 return(RunDefault); }
public static void check_evidence_rep_pan(GameObject attachee, GameObject triggerer) { if ((PartyLeader.HasReputation(73))) { PartyLeader.AddReputation(76); PartyLeader.RemoveReputation(73); } else if ((PartyLeader.HasReputation(70))) { PartyLeader.AddReputation(73); PartyLeader.RemoveReputation(70); } else if ((!PartyLeader.HasReputation(70))) { if ((!PartyLeader.HasReputation(73))) { if ((!PartyLeader.HasReputation(76))) { PartyLeader.AddReputation(70); } } } return; }
public override bool OnSpellCast(GameObject attachee, GameObject triggerer, SpellPacketBody spell) { if ((spell.spellEnum == WellKnownSpells.DispelMagic && attachee.GetMap() == 5014 && !GetGlobalFlag(837))) { SetGlobalFlag(837, true); var loc = attachee.GetLocation(); var cur = attachee.GetStat(Stat.hp_current); var max = attachee.GetStat(Stat.hp_max); var newHp = max - cur; var damage_dice = Dice.Parse("1d1"); damage_dice = damage_dice.WithCount(newHp); attachee.Destroy(); var npc = GameSystems.MapObject.CreateObject(14614, new locXY(490, 483)); // while (i < total): npc.Damage(null, DamageType.Bludgeoning, damage_dice); if ((GetGlobalFlag(838))) { PartyLeader.BeginDialog(npc, 100); } else { PartyLeader.BeginDialog(npc, 120); } } if ((attachee.GetMap() == 5014 && !GetGlobalFlag(837))) { triggerer.FloatMesFileLine("mes/spell.mes", 30000); return(SkipDefault); } return(RunDefault); }
public static bool look_spugnoir(GameObject attachee, GameObject triggerer) { foreach (var npc in PartyLeader.GetPartyMembers()) { if ((npc.GetNameId() == 8072 && npc.GetLeader() != null && !GetGlobalFlag(819))) { var curr = npc.GetStat(Stat.hp_current); if ((curr >= 1)) { foreach (var target in PartyLeader.GetPartyMembers()) { if ((npc.DistanceTo(target) <= 20 && target.type == ObjectType.pc && npc.GetNameId() != 8072)) { npc.TurnTowards(target); target.BeginDialog(npc, 1000); return(SkipDefault); } } } } } attachee.Attack(triggerer); return(RunDefault); }
public bool CheckPrecondition(GameObject npc, GameObject pc, int lineNumber, out string originalScript) { switch (lineNumber) { case 2: case 3: originalScript = "game.global_flags[48] == 1"; return(GetGlobalFlag(48)); case 4: case 5: originalScript = "game.quests[16].state == qs_completed and (game.party_alignment == LAWFUL_GOOD or game.party_alignment == NEUTRAL_GOOD or game.party_alignment == CHAOTIC_GOOD or game.party_alignment == LAWFUL_NEUTRAL or game.party_alignment == TRUE_NEUTRAL or game.party_alignment == CHAOTIC_NEUTRAL)"; return(GetQuestState(16) == QuestState.Completed && (PartyAlignment == Alignment.LAWFUL_GOOD || PartyAlignment == Alignment.NEUTRAL_GOOD || PartyAlignment == Alignment.CHAOTIC_GOOD || PartyAlignment == Alignment.LAWFUL_NEUTRAL || PartyAlignment == Alignment.NEUTRAL || PartyAlignment == Alignment.CHAOTIC_NEUTRAL)); case 6: case 7: originalScript = "game.quests[16].state == qs_completed and (game.party_alignment == CHAOTIC_EVIL or game.party_alignment == NEUTRAL_EVIL or game.party_alignment == LAWFUL_EVIL)"; return(GetQuestState(16) == QuestState.Completed && (PartyAlignment == Alignment.CHAOTIC_EVIL || PartyAlignment == Alignment.NEUTRAL_EVIL || PartyAlignment == Alignment.LAWFUL_EVIL)); case 10: originalScript = "pc != game.party[0] and game.party[0].distance_to(pc) <= 40 and not critter_is_unconscious(game.party[0]) and anyone(game.party[0].group_list(), \"has_wielded\", 3005)"; return(pc != PartyLeader && PartyLeader.DistanceTo(pc) <= 40 && !Utilities.critter_is_unconscious(PartyLeader) && PartyLeader.GetPartyMembers().Any(o => o.HasEquippedByName(3005))); case 31: case 32: originalScript = "pc.skill_level_get(npc,skill_bluff) >= 7"; return(pc.GetSkillLevel(npc, SkillId.bluff) >= 7); default: originalScript = null; return(true); } }
public override bool OnRemoveItem(GameObject attachee, GameObject triggerer) { if (PartyLeader.GetMap() == 5079 && triggerer.GetNameId() == 1050) // Zuggtmoy level, taking from throne of gems { var zuggtmoy = Utilities.find_npc_near(triggerer, 8064); var loc = triggerer.GetLocation(); var rot = triggerer.Rotation; triggerer.Destroy(); var empty_throne = GameSystems.MapObject.CreateObject(1051, loc); empty_throne.Rotation = rot; UiSystems.CharSheet.Hide(); if (((zuggtmoy != null) && (SelectedPartyLeader != null))) { if ((GetGlobalFlag(181))) { SetGlobalFlag(181, false); Zuggtmoy.transform_into_demon_form(zuggtmoy, SelectedPartyLeader, 320); } else { SelectedPartyLeader.BeginDialog(zuggtmoy, 320); } } DetachScript(); return(RunDefault); } else { return(SkipDefault); } }
public static void heavily_damage(GameObject npc) { // note: this script kills an NPC // since the san_dying is triggered, it makes the game think you killed him // so to avoid problems, reduce global_vars[23] (which counts the # of Hommeletans killed) beforehand bool flag; if ((GetGlobalVar(23) == 0)) { flag = false; } else { flag = true; SetGlobalVar(23, GetGlobalVar(23) - 1); } npc.Damage(null, DamageType.Poison, Dice.Parse("30d1")); npc.Damage(null, DamageType.Subdual, Dice.Parse("15d1")); if ((!flag && GetGlobalVar(23) > 0)) { SetGlobalVar(23, GetGlobalVar(23) - 1); } if ((GetGlobalVar(23) < 2 && PartyLeader.HasReputation(92))) { foreach (var pc in GameSystems.Party.PartyMembers) { pc.RemoveReputation(92); } } return; }
public static void talk_talk(GameObject attachee, GameObject triggerer) { attachee.TurnTowards(PartyLeader); PartyLeader.BeginDialog(attachee, 1); ScriptDaemon.npc_set(attachee, 2); return; }
public static void traders_runoff(GameObject attachee) { AttachParticles("orb-summon-fire-elemental", PartyLeader); var gremag = Utilities.find_npc_near(attachee, 8049); var rannos = Utilities.find_npc_near(attachee, 8048); if (gremag != null) { gremag.RunOff(); } if (rannos != null) { rannos.RunOff(gremag.GetLocation().OffsetTiles(-3, 0)); } if (!PartyLeader.HasReputation(23)) { PartyLeader.AddReputation(23); } if (SelectedPartyLeader.GetMap() == 5051) { GameSystems.RandomEncounter.RemoveQueuedEncounter(3159); } attachee.Destroy(); return; }
public override bool OnHeartbeat(GameObject attachee, GameObject triggerer) { if ((!GameSystems.Combat.IsCombatActive())) { if ((is_better_to_talk(attachee, PartyLeader))) { if ((GetGlobalVar(969) == 2)) { attachee.TurnTowards(triggerer); PartyLeader.BeginDialog(attachee, 1); SetGlobalVar(969, 3); } else if ((GetGlobalVar(969) == 4 && GetGlobalVar(993) == 8)) { attachee.TurnTowards(triggerer); PartyLeader.BeginDialog(attachee, 10); SetGlobalVar(969, 5); } else if ((GetGlobalVar(969) == 4 && GetGlobalVar(993) != 8)) { attachee.TurnTowards(triggerer); PartyLeader.BeginDialog(attachee, 240); SetGlobalVar(969, 5); } } } return(RunDefault); }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } foreach (var pc in GameSystems.Party.PartyMembers) { pc.AddCondition("fallen_paladin"); } if ((attachee.GetMap() == 5170 || attachee.GetMap() == 5135)) { SetGlobalFlag(992, true); SetGlobalFlag(935, true); PartyLeader.AddReputation(44); } else if ((attachee.GetMap() == 5156)) { if ((GetGlobalFlag(940))) { SetGlobalFlag(935, true); PartyLeader.AddReputation(44); } SetGlobalFlag(992, true); } return(RunDefault); }
protected void SendPartyMessage(string message, int hue = 0x3B2) { if (HasBegun) { foreach (var pm in Region.GetEnumeratedMobiles().OfType <PlayerMobile>()) { pm.SendMessage(hue, message); } } else { if (PartyLeader == null) { return; } Party p = Party.Get(PartyLeader); if (p != null) { p.Members.ForEach(info => info.Mobile.SendMessage(hue, message)); } else { PartyLeader.SendMessage(hue, message); } } }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } if ((attachee.GetMap() == 5010)) { rngfighttime_set(); SetGlobalFlag(426, true); } SetGlobalFlag(814, true); if ((GetGlobalFlag(815))) { foreach (var pc in GameSystems.Party.PartyMembers) { if ((pc.HasReputation(23))) { pc.RemoveReputation(23); } } } if ((!PartyLeader.HasReputation(9))) { PartyLeader.AddReputation(9); } return(RunDefault); }
public override bool OnDialog(GameObject attachee, GameObject triggerer) { if ((GetGlobalVar(501) == 4 || GetGlobalVar(501) == 5 || GetGlobalVar(501) == 6)) { attachee.FloatLine(23000, triggerer); } else if ((GetGlobalFlag(835) && !GetGlobalFlag(37) && !GetGlobalFlag(842) && !GetGlobalFlag(839))) { triggerer.BeginDialog(attachee, 300); } else if ((PartyLeader.HasReputation(27))) { triggerer.BeginDialog(attachee, 120); } else if ((attachee.HasMet(triggerer))) { triggerer.BeginDialog(attachee, 130); } else { triggerer.BeginDialog(attachee, 1); } return(SkipDefault); }
public static bool trap(GameObject attachee, GameObject triggerer) { AttachParticles("Mon-EarthElem-Unconceal", triggerer); AttachParticles("Mon-EarthElem-body120", triggerer); AttachParticles("Orb-Summon-Earth Elemental", triggerer); AttachParticles("sp-Calm Animals", triggerer); AttachParticles("sp-Quench", triggerer); Sound(4042, 1); foreach (var obj in PartyLeader.GetPartyMembers()) { var damage_dice = Dice.Parse("4d8"); obj.FloatMesFileLine("mes/float.mes", 3); AttachParticles("hit-BLUDGEONING-medium", obj); if ((obj.ReflexSaveAndDamage(null, 20, D20SavingThrowReduction.Half, D20SavingThrowFlag.NONE, damage_dice, DamageType.Bludgeoning, D20AttackPower.UNSPECIFIED, D20ActionType.UNSPECIFIED_MOVE))) { triggerer.FloatMesFileLine("mes/spell.mes", 30001); } else { triggerer.FloatMesFileLine("mes/spell.mes", 30002); } } return(RunDefault); }
public static int grate_strength() { var strength_array = new List <int>(); foreach (var obj in PartyLeader.GetPartyMembers()) { strength_array.Add(obj.GetStat(Stat.strength)); } strength_array.Sort(); strength_array.Reverse(); if (strength_array[0] >= 24) { return(2); } if (strength_array.Count >= 3) { if (strength_array[0] + strength_array[1] + strength_array[2] >= 60) { return(1); } } return(0); }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } foreach (var pc in GameSystems.Party.PartyMembers) { pc.AddCondition("fallen_paladin"); } SetGlobalVar(334, GetGlobalVar(334) + 1); if ((GetGlobalVar(334) >= 2)) { PartyLeader.AddReputation(35); } if ((GetQuestState(67) == QuestState.Accepted)) { SetGlobalFlag(964, true); } StartTimer(60000, () => go_away(attachee)); return(RunDefault); }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } SetGlobalFlag(196, true); if ((!GetGlobalFlag(232))) { attachee.FloatLine(12014, triggerer); SetGlobalVar(23, GetGlobalVar(23) + 1); if (GetGlobalVar(23) >= 2) { PartyLeader.AddReputation(92); } } else { SetGlobalVar(29, GetGlobalVar(29) + 1); attachee.FloatLine(12014, triggerer); } return(RunDefault); }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if ((attachee.GetLeader() == null)) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } } SetGlobalFlag(501, true); SetGlobalVar(511, GetGlobalVar(511) + 1); if ((GetGlobalVar(511) >= 12 && GetGlobalFlag(501))) { SetGlobalFlag(511, true); if ((GetGlobalFlag(511) && GetGlobalFlag(512) && GetGlobalFlag(513) && GetGlobalFlag(514) && GetGlobalFlag(515) && GetGlobalFlag(516) && GetGlobalFlag(517) && GetGlobalFlag(518) && GetGlobalFlag(519) && GetGlobalFlag(520) && GetGlobalFlag(521) && GetGlobalFlag(522))) { SetQuestState(97, QuestState.Completed); PartyLeader.AddReputation(52); SetGlobalVar(501, 7); } } return(RunDefault); }
public static void check_evidence_rep_bor(GameObject attachee, GameObject triggerer) { if ((PartyLeader.HasReputation(72))) { PartyLeader.AddReputation(75); PartyLeader.RemoveReputation(72); } else if ((PartyLeader.HasReputation(69))) { PartyLeader.AddReputation(72); PartyLeader.RemoveReputation(69); } else if ((!PartyLeader.HasReputation(69))) { if ((!PartyLeader.HasReputation(72))) { if ((!PartyLeader.HasReputation(75))) { PartyLeader.AddReputation(69); } } } return; }
public override void OnEndProjectile(SpellPacketBody spell, GameObject projectile, int index_of_target) { Logger.Info("Magic Missile OnEndProjectile"); EndProjectileParticles(projectile); var target = spell.Targets[index_of_target]; var damage_dice = Dice.D4; damage_dice = damage_dice.WithModifier(1); var target_item_obj = target.Object; if ((!((PartyLeader.GetPartyMembers()).Contains(spell.caster))) && target_item_obj.D20Query(D20DispatcherKey.QUE_Critter_Is_Charmed)) { // NPC enemy is trying to cast on a charmed target - this is mostly meant for the Cult of the Siren encounter target_item_obj = Utilities.party_closest(spell.caster, exclude_warded: true); // select nearest conscious PC instead, who isn't already charmed if (target_item_obj == null) { target_item_obj = target.Object; } } // always hits target_item_obj.AddCondition("sp-Magic Missile", spell.spellId, spell.duration, damage_dice.Roll()); target.ParticleSystem = AttachParticles("sp-magic missle-hit", target_item_obj); // special scripting for NPCs no longer necessary - NPCs will launch multiple projectiles now // spell.target_list.remove_target_by_index( index_of_target ) spell.RemoveProjectile(projectile); if (spell.projectiles.Length == 0) { // loc = target.obj.location // target.obj.destroy() // mxcr = game.obj_create( 12021, loc ) // game.global_vars[30] = game.global_vars[30] + 1 spell.EndSpell(true); } }
public static void check_evidence_rep_rak(GameObject attachee, GameObject triggerer) { if ((PartyLeader.HasReputation(74))) { PartyLeader.AddReputation(77); PartyLeader.RemoveReputation(74); } else if ((PartyLeader.HasReputation(71))) { PartyLeader.AddReputation(74); PartyLeader.RemoveReputation(71); } else if ((!PartyLeader.HasReputation(71))) { if ((!PartyLeader.HasReputation(74))) { if ((!PartyLeader.HasReputation(77))) { PartyLeader.AddReputation(71); } } } return; }
protected void SendPartyMessage(int cliloc, int hue = 0x3B2) { if (HasBegun) { foreach (PlayerMobile pm in Region.GetEnumeratedMobiles().OfType <PlayerMobile>()) { pm.SendLocalizedMessage(cliloc, null, hue); } } else { if (PartyLeader == null) { return; } Party p = Party.Get(PartyLeader); if (p != null) { p.Members.ForEach(info => info.Mobile.SendLocalizedMessage(cliloc, null, hue)); } else { PartyLeader.SendLocalizedMessage(cliloc, null, hue); } } }
public override bool OnDying(GameObject attachee, GameObject triggerer) { if (CombatStandardRoutines.should_modify_CR(attachee)) { CombatStandardRoutines.modify_CR(attachee, CombatStandardRoutines.get_av_level()); } SetGlobalFlag(336, true); SetGlobalFlag(284, true); if ((attachee.GetLeader() == null && attachee.FindItemByName(5009) == null && GetGlobalFlag(850))) { SetGlobalFlag(850, false); Utilities.create_item_in_inventory(5009, attachee); } if ((!GetGlobalFlag(233))) { SetGlobalVar(23, GetGlobalVar(23) + 1); if ((GetGlobalVar(23) >= 2)) { PartyLeader.AddReputation(92); } } else { SetGlobalVar(29, GetGlobalVar(29) + 1); } return(RunDefault); }
public override bool OnFirstHeartbeat(GameObject attachee, GameObject triggerer) { if ((attachee.GetMap() == 5156 && GetGlobalVar(704) == 3 && Utilities.is_daytime() && GetQuestState(76) != QuestState.Accepted)) { // turns on warehouse Wilfrick escort attachee.ClearObjectFlag(ObjectFlag.OFF); } else if ((attachee.GetMap() == 5093 && GetGlobalVar(960) == 3)) { // turns on Welkwood Thaddeus escort attachee.ClearObjectFlag(ObjectFlag.OFF); } else if ((attachee.GetMap() == 5171 && GetGlobalVar(944) == 4 && GetGlobalFlag(861))) { // turns on Watch Post main floor replacements attachee.ClearObjectFlag(ObjectFlag.OFF); } else if (((PartyLeader.HasReputation(35) || PartyLeader.HasReputation(42)) && (attachee.GetMap() == 5121))) { // turns on Verbobonc Exterior backup patrol attachee.ClearObjectFlag(ObjectFlag.OFF); } else if (((!PartyLeader.HasReputation(35)) && (attachee.GetMap() == 5121))) { // turns off Verbobonc Exterior backup patrol attachee.SetObjectFlag(ObjectFlag.OFF); } return(RunDefault); }
public override bool OnUse(GameObject door, GameObject triggerer) { if ((door.GetNameId() == 1622)) { if ((!GetGlobalFlag(532))) { SetGlobalFlag(534, true); return(SkipDefault); } // if doors to tunnels are locked, disable door portal, flag for attempt and fine else if ((GetGlobalFlag(532))) { if ((GetGlobalVar(548) <= 2)) { SetGlobalVar(548, GetGlobalVar(548) + 1); if ((GetGlobalVar(548) == 3)) { PartyLeader.AddReputation(68); SetGlobalVar(548, 4); } } return(RunDefault); } } return(RunDefault); }
public override bool OnDialog(GameObject attachee, GameObject triggerer) { attachee.TurnTowards(triggerer); if ((attachee.GetLeader() != null)) { triggerer.BeginDialog(attachee, 250); // pishella in party } else if ((attachee.GetMap() == 5014)) { triggerer.BeginDialog(attachee, 330); // WotGS Hommlet under attack } else if ((GetGlobalVar(911) == 32 && attachee.GetMap() != 5016 && attachee.GetMap() != 5019)) { triggerer.BeginDialog(attachee, 350); // have attacked 3 or more farm animals with pishella in party and not in castle main hall or parapet interior } else if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29))) { attachee.FloatLine(12014, triggerer); // have lawbreaker or convict or banished from hommlet reps } else if ((GetGlobalFlag(694))) { triggerer.BeginDialog(attachee, 400); // declined to share information on who is altering construction orders } else if ((PartyLeader.HasReputation(27))) { triggerer.BeginDialog(attachee, 180); // have rabble-rouser reputation } else { triggerer.BeginDialog(attachee, 1); // none of the above } return(SkipDefault); }