diff --git a/evennia/web/webclient/static/webclient/js/plugins/multimedia.js b/evennia/web/webclient/static/webclient/js/plugins/multimedia.js
new file mode 100644
index 0000000000..59cdc3a4c8
--- /dev/null
+++ b/evennia/web/webclient/static/webclient/js/plugins/multimedia.js
@@ -0,0 +1,53 @@
+/*
+ *
+ * Evennia Webclient multimedia outputs plugin
+ *
+ * in evennia python code:
+ *
+ * target.msg( image="URL" )
+ * target.msg( audio="URL" )
+ * target.msg( video="URL" )
+ *
+ */
+let multimedia_plugin = (function () {
+ //
+ var image = function (args, kwargs) {
+ var mwin = $("#messagewindow");
+ mwin.append("
");
+ mwin.scrollTop(mwin[0].scrollHeight);
+ }
+
+ var audio = function (args, kwargs) {
+ // create an HTML5 audio control (only .mp3 is fully compatible with all major browsers)
+ var mwin = $("#messagewindow");
+ mwin.append("");
+ mwin.scrollTop(mwin[0].scrollHeight);
+ }
+
+ var video = function (args, kwargs) {
+ // create an HTML5 video element (only h264 .mp4 is compatible with all major browsers)
+ var mwin = $("#messagewindow");
+ mwin.append("");
+ mwin.scrollTop(mwin[0].scrollHeight);
+ }
+
+ //
+ // Mandatory plugin init function
+ var init = function () {
+ Evennia = window.Evennia;
+ Evennia.emitter.on('image', image); // capture "image" commands
+ Evennia.emitter.on('audio', audio); // capture "audio" commands
+ Evennia.emitter.on('video', video); // capture "video" commands
+ console.log('Multimedia plugin initialized');
+ }
+
+ return {
+ init: init,
+ }
+})();
+plugin_handler.add('multimedia_plugin', multimedia_plugin);
+
diff --git a/evennia/web/webclient/templates/webclient/base.html b/evennia/web/webclient/templates/webclient/base.html
index fa16a152ee..399389f15e 100644
--- a/evennia/web/webclient/templates/webclient/base.html
+++ b/evennia/web/webclient/templates/webclient/base.html
@@ -93,6 +93,7 @@ JQuery available.
-->
+
{% endblock %}