Exemple #1
0
    // find PCs near

    public static GameObject fpn(int name, bool living_only = true, bool multiple = false)
    {
        foreach (var pc in ObjList.ListVicinity(SelectedPartyLeader.GetLocation(), ObjectListFilter.OLC_PC))
        {
            if ((pc.GetNameId() == name && !multiple))
            {
                return(pc);
            }
            else if (name == -1 | multiple)
            {
                if (living_only && pc.IsUnconscious())
                {
                    continue;
                }

                if (pc.GetNameId() != name && multiple)
                {
                    continue;
                }

                var(xx, yy) = pc.GetLocation();
                Logger.Info("{0}", pc + ",      name ID = " + pc.GetNameId() + ",    x = " + xx + ",    y = " + yy);
                pc.FloatMesFileLine("mes/test.mes", xx, TextFloaterColor.Red);
                pc.FloatMesFileLine("mes/test.mes", yy, TextFloaterColor.Red);
                return(pc);
            }
        }

        return(null);
    }
Exemple #2
0
    // ------------------------------------------------------------------------------------------
    // @	@	@	@	@	@	@	@	@	@
    // ------------------------------------------------------------------------------------------

    public static GameObject s(int prot)
    {
        var(x, y) = SelectedPartyLeader.GetLocation();
        var a = spawn(prot, x, y + 1);

        return(a);
    }
    public override bool OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29)))
        {
            attachee.FloatLine(11004, triggerer);
        }
        else if ((GetGlobalFlag(61)))
        {
            triggerer.BeginDialog(attachee, 500);
        }
        else if ((attachee.GetLeader() != null))
        {
            triggerer.BeginDialog(attachee, 300);
        }
        else if ((GetGlobalFlag(51)))
        {
            if ((GetQuestState(18) == QuestState.Completed))
            {
                triggerer.BeginDialog(attachee, 220);
            }
            else
            {
                triggerer.BeginDialog(attachee, 210);
            }
        }
        else
        {
            triggerer.BeginDialog(attachee, 1);
        }

        return(SkipDefault);
    }
Exemple #4
0
    public override bool OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((GetGlobalFlag(819)))
        {
            attachee.Attack(triggerer);
            return(SkipDefault);
        }

        if ((attachee.GetLeader() != null))
        {
            triggerer.BeginDialog(attachee, 100); // spugnoir in party
        }
        else if ((GetGlobalVar(913) == 32))
        {
            triggerer.BeginDialog(attachee, 140); // have attacked 3 or more farm animals with spugnoir in party
        }
        else if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29)))
        {
            attachee.FloatLine(11004, triggerer); // have lawbreaker or convict or banished from hommlet rep
        }
        else
        {
            triggerer.BeginDialog(attachee, 1); // none of the above
        }

        return(SkipDefault);
    }
    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 OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29)))
        {
            attachee.FloatLine(11004, triggerer);
        }
        else
        {
            if ((attachee.GetMap() == 5007))
            {
                if ((GetQuestState(19) == QuestState.Unknown))
                {
                    triggerer.BeginDialog(attachee, 1);
                }
                else if ((GetQuestState(19) == QuestState.Mentioned))
                {
                    triggerer.BeginDialog(attachee, 40);
                }
                else if ((GetQuestState(19) == QuestState.Accepted || GetQuestState(19) == QuestState.Botched))
                {
                    triggerer.BeginDialog(attachee, 50);
                }
                else
                {
                    triggerer.BeginDialog(attachee, 60);
                }
            }
            else
            {
                triggerer.BeginDialog(attachee, 90);
            }
        }

        return(SkipDefault);
    }
Exemple #7
0
    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);
    }
