wmortar() { wmortars = getentarray("wmortar", "targetname"); if (wmortars.size > 0) { level._effect["waterhit"] = loadfx ("fx/impacts/n_waterimpact.efx"); } for(i = 0; i < wmortars.size; i++) { wmortars[i] thread wmortar_think(); } } wmortar_think() { while (1) { self waittill ("trigger",other); if(isPlayer(other)) other thread wmortar_kill(self); } } wmortar_kill(trigger) { if(isDefined(self.flag)) return; self.flag = true; self playsound ("mortar_incoming"); wait(2); wait(randomFloat(.5)); if(self istouching(trigger)) { origin = self getorigin(); range = 300; maxdamage = 2000; mindamage = 50; self playsound ("explo_mine"); playfx ( level._effect["waterhit"], origin); radiusDamage(origin, range, maxdamage, mindamage); } self.flag = undefined; }