{"id":28929,"date":"2026-01-06T17:00:05","date_gmt":"2026-01-06T22:00:05","guid":{"rendered":""},"modified":"2026-04-08T05:00:07","modified_gmt":"2026-04-08T09:00:07","slug":"horace-willoughby","status":"publish","type":"page","link":"https:\/\/havenrpg.net\/newsite\/characters\/horace-willoughby\/","title":{"rendered":"Horace Willoughby"},"content":{"rendered":"\n<!-- Character Page HTML for WordPress -->\n<style>\n    \/* Full page background *\/\n    .rpg-background-overlay {\n        position: fixed;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 100%;\n        z-index: -1;\n        background-image: url('');\n        background-size: cover;\n        background-position: center;\n        background-attachment: fixed;\n        background-repeat: no-repeat;\n    }\n    \n    \/* Character page wrapper - transparent, just for positioning *\/\n    .rpg-character-page {\n        position: relative;\n        width: 100%;\n        margin-top: -180px;\n        margin-bottom: -180px;\n        padding: 90px 0;\n        background: transparent;\n    }\n    \n    \/* The black semi-transparent container - only this has the black background *\/\n    .rpg-character-inner {\n        max-width: 1200px;\n        margin: 0 auto;\n        background-color: rgba(0, 0, 0, 0.8);\n        box-shadow: 0 0 50px rgba(0, 0, 0, 0.8);\n    }\n    \n    .rpg-character-container {\n        padding: 40px;\n        position: relative;\n    }\n    \n    \/* Header styling *\/\n    .rpg-header {\n        text-align: center;\n        margin-bottom: 30px;\n        color: white;\n    }\n    \n    .rpg-character-name {\n        font-size: 48px;\n        font-weight: 300;\n        letter-spacing: 3px;\n        margin-bottom: 10px;\n        font-family: 'Georgia', serif;\n        text-transform: uppercase;\n        text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);\n        color: white;\n    }\n    \n    .rpg-follower-count {\n        font-size: 18px;\n        color: #ccc;\n        margin-bottom: 30px;\n    }\n    \n    .rpg-follower-count span {\n        color: #ff6b6b;\n        font-weight: bold;\n    }\n    \n    \/* Content section *\/\n    .rpg-content-section {\n        display: flex;\n        gap: 40px;\n        margin-bottom: 40px;\n        align-items: flex-start;\n    }\n    \n    \/* Image carousel *\/\n    .rpg-image-carousel-container {\n        flex: 0 0 400px;\n        position: relative;\n    }\n    \n    .rpg-faction-society {\n        margin-top: 20px;\n        padding: 15px;\n        background: rgba(0, 0, 0, 0.5);\n        border-radius: 10px;\n        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);\n    }\n    \n    .rpg-faction-society p {\n        margin-bottom: 10px;\n        color: #ddd;\n        font-size: 15px;\n    }\n    \n    .rpg-faction-society p:last-child {\n        margin-bottom: 0;\n    }\n    \n    .rpg-faction-society strong {\n        color: white;\n        font-weight: 600;\n    }\n    \n    .rpg-faction-society a {\n        color: #ff6b6b;\n        text-decoration: none;\n        transition: color 0.3s;\n    }\n    \n    .rpg-faction-society a:hover {\n        color: #ff9999;\n        text-decoration: underline;\n    }\n    \n    .rpg-image-carousel {\n        position: relative;\n        width: 100%;\n        height: 600px;\n        overflow: hidden;\n        border-radius: 10px;\n        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n        background: #000;\n    }\n    \n    .rpg-carousel-image {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n        opacity: 0;\n        transition: opacity 0.5s ease-in-out;\n    }\n    \n    .rpg-carousel-image.active {\n        opacity: 1;\n    }\n    \n    .rpg-carousel-controls {\n        position: absolute;\n        bottom: 20px;\n        left: 50%;\n        transform: translateX(-50%);\n        display: flex;\n        gap: 10px;\n        z-index: 10;\n    }\n    \n    .rpg-carousel-dot {\n        width: 12px;\n        height: 12px;\n        border-radius: 50%;\n        background-color: rgba(255, 255, 255, 0.5);\n        cursor: pointer;\n        transition: background-color 0.3s;\n        border: none;\n        padding: 0;\n    }\n    \n    .rpg-carousel-dot.active {\n        background-color: white;\n    }\n    \n    .rpg-carousel-nav {\n        position: absolute;\n        top: 50%;\n        transform: translateY(-50%);\n        background-color: rgba(0, 0, 0, 0.5);\n        color: white;\n        border: none;\n        padding: 10px 15px;\n        cursor: pointer;\n        font-size: 24px;\n        transition: background-color 0.3s;\n        z-index: 10;\n        line-height: 1;\n    }\n    \n    .rpg-carousel-nav:hover {\n        background-color: rgba(0, 0, 0, 0.8);\n    }\n    \n    .rpg-prev {\n        left: 10px;\n    }\n    \n    .rpg-next {\n        right: 10px;\n    }\n    \n    \/* Text blurb with tabs *\/\n    .rpg-text-blurb {\n        flex: 1;\n        color: #ddd;\n        line-height: 1.8;\n        font-size: 16px;\n    }\n    \n    .rpg-text-blurb h3 {\n        color: white;\n        margin-bottom: 20px;\n        font-size: 28px;\n        font-weight: 300;\n        letter-spacing: 1px;\n    }\n    \n    .rpg-text-blurb p {\n        margin-bottom: 15px;\n        color: #ddd;\n    }\n    \n    .rpg-text-blurb a {\n        color: #ff6b6b;\n        text-decoration: none;\n        transition: color 0.3s;\n    }\n    \n    .rpg-text-blurb a:hover {\n        color: #ff9999;\n        text-decoration: underline;\n    }\n    \n    .rpg-text-blurb strong {\n        color: white;\n    }\n    \n    \/* Tab styles *\/\n    .rpg-tabs {\n        width: 100%;\n    }\n    \n    .rpg-tab-buttons {\n        display: flex;\n        border-bottom: 2px solid #444;\n        margin-bottom: 20px;\n        gap: 10px;\n    }\n    \n    .rpg-tab-button {\n        background: transparent;\n        border: none;\n        color: #999;\n        padding: 12px 24px;\n        font-size: 16px;\n        cursor: pointer;\n        position: relative;\n        transition: color 0.3s;\n        font-weight: 300;\n        letter-spacing: 0.5px;\n    }\n    \n    .rpg-tab-button:hover {\n        color: #ccc;\n    }\n    \n    .rpg-tab-button.active {\n        color: white;\n    }\n    \n    .rpg-tab-button.active::after {\n        content: '';\n        position: absolute;\n        bottom: -2px;\n        left: 0;\n        right: 0;\n        height: 2px;\n        background: #ff6b6b;\n    }\n    \n    .rpg-tab-content {\n        display: none;\n        animation: fadeIn 0.3s;\n    }\n    \n    .rpg-tab-content.active {\n        display: block;\n    }\n    \n    .rpg-tab-content.profile-tab {\n        text-align: justify;\n    }\n    \n    .rpg-tab-content.photo-tab {\n        font-family: 'Courier New', Courier, monospace;\n        font-size: 12px;\n        line-height: 1.4;\n        white-space: pre;\n        overflow-x: auto;\n        background: rgba(0, 0, 0, 0.3);\n        padding: 20px;\n        border-radius: 5px;\n        color: #ddd;\n    }\n    \n    @keyframes fadeIn {\n        from { opacity: 0; }\n        to { opacity: 1; }\n    }\n    \n    \/* Video carousel *\/\n    .rpg-video-section {\n        margin-top: 40px;\n    }\n    \n    .rpg-video-section h3 {\n        color: white;\n        text-align: center;\n        margin-bottom: 30px;\n        font-size: 28px;\n        font-weight: 300;\n        letter-spacing: 1px;\n    }\n    \n    .rpg-video-carousel {\n        position: relative;\n        width: 100%;\n        height: 500px;\n        overflow: hidden;\n        border-radius: 10px;\n        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);\n        background: #000;\n    }\n    \n    .rpg-video-item {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n        opacity: 0;\n        transition: opacity 0.5s ease-in-out;\n        pointer-events: none;\n    }\n    \n    .rpg-video-item.active {\n        opacity: 1;\n        pointer-events: auto;\n    }\n    \n    .rpg-video-placeholder {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        height: 100%;\n        color: #666;\n        font-size: 18px;\n    }\n    \n    .rpg-video-item iframe {\n        width: 100%;\n        height: 100%;\n        border: none;\n        border-radius: 10px;\n    }\n    \n    \/* Force visibility for our iframes *\/\n    .rpg-protected-iframe {\n        display: block !important;\n        visibility: visible !important;\n        opacity: 1 !important;\n    }\n    \n    \/* Responsive *\/\n    @media (max-width: 1300px) {\n        .rpg-character-inner {\n            margin: 0 20px;\n        }\n    }\n    \n    @media (max-width: 768px) {\n        .rpg-character-container {\n            padding: 20px;\n        }\n        \n        .rpg-content-section {\n            flex-direction: column;\n        }\n        \n        .rpg-image-carousel-container {\n            flex: 1;\n            width: 100%;\n            max-width: 100%;\n        }\n        \n        .rpg-character-name {\n            font-size: 36px;\n        }\n        \n        .rpg-image-carousel {\n            height: 400px;\n        }\n        \n        .rpg-video-carousel {\n            height: 300px;\n        }\n        \n        .rpg-character-inner {\n            margin: 0 10px;\n        }\n        \n        .rpg-tab-button {\n            padding: 10px 16px;\n            font-size: 14px;\n        }\n        \n        .rpg-tab-content.photo-tab {\n            font-size: 10px;\n            padding: 10px;\n        }\n        \n        .rpg-faction-society {\n            margin-bottom: 20px;\n        }\n    }\n<\/style>\n\n<!-- Background image element -->\n<div class=\"rpg-background-overlay\"><\/div>\n\n<!-- Main content -->\n<div class=\"rpg-character-page\">\n    <div class=\"rpg-character-inner\">\n        <div class=\"rpg-character-container\">\n            <div class=\"rpg-header\">\n                <h1 class=\"rpg-character-name\">Horace Willoughby<\/h1>\n                <div class=\"rpg-follower-count\">@<span style=\"color:#3387ff\">D<span style=\"color:#3f89f3\">e<span style=\"color:#4b8ae7\">l<span style=\"color:#578cdb\">i<span style=\"color:#638ecf\">v<span style=\"color:#6f90c3\">e<span style=\"color:#7b91b7\">r<span style=\"color:#8793ab\">y<span style=\"color:#93959f\">C<span style=\"color:#9f9693\">o<span style=\"color:#ab9887\">n<span style=\"color:#b79a7b\">s<span style=\"color:#c39b6f\">u<span style=\"color:#cf9d63\">l<span style=\"color:#db9f57\">t<span style=\"color:#e7a14b\">a<span style=\"color:#f3a23f\">n<span style=\"color:#ffa433\">t<span style=\"color:#c0c0c0\"><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span> | Followers: <span>98<\/span><\/div>\n            <\/div>\n            \n            <div class=\"rpg-content-section\">\n                <div class=\"rpg-image-carousel-container\">\n                    <div class=\"rpg-image-carousel\" id=\"rpgImageCarousel\">\n                        <img decoding=\"async\" src=\"https:\/\/cdn.imgpile.com\/f\/XsHKvaE_xl.png\" class=\"rpg-carousel-image active\" alt=\"Character 1\">\n                        \n                        <button class=\"rpg-carousel-nav rpg-prev\" id=\"rpgPrevImage\">\u2039<\/button>\n                        <button class=\"rpg-carousel-nav rpg-next\" id=\"rpgNextImage\">\u203a<\/button>\n                        \n                        <div class=\"rpg-carousel-controls\">\n                            <button class=\"rpg-carousel-dot active\" data-index=\"0\"><\/button>\n                        <\/div>\n                    <\/div>\n                    \n                    \n                <\/div>\n                \n                <div class=\"rpg-text-blurb\">\n                    <div class=\"rpg-tabs\">\n                        <div class=\"rpg-tab-buttons\">\n                            <button class=\"rpg-tab-button active\" data-tab=\"profile\">Profile<\/button>\n                            <button class=\"rpg-tab-button\" data-tab=\"photo\">Photo<\/button>\n                        <\/div>\n                        \n                        <div id=\"profile\" class=\"rpg-tab-content profile-tab active\">\n                            <h3>About Me<\/h3>\n                            <p>Not much to know. I am a truck driver who frequently makes deliveries to New Haven. If you need to get something in and out of the city, let me know.<\/p>\n                            <p>I am a Senior Logistics Consultant for <span style=\"color:#3389ff\">A<span style=\"color:#3b8cf8\">n<span style=\"color:#438ff1\">d<span style=\"color:#4b92ea\">e<span style=\"color:#5495e3\">r<span style=\"color:#5c98dc\">s<span style=\"color:#649bd5\">o<span style=\"color:#6c9ece\">n<span style=\"color:#74a1c7\"> &amp;<span style=\"color:#85a7b9\"> <span style=\"color:#8daab2\">D<span style=\"color:#9dafa3\">ow<span style=\"color:#a5b29c\">n<span style=\"color:#adb595\">s<span style=\"color:#b6b88e\"> <span style=\"color:#bebb87\">L<span style=\"color:#c6be80\">o<span style=\"color:#cec179\">g<span style=\"color:#d6c472\">i<span style=\"color:#dec76b\">s<span style=\"color:#e7ca64\">t<span style=\"color:#efcd5d\">i<span style=\"color:#f7d056\">c<span style=\"color:#ffd34f\">s<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n                            <p>When time is critical and discretion is non-negotiable, Anderson &amp; Downs Logistics moves what others cannot. From sensitive materials to complex acquisitions, our team specializes in secure retrieval, confidential transport, and problem resolution in environments where ordinary services simply do not operate. We pride ourselves on precision planning, quiet efficiency, and results that arrive exactly when and where they are needed.<\/p>\n                            <p>For service engagement questions, contact me at <span style=\"color:#af00ff\">710-0832<\/span><\/p>\n                            \n                            <h3>Quote<\/h3>\n                            <p>&#8220;Two roads diverged in a wood, and I \/ I took the one less traveled by, \/ And that has made all the difference&#8221; &#8211; Robert Frost<\/p>\n                            \n                            <h3>Joke<\/h3>\n                            <p>What do you get when you cross a centipede with a parrot? A Walkie Talkie  <\/p>\n                        <\/div>\n                        \n                        <div id=\"photo\" class=\"rpg-tab-content photo-tab\"><span style=\"color:#008080\"> _____________________________________________________________________________\n<\/span><span style=\"color:#008080\">| <\/span>self                                                                        <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>This <span style=\"color:#870000\">brute<\/span> is a tall, broad-shouldered man with a scarred frame in his      <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>mid-thirties.                                                               <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>He is 6&#8217;2&#8243; and has weathered ruddy skin, gray hair, and green eyes.         <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>You can see his face, neck, and hands.                                      <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>A big man, scarred and broad at the shoulders, with hands like broken stone <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>and a jaw full of gray stubble. His stance is coiled and ready, and his     <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>pale green eyes don&#8217;t stop moving.                                          <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>Once <span style=\"color:#8c3c00\">d<span style=\"color:#8c4718\">a<span style=\"color:#8c5519\">r<span style=\"color:#8c6502\">k <span style=\"color:#8c7439\">b<span style=\"color:#8c6502\">r<span style=\"color:#8c5519\">o<span style=\"color:#8c4718\">w<span style=\"color:#8c3c00\">n<\/span>, his hair is now <span style=\"color:#5f5f5f\">gr<span style=\"color:#686868\">eyi<span style=\"color:#707070\">ng, <span style=\"color:#7a7a7a\">pa<span style=\"color:#848484\">rti<span style=\"color:#8f8f8f\">cul<span style=\"color:#979797\">ar<span style=\"color:#8f8f8f\">ly <span style=\"color:#848484\">at <span style=\"color:#7a7a7a\">the <span style=\"color:#707070\">te<span style=\"color:#686868\">mpl<span style=\"color:#5f5f5f\">es<\/span>. It   <span style=\"color:#008080\">| <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span>\n<span style=\"color:#008080\">| <\/span>has been cut short for utility. His forehead is furrowed with deep worry    <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>lines, the mark of sleepless nights and hard choices. <span style=\"color:#b7ff00\">P<span style=\"color:#a5ff00\">a<span style=\"color:#93ff00\">l<span style=\"color:#82ff1d\">e <span style=\"color:#70ff75\">g<span style=\"color:#8dffa0\">r<span style=\"color:#aaffcc\">e<span style=\"color:#8dffa0\">e<span style=\"color:#70ff75\">n <span style=\"color:#82ff1d\">e<span style=\"color:#93ff00\">y<span style=\"color:#a5ff00\">e<span style=\"color:#b7ff00\">s<\/span>, cold <span style=\"color:#008080\">| <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span>\n<span style=\"color:#008080\">| <\/span>and unflinching contain the stare of a man who suspects every soul in the   <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>room. A square jaw peppered with gray stubble, his lips are often pressed   <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>in a line that rarely softens. His neck is thick, corded, veins standing    <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>taut when anger rises, and often shadowed with stubble. He has broad,       <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>scarred knuckles with old breaks, the grip of a man who can open a pickle   <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>jar.                                                                        <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span><u>He is using:<\/u>                                                                <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">E<\/span>) a cheap smart phone in a black case                                     <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">D<\/span>) a well-worn black leather jacket                                        <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">D<\/span>) a tarnished silver signet ring                                          <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">D<\/span>) a mid-grade analog wristwatch with ivory hands                          <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">D<\/span>) a pair of brown cargo trousers with reinforced knees                    <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">| <\/span>(<span style=\"color:#008080\">D<\/span>) a pair of broken-in, sturdy brown work boots                            <span style=\"color:#008080\">| <\/span>\n<span style=\"color:#008080\">|_____________________________________________________________________________|\n<\/span><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <div class=\"rpg-video-section\">\n                <div class=\"rpg-video-carousel\" id=\"rpgVideoCarousel\">\n                    <div class=\"rpg-video-placeholder\">No videos available<\/div>\n                    \n                    <button class=\"rpg-carousel-nav rpg-prev\" id=\"rpgPrevVideo\">\u2039<\/button>\n                    <button class=\"rpg-carousel-nav rpg-next\" id=\"rpgNextVideo\">\u203a<\/button>\n                    \n                    <div class=\"rpg-carousel-controls\" style=\"bottom: 30px;\">\n                        <!-- No videos -->\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\njQuery(document).ready(function($) {\n    'use strict';\n    \n    let currentImageIndex = 0;\n    let currentVideoIndex = 0;\n    let imageAutoAdvance;\n    let videosLoaded = false;\n    let protectionActive = false;\n    \n    \/\/ Tab switching functionality\n    $('.rpg-tab-button').on('click', function() {\n        var tabName = $(this).data('tab');\n        \n        \/\/ Hide all tab contents\n        $('.rpg-tab-content').removeClass('active');\n        \n        \/\/ Remove active class from all buttons\n        $('.rpg-tab-button').removeClass('active');\n        \n        \/\/ Show the selected tab and mark button as active\n        $('#' + tabName).addClass('active');\n        $(this).addClass('active');\n    });\n    \n    \/\/ Function to create and insert iframe\n    function createIframe(videoId) {\n        const iframe = document.createElement('iframe');\n        iframe.src = 'https:\/\/www.youtube.com\/embed\/' + videoId;\n        iframe.setAttribute('allowfullscreen', 'true');\n        iframe.setAttribute('frameborder', '0');\n        iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');\n        iframe.className = 'rpg-protected-iframe';\n        iframe.style.cssText = 'width: 100%; height: 100%; border: none; border-radius: 10px;';\n        return iframe;\n    }\n    \n    \/\/ Function to load video iframes\n    function loadVideoIframes() {\n        if (videosLoaded) return;\n        \n        console.log('RPG: Loading video iframes...');\n        \n        $('.rpg-video-item').each(function() {\n            const $item = $(this);\n            const videoId = $item.data('video-id');\n            \n            if (videoId && !$item.find('iframe').length) {\n                $item.find('.rpg-video-placeholder').remove();\n                const iframe = createIframe(videoId);\n                $item.append(iframe);\n            }\n        });\n        \n        videosLoaded = true;\n        \n        \/\/ Start protection after a short delay\n        setTimeout(startProtection, 500);\n    }\n    \n    \/\/ Smart protection system\n    function startProtection() {\n        if (protectionActive) return;\n        protectionActive = true;\n        \n        \/\/ Check every second for hidden iframes\n        setInterval(function() {\n            $('.rpg-protected-iframe').each(function() {\n                const $iframe = $(this);\n                const computedStyle = window.getComputedStyle(this);\n                \n                \/\/ Only fix if actually hidden\n                if (computedStyle.display === 'none' || \n                    computedStyle.visibility === 'hidden' || \n                    computedStyle.opacity === '0') {\n                    \n                    console.log('RPG: Fixing hidden iframe');\n                    $iframe.css({\n                        'display': 'block',\n                        'visibility': 'visible',\n                        'opacity': '1'\n                    });\n                }\n            });\n        }, 1000);\n    }\n    \n    \/\/ Image carousel functions\n    function changeImage(direction) {\n        const images = $('#rpgImageCarousel .rpg-carousel-image');\n        const dots = $('.rpg-image-carousel-container .rpg-carousel-dot');\n        \n        images.eq(currentImageIndex).removeClass('active');\n        dots.eq(currentImageIndex).removeClass('active');\n        \n        currentImageIndex = (currentImageIndex + direction + images.length) % images.length;\n        \n        images.eq(currentImageIndex).addClass('active');\n        dots.eq(currentImageIndex).addClass('active');\n    }\n    \n    function setCurrentImage(index) {\n        const images = $('#rpgImageCarousel .rpg-carousel-image');\n        const dots = $('.rpg-image-carousel-container .rpg-carousel-dot');\n        \n        images.eq(currentImageIndex).removeClass('active');\n        dots.eq(currentImageIndex).removeClass('active');\n        \n        currentImageIndex = index;\n        \n        images.eq(currentImageIndex).addClass('active');\n        dots.eq(currentImageIndex).addClass('active');\n    }\n    \n    \/\/ Video carousel functions\n    function changeVideo(direction) {\n        const videos = $('#rpgVideoCarousel .rpg-video-item');\n        const dots = $('.rpg-video-section .rpg-carousel-dot');\n        \n        videos.eq(currentVideoIndex).removeClass('active');\n        dots.eq(currentVideoIndex).removeClass('active');\n        \n        currentVideoIndex = (currentVideoIndex + direction + videos.length) % videos.length;\n        \n        videos.eq(currentVideoIndex).addClass('active');\n        dots.eq(currentVideoIndex).addClass('active');\n    }\n    \n    function setCurrentVideo(index) {\n        const videos = $('#rpgVideoCarousel .rpg-video-item');\n        const dots = $('.rpg-video-section .rpg-carousel-dot');\n        \n        videos.eq(currentVideoIndex).removeClass('active');\n        dots.eq(currentVideoIndex).removeClass('active');\n        \n        currentVideoIndex = index;\n        \n        videos.eq(currentVideoIndex).addClass('active');\n        dots.eq(currentVideoIndex).addClass('active');\n    }\n    \n    \/\/ Event handlers\n    $('#rpgPrevImage').on('click', function() {\n        changeImage(-1);\n        clearInterval(imageAutoAdvance);\n    });\n    \n    $('#rpgNextImage').on('click', function() {\n        changeImage(1);\n        clearInterval(imageAutoAdvance);\n    });\n    \n    $('.rpg-image-carousel-container .rpg-carousel-dot').on('click', function() {\n        const index = parseInt($(this).data('index'));\n        setCurrentImage(index);\n        clearInterval(imageAutoAdvance);\n    });\n    \n    $('#rpgPrevVideo').on('click', function() {\n        changeVideo(-1);\n    });\n    \n    $('#rpgNextVideo').on('click', function() {\n        changeVideo(1);\n    });\n    \n    $('.rpg-video-section .rpg-carousel-dot').on('click', function() {\n        const index = parseInt($(this).data('video-index'));\n        setCurrentVideo(index);\n    });\n    \n    \/\/ Auto-advance image carousel only\n    imageAutoAdvance = setInterval(function() {\n        changeImage(1);\n    }, 5000);\n    \n    \/\/ Load videos after 2 second delay\n    setTimeout(loadVideoIframes, 2000);\n});\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Horace Willoughby @DeliveryConsultant | Followers: 98 \u2039 \u203a Profile Photo About Me Not much to know. I am a truck driver who frequently makes deliveries to New Haven. If you need to get something in and out of the city, let me know. I am&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":16918,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-28929","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/pages\/28929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/comments?post=28929"}],"version-history":[{"count":0,"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/pages\/28929\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/pages\/16918"}],"wp:attachment":[{"href":"https:\/\/havenrpg.net\/newsite\/wp-json\/wp\/v2\/media?parent=28929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}