Exemple #8
0
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Obscuring Mist OnSpellEffect");
        spell.duration = 100 * spell.casterLevel;
        locXY locc_;

        if (spell.caster.GetNameId() == 8002 && SelectedPartyLeader.GetMap() == 5005) // Lareth in Moathouse
        {
            locc_ = new locXY(483, 534);
        }
        else
        {
            locc_ = spell.aoeCenter.location;
        }

        // spawn one spell_object object
        var spell_obj = GameSystems.MapObject.CreateObject(OBJECT_SPELL_GENERIC, locc_);
        // add to d20initiative
        var caster_init_value = spell.caster.GetInitiative();

        spell_obj.InitD20Status();
        spell_obj.SetInitiative(caster_init_value);
        // put sp-Obscuring Mist condition on obj
        var spell_obj_partsys_id = AttachParticles("sp-Obscuring Mist", spell_obj);

        spell_obj.AddCondition("sp-Obscuring Mist", spell.spellId, spell.duration, 0, spell_obj_partsys_id);
        // Added by Sitra Achara	#
        spell_obj.SetInt(obj_f.secretdoor_dc, 333 + (1 << 15));
        // Mark it as an "obscuring mist" object.
        // 1<<15 - marks it as "active"
        // bits 16 and onward - random ID number

        Co8PersistentData.AddToSpellActiveList(OBSCURING_MIST_KEY, spell.spellId, spell_obj);
    }
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Power Word Kill OnSpellEffect");
        var target = spell.Targets[0];

        // If target has over 100 hit points, spell fails
        if (target.Object.GetStat(Stat.hp_current) > 100)
        {
            target.Object.FloatMesFileLine("mes/spell.mes", 32000);
            AttachParticles("Fizzle", target.Object);
        }
        else
        {
            // Otherwise, the target dies. Simple.
            // So you'll get awarded XP for the kill
            if (!((SelectedPartyLeader.GetPartyMembers()).Contains(target.Object)))
            {
                target.Object.Damage(SelectedPartyLeader, DamageType.Unspecified, Dice.Parse("1d1"));
            }

            target.Object.KillWithDeathEffect();
        }

        spell.RemoveTarget(target.Object);
        spell.EndSpell();
    }
Exemple #10
0
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Entangle OnSpellEffect");
        spell.duration = 10 * spell.casterLevel;
        var outdoor_map_list = new[] { 5001, 5002, 5009, 5042, 5043, 5051, 5062, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076, 5077, 5078, 5091, 5093, 5094, 5095, 5096, 5097, 5099, 5100, 5108, 5110, 5111, 5112, 5113, 5119, 5120, 5121, 5132, 5142, 5189 };

        if (outdoor_map_list.Contains(SelectedPartyLeader.GetMap()) || !Co8Settings.EntangleOutdoorsOnly)
        {
            // spawn one Entangle scenery object
            var entangle_obj = GameSystems.MapObject.CreateObject(OBJECT_SPELL_GENERIC, spell.aoeCenter);
            // add to d20initiative
            var caster_init_value = spell.caster.GetInitiative();
            entangle_obj.InitD20Status();
            entangle_obj.SetInitiative(caster_init_value);
            // put sp-Entangle condition on obj
            var entangle_partsys_id = AttachParticles("sp-Entangle-Area", entangle_obj);
            entangle_obj.AddCondition("sp-Entangle", spell.spellId, spell.duration, 0, entangle_partsys_id);
            // entangle_obj.condition_add_arg_x( 3, entangle_partsys_id )
            // objectevent_id = entangle_obj.condition_get_arg_x( 2 )
            // Added by Sitra Achara	#
            entangle_obj.SetInt(obj_f.secretdoor_dc, 153 + (1 << 15));
            // Mark it as an "obscuring mist" object.
            // 1<<15 - marks it as "active"
            // bits 16 and onward - random ID number
            Co8PersistentData.AddToSpellActiveList(ENTANGLE_KEY, spell.spellId, entangle_obj);
        }
        else
        {
            // End of Section	#
            // No plants to entangle with
            AttachParticles("Fizzle", spell.caster);
            spell.caster.FloatMesFileLine("mes/spell.mes", 30000);
            spell.caster.FloatMesFileLine("mes/spell.mes", 16014);
        }
    }
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Cloudkill OnSpellEffect");
        spell.duration = 10 * spell.casterLevel;
        // added so you'll get awarded XP for the kill
        foreach (var target_item in spell.Targets)
        {
            if (!((SelectedPartyLeader.GetPartyMembers()).Contains(target_item.Object)))
            {
                if ((target_item.Object.GetObjectFlags() & ObjectFlag.INVULNERABLE) == 0)
                {
                    target_item.Object.SetObjectFlag(ObjectFlag.INVULNERABLE);
                    target_item.Object.Damage(SelectedPartyLeader, DamageType.Unspecified, Dice.Parse("1d1"));
                    target_item.Object.ClearObjectFlag(ObjectFlag.INVULNERABLE);
                }
                else
                {
                    target_item.Object.Damage(SelectedPartyLeader, DamageType.Unspecified, Dice.Parse("1d1"));
                }
            }
        }

        // spawn one Cloudkill scenery object
        var cloudkill_obj = GameSystems.MapObject.CreateObject(OBJECT_SPELL_GENERIC, spell.aoeCenter);
        // add to d20initiative
        var caster_init_value = spell.caster.GetInitiative();

        cloudkill_obj.InitD20Status();
        cloudkill_obj.SetInitiative(caster_init_value);
        // put sp-cloudkill_obj condition on obj
        var cloudkill_obj_partsys_id = AttachParticles("sp-Cloudkill", cloudkill_obj);

        cloudkill_obj.AddCondition("sp-Cloudkill", spell.spellId, spell.duration, 0, cloudkill_obj_partsys_id);
    }
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Finger of Death OnSpellEffect");
        var damage_dice = Dice.Parse("3d6");

        damage_dice = damage_dice.WithModifier(Math.Min(25, spell.casterLevel));
        var target = spell.Targets[0];

        AttachParticles("sp-Slay Living", target.Object);
        // damage target
        if (target.Object.SavingThrowSpell(spell.dc, SavingThrowType.Fortitude, D20SavingThrowFlag.NONE, spell.caster, spell.spellId))
        {
            target.Object.FloatMesFileLine("mes/spell.mes", 30001);
            // saving throw succesful, damage target
            target.Object.DealSpellDamage(spell.caster, DamageType.Unspecified, damage_dice, D20AttackPower.UNSPECIFIED, D20ActionType.CAST_SPELL, spell.spellId);
        }
        else
        {
            target.Object.FloatMesFileLine("mes/spell.mes", 30002);
            // saving throw unsuccesful, kill target
            // So you'll get awarded XP for the kill
            if (!((SelectedPartyLeader.GetPartyMembers()).Contains(target.Object)))
            {
                target.Object.Damage(SelectedPartyLeader, DamageType.Unspecified, Dice.Parse("1d1"));
            }

            target.Object.KillWithDeathEffect();
        }

        spell.RemoveTarget(target.Object);
        spell.EndSpell();
    }
