// 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; }
// 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); }