Greasy Fork is available in English.

Grappling Arrows Deluxe

Unleash the power of grappling arrows in Bonk.io

// ==UserScript==
// @name         Grappling Arrows Deluxe
// @namespace    https://your.namespace.com
// @version      1.0
// @description  Unleash the power of grappling arrows in Bonk.io
// @author       The Mastermind
// @match        https://bonk.io/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // Constants and variables
    const ARROW_SPEED = 15;
    let arrows = [];

    // Function to create arrows
    function createArrow(x, y, angle) {
        // Code to create arrow object
        // Push arrow to arrows array
    }

    // Function to update arrow positions
    function updateArrows() {
        // Code to update arrow positions based on velocity
        // Remove arrows that are out of bounds
    }

    // Function to handle arrow collisions
    function handleArrowCollision(arrow, surface) {
        // Calculate position where arrow hits surface
        const hitPosition = calculateHitPosition(arrow, surface);

        // Attach grappling hook to hit position
        attachGrapplingHook(hitPosition);

        // Pull player towards hit position
        pullPlayer(hitPosition);
    }

    // Function to calculate hit position
    function calculateHitPosition(arrow, surface) {
        // Code to calculate hit position based on arrow trajectory and surface geometry
    }

    // Function to attach grappling hook
    function attachGrapplingHook(position) {
        // Code to create visual representation of grappling hook at hit position
    }

    // Function to pull player towards hit position
    function pullPlayer(hitPosition) {
        // Code to adjust player movement to simulate pulling towards hit position
    }

    // Event listener for player shooting arrows
    document.addEventListener('click', function(event) {
        // Code to handle arrow shooting
    });

    // Main game loop
    function mainLoop() {
        // Update player positions
        // Update arrow positions
        // Check for collisions
        // Render game
    }

    // Start game loop
    setInterval(mainLoop, 1000 / 60); // 60 FPS

})();