Exemple #13
0
    public override bool OnFirstHeartbeat(GameObject attachee, GameObject triggerer)
    {
        // Respawn
        if ((!GetGlobalFlag(912)))
        {
            StartTimer(604800000, () => respawn(attachee)); // 604800000ms is 1 week
            SetGlobalFlag(912, true);
        }

        // The 'evac' routine
        if (ScriptDaemon.get_f("boatmens_tavern_evac_on") && SelectedPartyLeader.GetMap() == 5052)
        {
            StartTimer(300, () => ScriptDaemon.set_f("boatmens_tavern_evac_on", false));
            if (attachee.GetNameId() == 14133 && !ScriptDaemon.get_f("lodriss_killed_outside")) // For Lodriss
            {
                attachee.ClearObjectFlag(ObjectFlag.OFF);
            }
            else
            {
                // else : # For the others
                attachee.ClearObjectFlag(ObjectFlag.OFF);
            }
        }

        // game.new_sid = 0
        if (attachee.GetNameId() == 14152 && SelectedPartyLeader.GetMap() == 5051) // Tolub, outside
        {
            attachee.ClearObjectFlag(ObjectFlag.OFF);
        }

        return(RunDefault);
    }
Exemple #14
0
    public override bool OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29)))
        {
            attachee.FloatLine(11002, triggerer);
        }
        else
        {
            if ((triggerer.GetStat(Stat.charisma) >= 8 && triggerer.GetGender() == Gender.Female))
            {
                if ((attachee.HasMet(triggerer)))
                {
                    triggerer.BeginDialog(attachee, 70);
                }
                else
                {
                    triggerer.BeginDialog(attachee, 1);
                }
            }
            else
            {
                triggerer.BeginDialog(attachee, 80);
            }
        }

        return(SkipDefault);
    }
Exemple #15
0
    public override void OnSpellEffect(SpellPacketBody spell)
    {
        Logger.Info("Produce Flame OnSpellEffect");
        var(xx, yy) = spell.caster.GetLocation();
        if (SelectedPartyLeader.GetMap() == 5067 && (xx >= 521 && xx <= 555) && (yy >= 560 && yy <= 610))
        {
            // Water Temple Pool Enchantment prevents fire spells from working inside the chamber, according to the module -SA
            AttachParticles("swirled gas", spell.caster);
            spell.caster.FloatMesFileLine("mes/skill_ui.mes", 2000, TextFloaterColor.Red);
            Sound(7581, 1);
            Sound(7581, 1);
        }
        else
        {
            spell.duration = 10 * spell.casterLevel;
            if (spell.casterLevel > 5)
            {
                spell.casterLevel = 5;
            }

            var target = spell.Targets[0];
            target.Object.AddCondition("sp-Produce Flame", spell.spellId, spell.duration, 0);
            target.ParticleSystem = AttachParticles("sp-Produce Flame", target.Object);
        }
    }
