示例#1
0
        public void smite(  )
        {
            bool       has_smitten = false;
            Mob_Living L           = null;


            if (!this.ability_cost(40, false, true))
            {
                return;
            }

            if (!(Map13.FetchInRange(this.god_nexus, 7) != null))
            {
                this.WriteMsg("You lack the strength to smite this far from your nexus.");
                return;
            }
            has_smitten = false;

            foreach (dynamic _a in Lang13.Enumerate(GlobalFuncs.get_turf(this), typeof(Mob_Living)))
            {
                L = _a;

                L.adjustFireLoss(20);
                L.adjustBruteLoss(20);
                L.WriteMsg("<span class='danger'><B>You feel the wrath of " + this.name + "!<B></span>");
                has_smitten = true;
            }

            if (has_smitten)
            {
                this.add_faith(-40);
            }
            return;
        }
示例#2
0
        // Function from file: armor.dm
        public override bool hit_reaction(Mob_Living_Carbon owner = null, string attack_text = null, int?final_block_chance = null, dynamic damage = null, int?attack_type = null)
        {
            Mob_Living M = null;


            if (!this.active)
            {
                return(false);
            }

            if (Rand13.PercentChance(this.hit_reaction_chance))
            {
                owner.visible_message("<span class='danger'>The " + this + " blocks the " + attack_text + ", sending out arcs of lightning!</span>");

                foreach (dynamic _a in Lang13.Enumerate(Map13.FetchInView(owner, 6), typeof(Mob_Living)))
                {
                    M = _a;


                    if (M == owner)
                    {
                        continue;
                    }
                    owner.Beam(M, "lightning" + Rand13.Int(1, 12), "icons/effects/effects.dmi", 5);
                    M.adjustFireLoss(25);
                    GlobalFuncs.playsound(M, "sound/machines/defib_zap.ogg", 50, 1, -1);
                }
                return(true);
            }
            return(false);
        }
示例#3
0
        // Function from file: weather_types.dm
        public override void storm_act(Mob_Living L = null)
        {
            Mob_Living H = null;
            double     thermal_protection = 0;


            if (L is Mob_Living_Carbon_Human)
            {
                H = L;
                thermal_protection = ((Mob_Living_Carbon_Human)H).get_thermal_protection();

                if (thermal_protection >= 35000)
                {
                    return;
                }
            }
            L.adjustFireLoss(4);
            return;
        }
示例#4
0
        // Function from file: weather_types.dm
        public override void storm_act(Mob_Living L = null)
        {
            dynamic       F = null;
            Obj_Structure O = null;

            F = GlobalFuncs.get_turf(L);

            foreach (dynamic _a in Lang13.Enumerate(F.contents, typeof(Obj_Structure)))
            {
                O = _a;


                if ((O.level ?? 0) > Convert.ToDouble(F.level) && !(O is Obj_Structure_Window))
                {
                    return;
                }
            }
            L.adjustFireLoss(3);
            return;
        }
示例#5
0
        // Function from file: statue.dm
        public override int?process(dynamic seconds = null)
        {
            Mob_Living M = null;

            this.timer--;

            foreach (dynamic _a in Lang13.Enumerate(this, typeof(Mob_Living)))
            {
                M = _a;

                M.setToxLoss(this.intialTox);
                M.adjustFireLoss(this.intialFire - M.getFireLoss());
                M.adjustBruteLoss(this.intialBrute - M.getBruteLoss());
                M.setOxyLoss(this.intialOxy);
            }

            if (this.timer <= 0)
            {
                this.dump_contents();
                GlobalVars.SSobj.processing.Remove(this);
                GlobalFuncs.qdel(this);
            }
            return(null);
        }
示例#6
0
        // Function from file: inflict_handler.dm
        public override bool cast(dynamic targets = null, dynamic thearea = null, dynamic user = null)
        {
            thearea = thearea ?? Task13.User;

            Mob_Living target   = null;
            Mob_Living C_target = null;
            dynamic    B        = null;


            foreach (dynamic _b in Lang13.Enumerate(targets, typeof(Mob_Living)))
            {
                target = _b;

                GlobalFuncs.playsound(target, this.sound, 50, 1);

                switch ((string)(this.destroys))
                {
                case "gib":
                    target.gib();
                    break;

                case "gib_brain":

                    if (target is Mob_Living_Carbon_Human || target is Mob_Living_Carbon_Monkey)
                    {
                        C_target = target;
                        B        = C_target.getorgan(typeof(Obj_Item_Organ_Internal_Brain));

                        if (Lang13.Bool(B))
                        {
                            B.loc = GlobalFuncs.get_turf(C_target);
                            B.transfer_identity(C_target);
                            ((dynamic)C_target).internal_organs -= B;
                        }
                    }
                    target.gib();
                    break;

                case "disintegrate":
                    target.dust();
                    break;
                }

                if (!(target != null))
                {
                    continue;
                }
                target.adjustBruteLoss(this.amt_dam_brute);
                target.adjustFireLoss(this.amt_dam_fire);
                target.adjustToxLoss(this.amt_dam_tox);
                target.adjustOxyLoss(this.amt_dam_oxy);
                target.Weaken(this.amt_weakened);
                target.Paralyse(this.amt_paralysis);
                target.Stun(this.amt_stunned);
                target.blind_eyes(this.amt_eye_blind);
                target.blur_eyes(this.amt_eye_blurry);

                if (Lang13.Bool(this.summon_type))
                {
                    Lang13.Call(this.summon_type, target.loc, target);
                }
            }
            return(false);
        }