// Function from file: flashbang.dm
        public void bang(dynamic T = null, Mob_Living M = null)
        {
            bool ear_safety = false;
            int  distance   = 0;

            M.show_message("<span class='warning'>BANG</span>", 2);
            GlobalFuncs.playsound(this.loc, "sound/weapons/flashbang.ogg", 100, 1);
            ear_safety = M.check_ear_prot();
            distance   = Num13.MaxInt(1, Map13.GetDistance(this, T));

            if (M.weakeyes)
            {
                M.visible_message("<span class='disarm'><b>" + M + "</b> screams and collapses!</span>");
                M.WriteMsg("<span class='userdanger'><font size=3>AAAAGH!</font></span>");
                M.Weaken(15);
                M.Stun(15);
                M.adjust_eye_damage(8);
            }

            if (M.flash_eyes(null, null, true))
            {
                M.Stun(Num13.MaxInt(((int)(10 / distance)), 3));
                M.Weaken(Num13.MaxInt(((int)(10 / distance)), 3));
            }

            if (this.loc == M || this.loc == M.loc)
            {
                M.Stun(10);
                M.Weaken(10);
            }

            if (!ear_safety)
            {
                M.WriteMsg(new Sound("sound/weapons/flash_ring.ogg", false, true, 0, 100));
                M.Stun(Num13.MaxInt(((int)(10 / distance)), 3));
                M.Weaken(Num13.MaxInt(((int)(10 / distance)), 3));
                M.setEarDamage(M.ear_damage + Rand13.Int(0, 5), Num13.MaxInt(((int)(M.ear_deaf ?? 0)), 15));

                if (M.ear_damage >= 15)
                {
                    M.WriteMsg("<span class='warning'>Your ears start to ring badly!</span>");

                    if (Rand13.PercentChance(M.ear_damage - 10 + 5))
                    {
                        M.WriteMsg("<span class='warning'>You can't hear anything!</span>");
                        M.disabilities |= 4;
                    }
                }
                else if (M.ear_damage >= 5)
                {
                    M.WriteMsg("<span class='warning'>Your ears start to ring!</span>");
                }
            }
            return;
        }
示例#2
0
        // Function from file: flasher.dm
        public bool flash(  )
        {
            Mob_Living L = null;


            if (!Lang13.Bool(this.powered()) || !Lang13.Bool(this.bulb))
            {
                return(false);
            }

            if (this.bulb.crit_fail || this.last_flash != 0 && Game13.time < this.last_flash + 150)
            {
                return(false);
            }

            if (!((Obj_Item_Device_Assembly_Flash)this.bulb).flash_recharge(30))
            {
                this.power_change();
                return(false);
            }
            this.bulb.times_used++;
            GlobalFuncs.playsound(this.loc, "sound/weapons/flash.ogg", 100, 1);
            Icon13.Flick("" + this.base_state + "_flash", this);
            this.last_flash = Game13.time;
            this.f_use_power(1000);

            foreach (dynamic _a in Lang13.Enumerate(Map13.FetchViewers(null, this), typeof(Mob_Living)))
            {
                L = _a;


                if (Map13.GetDistance(this, L) > this.range)
                {
                    continue;
                }

                if (L.flash_eyes(null, null, true))
                {
                    L.Weaken(this.strength);

                    if (L.weakeyes)
                    {
                        L.Weaken(this.strength * 1.5);
                        L.visible_message("<span class='disarm'><b>" + L + "</b> gasps and shields their eyes!</span>");
                    }
                }
            }
            return(true);
        }