Exemple #16
0
    public override bool OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29)))
        {
            attachee.FloatLine(11004, triggerer);
        }
        else
        {
            if ((attachee.GetLeader() != null))
            {
                if ((GetGlobalFlag(207)))
                {
                    triggerer.BeginDialog(attachee, 80);
                }
                else
                {
                    triggerer.BeginDialog(attachee, 100);
                }
            }
            else if ((GetGlobalFlag(207)))
            {
                triggerer.BeginDialog(attachee, 50);
            }
            else if ((attachee.HasMet(triggerer)))
            {
                triggerer.BeginDialog(attachee, 30);
            }
            else
            {
                triggerer.BeginDialog(attachee, 1);
            }
        }

        return(SkipDefault);
    }
    public override bool OnDialog(GameObject attachee, GameObject triggerer)
    {
        if ((attachee.GetMap() == 5001 && (SelectedPartyLeader.HasReputation(32) || SelectedPartyLeader.HasReputation(30) || SelectedPartyLeader.HasReputation(29))))
        {
            attachee.FloatLine(11004, triggerer);
        }
        else
        {
            if ((!attachee.HasMet(triggerer)))
            {
                if ((!GetGlobalFlag(169)))
                {
                    triggerer.BeginDialog(attachee, 1);
                }
                else
                {
                    triggerer.BeginDialog(attachee, 40);
                }
            }
            else if ((GetGlobalFlag(169)))
            {
                triggerer.BeginDialog(attachee, 100);
            }
            else if ((GetGlobalFlag(170)))
            {
                triggerer.BeginDialog(attachee, 110);
            }
            else
            {
                triggerer.BeginDialog(attachee, 120);
            }
        }

        return(SkipDefault);
    }
    public static bool join_temple(string temple_name_input)
    {
        var temple_name = temple_name_input.ToString();

        if (temple_name == "water")
        {
            SetGlobalFlag(112, true);               // Oohlgrist has joined water temple
            if ((ScriptDaemon.get_v(454) & 2) == 2) // Water has already regrouped
            {
                ScriptDaemon.set_v(454, ScriptDaemon.get_v(454) | 0x40);
            }
        }
        else if (temple_name == "fire")
        {
            SetGlobalFlag(118, true);                   // Oohlgrist has joined fire temple
            if ((ScriptDaemon.get_v(454) & 0x8) == 0x8) // Fire has already regrouped
            {
                ScriptDaemon.set_v(454, ScriptDaemon.get_v(454) | 0x10);
            }
        }
        else
        {
            SelectedPartyLeader.Damage(null, DamageType.Subdual, Dice.Parse("500d1"));
            SelectedPartyLeader.FloatMesFileLine("mes/skill_ui.mes", 155);
        }

        return(SkipDefault);
    }
Exemple #19
0
    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);
        }
    }
Exemple #20
0
    public override bool OnHeartbeat(GameObject attachee, GameObject triggerer)
    {
        var c_time = Council.council_time();

        if ((attachee.GetMap() == 5048 && ScriptDaemon.get_v(435) != 0 && c_time == 1))
        {
            // Townhall
            if (ScriptDaemon.get_v(435) == 1)
            {
                ScriptDaemon.set_v(435, 3);
                Council_Script(attachee, triggerer);
            }
        }

        if ((attachee.GetMap() == 5048))
        {
            // Townhall
            if ((ScriptDaemon.get_v(436) == 3 && ScriptDaemon.get_v(435) < 4))
            {
                // you've found the trap, initiate dialogue with rufus to GTFO
                foreach (var npc in ObjList.ListVicinity(attachee.GetLocation(), ObjectListFilter.OLC_NPC))
                {
                    if ((npc.GetNameId() == 8071))
                    {
                        SelectedPartyLeader.BeginDialog(npc, 2000);
                    }
                }
            }
        }

        return(RunDefault);
    }
