/** * Cause a general explosion in the world */ public static void explode(GameObject inflictor, GameObject attacker, NativeEntity ent, int damage, float radius) { int effect; Point3f explodeOrigin = ent.getOrigin(); if ((Engine.getPointContents(explodeOrigin) & Engine.MASK_WATER) == 0) { if (ent.getGroundEntity() != null) effect = Engine.TE_GRENADE_EXPLOSION; else effect = Engine.TE_ROCKET_EXPLOSION; } else { if (ent.getGroundEntity() != null) effect = Engine.TE_GRENADE_EXPLOSION_WATER; else effect = Engine.TE_ROCKET_EXPLOSION_WATER; } MiscUtil.radiusDamage(inflictor, attacker, damage, ent, radius, "g_splash"); Engine.writeByte(Engine.SVC_TEMP_ENTITY); Engine.writeByte(effect); Engine.writePosition(explodeOrigin); Engine.multicast(explodeOrigin, Engine.MULTICAST_PHS); }