Exemple #21
0
    public override bool OnHeartbeat(GameObject attachee, GameObject triggerer)
    {
        if ((GetGlobalVar(765) == 1 || GetGlobalVar(765) == 2 || GetGlobalFlag(283)))
        {
            attachee.SetObjectFlag(ObjectFlag.OFF);
            return(SkipDefault);
        }
        else if (((attachee.GetMap() == 5002) && (GetGlobalVar(765) == 0) && (PartyAlignment != Alignment.LAWFUL_EVIL) && (GetGlobalFlag(977)) && (GetGlobalVar(710) == 3)) && !Co8Settings.DisableNewPlots && ((GetGlobalVar(450) & (1 << 11)) == 0))
        {
            if (!SelectedPartyLeader.GetPartyMembers().Any(o => o.HasFollowerByName(8002)) && !SelectedPartyLeader.GetPartyMembers().Any(o => o.HasFollowerByName(8004)) && !SelectedPartyLeader.GetPartyMembers().Any(o => o.HasFollowerByName(8005)) && !SelectedPartyLeader.GetPartyMembers().Any(o => o.HasFollowerByName(8010)))
            {
                if (((!GetGlobalFlag(44)) && (!GetGlobalFlag(45)) && (!GetGlobalFlag(700)) && (GetGlobalFlag(37)) && (!GetGlobalFlag(283))))
                {
                    attachee.ClearObjectFlag(ObjectFlag.OFF);
                    if ((!GameSystems.Combat.IsCombatActive()))
                    {
                        if ((is_better_to_talk(attachee, PartyLeader)))
                        {
                            StartTimer(2000, () => start_talking(attachee, triggerer));
                            DetachScript();
                        }
                    }
                }
            }
        }

        return(RunDefault);
    }
Exemple #22
0
    public static GameObject bsp(int prot)
    {
        var a = GameSystems.MapObject.CreateObject(prot, SelectedPartyLeader.GetLocation());

        a.ClearNpcFlag(NpcFlag.KOS);
        a.Move(SelectedPartyLeader.GetLocation(), 0, 0);
        return(a);
    }
Exemple #23
0
    public override bool OnNewMap(GameObject attachee, GameObject triggerer)
    {
        if ((GetGlobalFlag(195)))
        {
            SelectedPartyLeader.BeginDialog(attachee, 480);
        }

        return(SkipDefault);
    }
Exemple #24
0
    public static bool equip_transfer2(GameObject attachee, GameObject triggerer)
    {
        if (SelectedPartyLeader.GetPartyMembers().Any(o => o.HasItemByName(2201)))
        {
            Utilities.party_transfer_to(attachee, 2201);
        }

        return(RunDefault);
    }
Exemple #25
0
    public override bool OnNewMap(GameObject attachee, GameObject triggerer)
    {
        if ((attachee.GetStat(Stat.level_fighter) >= 8))
        {
            SelectedPartyLeader.BeginDialog(attachee, 230);
        }

        return(SkipDefault);
    }
    public override bool OnDying(GameObject attachee, GameObject triggerer)
    {
        SetGlobalVar(28, GetGlobalVar(28) + 1);
        if ((GetGlobalVar(28) >= 5))
        {
            GameSystems.MapObject.CreateObject(14330, SelectedPartyLeader.GetLocation());
        }

        return(RunDefault);
    }
Exemple #27
0
 public static void killkos()
 {
     foreach (var moshe in ObjList.ListVicinity(SelectedPartyLeader.GetLocation(), ObjectListFilter.OLC_NPC))
     {
         if (((moshe.GetNpcFlags() & NpcFlag.KOS) != 0 && (moshe.GetNpcFlags() & NpcFlag.KOS_OVERRIDE) == 0 && moshe.GetScriptId(ObjScriptEvent.WillKos) == 0 && moshe.GetLeader() == null))
         {
             var damage_dice = Dice.Parse("50d50");
             moshe.Damage(PartyLeader, DamageType.Bludgeoning, damage_dice);
         }
     }
 }
Exemple #28
0
    public static void give_a_ton()
    {
        foreach (var obj in SelectedPartyLeader.GetPartyMembers())
        {
            var curxp = obj.GetStat(Stat.experience);
            var newxp = curxp + 100;
            obj.SetBaseStat(Stat.experience, newxp);
            obj.FloatMesFileLine("mes/narrative.mes", 1010);
        }

        return;
    }
Exemple #29
0
    public static bool party_too_far_from_lareth(GameObject lareth)
    {
        foreach (var pc in SelectedPartyLeader.GetPartyMembers())
        {
            if (pc.GetLocation().locx <= 495 || lareth.DistanceToInFeetClamped(pc) <= 42)
            {
                return(false);
            }
        }

        return(true);
    }
    public static void run_off(GameObject npc, GameObject pc)
    {
        foreach (var obj in ObjList.ListVicinity(npc.GetLocation(), ObjectListFilter.OLC_NPC))
        {
            if ((obj.GetLeader() == null && !((SelectedPartyLeader.GetPartyMembers()).Contains(obj))))
            {
                obj.RunOff();
            }
        }

        return;
    }