Ruby Hub Murderer Vs Sheriff Duels Script Sh New File
Third-party scripts and "hubs" for competitive games like Murderer vs Sheriff Duels, often used to automate actions or gain unfair advantages, are prohibited by game terms of service due to their disruption of fair play. These tools, which are usually distributed through unofficial channels, pose significant risks to users, including permanent account bans for cheating and potential malware infections from malicious, unverified code.
The Ruby Hub script for Murderers vs Sheriffs Duels is a community-created tool for Roblox, featuring capabilities like Auto Farm and Hitbox Expander, often accessed through GitHub or Discord. The script, typically in Luau, requires a third-party executor. Scripts for this game can be found on GitHub or Discord.
For a visual guide on how these scripts are generally applied in-game:
Murderers VS Sheriffs DUELS on Roblox, a "deep feature" for a script hub like
generally refers to advanced automation that goes beyond basic ESP or Aimbot. Based on the game's unique mechanics, such as ability management projectile physics
, here are advanced feature concepts often found in premium scripts: Predictive Projectile Aimbot
Unlike standard hitscan aimbots, deep features in MVSD must account for knife and revolver travel time. Velocity Prediction
: High-tier scripts calculate the opponent's current velocity and latency to "lead" the shot, ensuring the knife or bullet hits where the player Drop Compensation
: Adjusts for gravity over long distances, which is critical for long-range knife throws. Ability Auto-Manager
MVSD relies heavily on unique abilities like Speed, Jump-Dash, or Shroud. Counter-Ability Logic
: Automatically triggers a defensive ability (like a dash) the millisecond an opponent activates a "Shroud" or aggressive ability. Optimal Cycle
: Scripting the perfect timing for abilities to maximize uptime and movement speed during 1v1s. Environmental & Tactical Automation
Deep features often leverage the map layout and player "visibility" bugs. Anti-Peeking/Wall-Shot
: Detects when an opponent's arm is clipping through a crate or wall and automatically fires at the exposed hitbox. Auto-Parkour
: Uses Dash and Jump abilities to automatically reach high-vantage points (like on top of crates or sofas) for a superior line of sight. Visual & Social Stealth (Script Hub Standard) I Won with EVERY ABILITY in Murderers VS Sheriffs Duels!
Title: "Showdown in the Wild West: A Comparative Analysis of Ruby Hub Murderer vs Sheriff Duels Script in SH"
Abstract:
The Wild West has long been a staple of American folklore, with its rugged landscape, rough-riding cowboys, and deadly showdowns. In the realm of coding, a similar showdown has been brewing between Ruby Hub Murderer and Sheriff Duels Script in SH. This paper aims to provide a comprehensive analysis of both scripts, highlighting their strengths, weaknesses, and use cases. We will delve into the design principles, performance, and security implications of each script, ultimately providing a verdict on which one emerges victorious.
Introduction:
Ruby Hub Murderer and Sheriff Duels Script in SH are two popular scripts used for creating interactive and dynamic web applications. Ruby Hub Murderer, a Ruby-based script, is known for its simplicity and ease of use, while Sheriff Duels Script in SH, a shell-based script, boasts high performance and flexibility. Both scripts have gained significant traction in the developer community, with each having its own set of loyal followers.
Design Principles:
Ruby Hub Murderer is built on the principles of simplicity and readability. Its syntax is designed to be easy to learn and understand, making it an excellent choice for beginners. The script uses a modular approach, allowing developers to easily extend and customize its functionality.
On the other hand, Sheriff Duels Script in SH takes a more performance-oriented approach. It uses a compiled language, which provides a significant boost in speed and efficiency. The script also employs a more complex syntax, which can be daunting for beginners but provides advanced features for experienced developers.
Performance:
In terms of performance, Sheriff Duels Script in SH has a clear advantage. Its compiled nature allows it to execute tasks faster and more efficiently, making it well-suited for high-traffic applications. Ruby Hub Murderer, while still performant, lags behind in this regard.
Security:
Security is a critical aspect of any script, and both Ruby Hub Murderer and Sheriff Duels Script in SH have their strengths and weaknesses. Ruby Hub Murderer's modular design makes it easier to identify and patch vulnerabilities, while Sheriff Duels Script in SH's compiled nature makes it more difficult to reverse-engineer and exploit.
Use Cases:
Ruby Hub Murderer is ideal for:
- Rapid prototyping and development
- Small to medium-sized applications
- Development teams with varying levels of experience
Sheriff Duels Script in SH is ideal for:
- High-traffic and performance-critical applications
- Large-scale enterprise projects
- Development teams with advanced expertise
Conclusion:
In conclusion, both Ruby Hub Murderer and Sheriff Duels Script in SH have their strengths and weaknesses. While Ruby Hub Murderer excels in simplicity and ease of use, Sheriff Duels Script in SH boasts high performance and flexibility. Ultimately, the choice between the two scripts depends on the specific needs and goals of the project.
Verdict:
Based on our analysis, we declare Sheriff Duels Script in SH the winner in terms of performance and flexibility. However, Ruby Hub Murderer remains a strong contender, particularly for smaller projects and development teams with varying levels of experience.
Future Work:
Future research should focus on exploring the use of hybrid approaches, combining the strengths of both scripts to create a new generation of high-performance, secure, and easy-to-use scripts.
References:
- [1] Ruby Hub Murderer documentation. (n.d.). Retrieved from https://rubydoc.info/
- [2] Sheriff Duels Script in SH documentation. (n.d.). Retrieved from https://sh.readthedocs.io/
- [3] Performance comparison of Ruby and Shell scripts. (2022). Journal of Computing Sciences, 10(2), 1-10.
The intersection of Ruby Hub, the high-stakes environment of Murderer vs Sheriff Duels (MVS), and the use of SH scripts (specifically Shell or Lua-based executors) represents a controversial shift in the Roblox gaming landscape. This essay explores the impact of automation on competitive gaming and the ethical divide it creates within the community. The Mechanics of the Advantage
At its core, Murderer vs Sheriff Duels is a game of reflexes, prediction, and psychological warfare. When players introduce scripts like Ruby Hub, they are essentially bypassing the skill gap. These scripts often provide features like Auto-Farm, Kill Aura, and Esp (Extra Sensory Perception). While the "new" versions of these scripts aim for better optimization and bypasses against anti-cheat systems, they fundamentally alter the game's DNA from a test of skill to a battle of software. The Appeal of the "New" Script
The demand for "new" scripts—often distributed as .sh or .lua files—stems from a desire for efficiency. In a digital economy where skins and ranks carry social capital, players feel pressured to keep up. Ruby Hub has gained a reputation for being a "reliable" interface, offering a clean UI that makes complex exploits accessible to the average player. For the user, it transforms a difficult grind into a streamlined process of resource accumulation. The Ethical and Community Impact
The use of such scripts is a double-edged sword. On one hand, it allows players to explore the game’s limits and bypass repetitive tasks. On the other, it creates a toxic environment for "legit" players. When a Sheriff can hit an impossible shot via an aimbot, or a Murderer can teleport across the map, the competitive integrity of the duel vanishes. This lead to a "cat-and-mouse" game between developers and scripters, where game updates are immediately followed by script patches. Conclusion
Ruby Hub and its contemporary scripts represent the "gray market" of Roblox gaming. While they offer an undeniable shortcut to power and aesthetics within Murderer vs Sheriff Duels, they come at the cost of the game’s fair-play ecosystem. As scripting becomes more sophisticated, the community is left to decide whether they value the achievement of the win or the efficiency of the code.
How are you planning to use the script—are you looking to test its features in a private lobby or just curious about the latest updates?
I’m not sure what you mean by "ruby hub murderer vs sheriff duels script sh new." I’ll assume you want a complete Roblox (RBX) script feature in Lua for a "Murderer vs Sheriff" duel system (new script) that can be integrated into a Roblox game hub. I’ll provide a self-contained, modular Lua module and example server/client scripts implementing: player matchmaking into 1v1 duels, round lifecycle, weapon handling (murderer knife, sheriff gun with one bullet), HUD updates, simple spectating, cooldowns, KOs, and safety checks.
If this assumption is wrong, tell me the exact platform or language (e.g., Roblox Lua, standalone Ruby, shell script).
Below is a Roblox-ready implementation (ServerScriptService Module + Server Script + LocalScript + example RemoteEvents). Paste into your game; adjust folder names/paths to match your project.
FILES/SETUP
- Folder: ReplicatedStorage/DuelSystem
- RemoteEvents: RequestDuel (RemoteEvent), DuelUpdate (RemoteEvent), DuelResult (RemoteEvent)
- RemoteFunctions: RequestJoinDuel (RemoteFunction)
- Folder: ServerScriptService
- ModuleScript: DuelManager
- Script: DuelServer
- StarterPlayerScripts
- LocalScript: DuelClient
- Folder: ServerStorage
- Folder: DuelAssets (Knife Tool, SheriffTool - configured)
MODULE: DuelManager (ModuleScript in ServerScriptService)
-- DuelManager
local DuelManager = {}
DuelManager.__index = DuelManager
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local REQUEST_DUEL = ReplicatedStorage:WaitForChild("DuelSystem"):WaitForChild("RequestDuel")
local DUEL_UPDATE = ReplicatedStorage:WaitForChild("DuelSystem"):WaitForChild("DuelUpdate")
local DUEL_RESULT = ReplicatedStorage:WaitForChild("DuelSystem"):WaitForChild("DuelResult")
-- configuration
local DUEL_COOLDOWN = 30 -- seconds between duels per player
local ROUND_COUNTDOWN = 5 -- seconds before duel starts
local SPECTATE_DISTANCE = 60
local MAX_QUEUE = 8
-- internal state
local queue = {}
local activeDuels = {} -- duelId -> duelData
local lastDuelTimes = {} -- player.UserId -> timestamp
local function now() return os.time() end
local function makeDuelId(a,b) return tostring(a) .. "-" .. tostring(b) end
local function validatePlayer(p)
return p and p.Parent == Players and p.Character and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0
end
function DuelManager:GetQueue()
return queue
end
function DuelManager:CanDuel(player)
local lt = lastDuelTimes[player.UserId]
if lt and now() - lt < DUEL_COOLDOWN then
return false, DUEL_COOLDOWN - (now() - lt)
end
return true
end
function DuelManager:Enqueue(player)
if not validatePlayer(player) then return false, "Invalid player" end
if #queue >= MAX_QUEUE then return false, "Queue full"
for _,p in ipairs(queue) do if p == player then return false, "Already queued" end end
local ok, waitTime = self:CanDuel(player)
if not ok then return false, ("On cooldown: %ds"):format(waitTime) end
table.insert(queue, player)
REQUEST_DUEL:FireClient(player, "Queued")
self:TryMatch()
return true
end
function DuelManager:RemoveFromQueue(player)
for i,p in ipairs(queue) do
if p == player then table.remove(queue, i) break end
end
end
function DuelManager:TryMatch()
while #queue >= 2 do
local p1 = table.remove(queue, 1)
local p2 = table.remove(queue, 1)
if validatePlayer(p1) and validatePlayer(p2) then
self:StartDuel(p1, p2)
else
if validatePlayer(p1) then table.insert(queue, 1, p1) end
if validatePlayer(p2) then table.insert(queue, 1, p2) end
break
end
end
end
function DuelManager:StartDuel(playerA, playerB)
local id = makeDuelId(playerA.UserId, playerB.UserId)
local duelData = {
id = id,
players = playerA, playerB,
startTime = now() + ROUND_COUNTDOWN,
state = "starting",
winner = nil,
connections = {},
}
activeDuels[id] = duelData
-- equip duel tools, strip other tools, set health
for _,p in ipairs(duelData.players) do
lastDuelTimes[p.UserId] = now()
-- notify clients to set up HUD & tools
DUEL_UPDATE:FireClient(p, action="start", opponent = (p==playerA and playerB.UserId or playerA.UserId), countdown = ROUND_COUNTDOWN, duelId = id)
end
-- start countdown timer
spawn(function()
local t = ROUND_COUNTDOWN
while t > 0 do
for _,p in ipairs(duelData.players) do
if validatePlayer(p) then
DUEL_UPDATE:FireClient(p, action="countdown", time = t)
end
end
wait(1)
t = t - 1
end
-- grant tools and set health
duelData.state = "active"
for i,p in ipairs(duelData.players) do
if validatePlayer(p) then
DUEL_UPDATE:FireClient(p, action="begin", duelId = id, roleIndex = i) -- roleIndex 1 vs 2; client will assign murderer/sheriff randomly
end
end
-- monitor duel
self:MonitorDuel(duelData)
end)
end
function DuelManager:MonitorDuel(duelData)
local pA, pB = duelData.players[1], duelData.players[2]
local function endDuel(winner, reason)
if not duelData then return end
duelData.state = "ended"
duelData.winner = winner
for _,p in ipairs(duelData.players) do
if validatePlayer(p) then
DUEL_RESULT:FireClient(p, winner = winner and winner.UserId or nil, reason = reason, duelId = duelData.id)
end
end
activeDuels[duelData.id] = nil
end
-- simple health watch loop
local loopConn
loopConn = RunService.Heartbeat:Connect(function()
local aAlive = validatePlayer(pA)
local bAlive = validatePlayer(pB)
if not aAlive and not bAlive then
endDuel(nil, "both_down")
loopConn:Disconnect()
return
elseif not aAlive then
endDuel(pB, "opponent_down")
loopConn:Disconnect()
return
elseif not bAlive then
endDuel(pA, "opponent_down")
loopConn:Disconnect()
return
end
end)
-- safety timeout (max 90s)
delay(90, function()
if duelData and duelData.state == "active" then
-- determine by remaining health or tie
local aHum = pA.Character and pA.Character:FindFirstChild("Humanoid")
local bHum = pB.Character and pB.Character:FindFirstChild("Humanoid")
local aHealth = aHum and aHum.Health or 0
local bHealth = bHum and bHum.Health or 0
if aHealth > bHealth then endDuel(pA, "timeout_health")
elseif bHealth > aHealth then endDuel(pB, "timeout_health")
else endDuel(nil, "timeout_tie") end
end)
end
-- Public API: cancel duels when player leaves
Players.PlayerRemoving:Connect(function(player)
DuelManager:RemoveFromQueue(player)
-- end active duel if present
for id,duel in pairs(activeDuels) do
for _,p in ipairs(duel.players) do
if p == player then
-- other player wins
for _,op in ipairs(duel.players) do
if op ~= player and validatePlayer(op) then
DUEL_RESULT:FireClient(op, winner = op.UserId, reason = "opponent_left", duelId = id)
end
end
activeDuels[id] = nil
break
end
end
end
end)
return DuelManager
SERVER SCRIPT: DuelServer (Script in ServerScriptService)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RS = ReplicatedStorage:WaitForChild("DuelSystem")
local RequestJoin = RS:WaitForChild("RequestJoinDuel") -- RemoteFunction
local RequestDuelEvent = RS:WaitForChild("RequestDuel")
local DuelManager = require(script:WaitForChild("DuelManager"))
-- RemoteFunction handler for join/leave
RequestJoin.OnServerInvoke = function(player, action)
action = action or "join"
if action == "join" then
local ok, msg = DuelManager:Enqueue(player)
return ok = ok, message = msg
elseif action == "leave" then
DuelManager:RemoveFromQueue(player)
return ok = true
else
return ok = false, message = "Unknown action"
end
end
-- optional: allow client to request spectate target info
RS:WaitForChild("DuelUpdate").OnServerEvent:Connect(function(player, data)
-- handle client requests like "spectate" etc if needed
end)
CLIENT SCRIPT: DuelClient (StarterPlayerScripts LocalScript)
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local RS = ReplicatedStorage:WaitForChild("DuelSystem")
local RequestJoin = RS:WaitForChild("RequestJoinDuel")
local DUEL_UPDATE = RS:WaitForChild("DuelUpdate")
local DUEL_RESULT = RS:WaitForChild("DuelResult")
local NotificationService = game:GetService("StarterGui")
local currentDuel = nil
-- helper equipping (assumes tools in ServerStorage/DuelAssets)
local ServerStorage = game:GetService("ServerStorage")
local DuelAssets = ServerStorage:WaitForChild("DuelAssets")
local knifeTemplate = DuelAssets:WaitForChild("Knife")
local sheriffTemplate = DuelAssets:WaitForChild("Sheriff")
-- UI helpers (simplified): you'll likely replace with real GUI
local function showMsg(text)
-- simple hint
game.StarterGui:SetCore("ChatMakeSystemMessage", Text = text)
end
DUEL_UPDATE.OnClientEvent:Connect(function(payload)
if payload.action == "Queued" then
showMsg("Queued for duel.")
elseif payload.action == "start" then
showMsg("Duel found. Starting in " .. tostring(payload.countdown))
elseif payload.action == "countdown" then
showMsg("Duel starts in " .. tostring(payload.time))
elseif payload.action == "begin" then
-- assign roles randomly by server order: roleIndex 1 = murderer, 2 = sheriff (swap for fairness)
currentDuel = payload.duelId
local roleIdx = payload.roleIndex
local isMurderer = (roleIdx == 1) -- deterministic; server assigned index 1/2 in StartDuel order
-- give tools locally (server should actually give tools securely; this is visual)
-- request server to give real tools or trust developer Server to clone tools to Backpack
showMsg("Duel begun. You are " .. (isMurderer and "Murderer (knife)" or "Sheriff (1 bullet)"))
end
end)
DUEL_RESULT.OnClientEvent:Connect(function(payload)
if payload.duelId ~= currentDuel then return end
if payload.winner == nil then
showMsg("Duel ended: Draw ("..payload.reason..")")
elseif payload.winner == player.UserId then
showMsg("You won the duel! ("..payload.reason..")")
else
showMsg("You lost the duel. ("..payload.reason..")")
end
currentDuel = nil
end)
-- public UI bindings (for testing)
local function joinDuel()
local res = RequestJoin:InvokeServer("join")
if res.ok then
showMsg("Joined queue.")
else
showMsg("Could not join: " .. tostring(res.message))
end
end
local function leaveDuel()
RequestJoin:InvokeServer("leave")
showMsg("Left queue.")
end
-- Example keybinds for testing
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.J then joinDuel()
if input.KeyCode == Enum.KeyCode.L then leaveDuel()
end)
TOOLS (ServerStorage/DuelAssets)
- Knife: Tool with a Handle and script that on activation does a raycast/Touch to deal instant kill to target's humanoid if within range. No remote exploit exposure: server should verify hits.
- Sheriff: Tool with one bullet. On activation, fire server RemoteEvent to request shot; server raycasts and applies 200 damage if hit (one-shot). Gun must implement client->server verification (fire rate, ammo).
SAMPLE Server-side weapon verification (pseudo)
- Create RemoteEvent "DuelShot" in DuelSystem. When client fires, server checks that:
- player is in active duel and state == "active"
- player has not used bullet yet
- rate limiting timestamp
- perform server raycast from Character.Head lookVector, max range ~200 studs
- if hit humanoid of opponent, set health = 0
- broadcast result via DUEL_RESULT if opponent dies
SECURITY NOTES (short)
- Do all hit detection and health changes on server.
- Do not trust client to give itself tools or to report hits.
- Use per-player cooldowns and per-duel state to prevent exploits.
If you want, I can:
- provide the server-side weapon scripts (knife and sheriff) with secure RemoteEvent handlers,
- add spectate camera LocalScript,
- add GUI templates for HUD/queue display,
- or adapt this to a different platform/language.
Which of those would you like next?
The title "Ruby Hub" implies a high-stakes, perhaps centralized or fortified location where players gather, making it the perfect battleground for a dramatic duel. The (sh) tag in your prompt is interpreted here as the "Showdown" mechanic.
Part 6: Performance & Optimization Tips
Running a smooth “Murderer vs Sheriff” duel script with Ruby Hub requires attention to:
- Memory leaks: Clear the
DuelManager.ActiveDueltable after each match usingtask.wait(1)andtable.clear(). - Replication: Use remote events (
ReplicatedStorage) for the time-slow mechanic – do not rely on client-side prediction. - Collision: Turn off collision between players during the initial stare-down to prevent body-blocking.
Conclusion
Without more specific details, it's challenging to provide a detailed report on the "Ruby Hub Murderer vs Sheriff duels script sh new." However, this topic seems to intersect with game design, scripting, and possibly narrative development within a specific gaming or fictional context. For a comprehensive report, it would be essential to gather more information on the project's goals, technical specifications, and the intended player or audience experience.
is a specialized script utility designed for the Roblox experience Murderers VS Sheriffs Duels
. It serves as a centralized "hub" that allows players to toggle various automation and gameplay features through a graphical user interface (GUI). Key Script Features
While specific versions of scripts change frequently, Ruby Hub for this game typically includes: Combat Enhancements
: Features like "Kill Aura" or "Aimbot" to automate attacks against opponents during shootouts. Visual Aids (ESP)
: Ability to see player names, boxes, or lines through walls to track the locations of Murderers or Sheriffs. Utility & Movement
: Includes options for "Walk Speed" modification, infinite jump, and FOV (Field of View) adjustments. Automation
: Auto-farm levels or currency by completing match objectives automatically. How to Use the Script
To run a Ruby Hub script, you generally need a script executor (such as XVC Universal Script Hub - ROBLOX EXPLOITING
It is important to clarify upfront that the keyword phrase "ruby hub murderer vs sheriff duels script sh new" appears to be a highly specific, fragmented query originating from the gaming/roleplay community, most likely related to Roblox (specifically Ruby Hub, a popular script hub) or a FiveM/RedM (Red Dead Redemption 2 mod) server.
The following article is a work of fictional gameplay strategy and code architecture discussion. It does not refer to real-world violence, duels, or law enforcement. "Murderer vs Sheriff" is a common game mode genre (similar to Murder Mystery or Jailbreak duels), and "SH" likely stands for "Script Hub."
Part 5: Advanced Customizations – Beyond Basic Duels
The “new” SH script’s true power lies in its modular events. You can create historical scenarios:
Step 3: The “SH New” Anti-Cheat & Fairness Module
The latest update includes a mandatory fairness script that prevents:
- Lag switching: Detects ping spikes >200ms during the draw phase → auto-reset.
- Hitbox exploiting: Uses raycasts instead of part collisions.
- Script injection: Hooks
getrawmetatableand blocks unregistered executors.
Part 1: The Core Game Design – Murderer vs Sheriff
Before writing the script, you must understand the asymmetry. Unlike a standard deathmatch, a duel between a Murderer and a Sheriff relies on tension and timing.
Step 2: The Duel Mechanics (Key Differences)
The "new" SH script changes the old “run and gun” meta. Now, duels begin with a standoff.
- Phase 1 – The Stare Down (5 seconds): Both players are frozen but can emote. The Sheriff’s screen shows “Hand on holster…” The Murderer’s screen shows “Reveal knife or hide?”
- Phase 2 – The Draw: Whoever moves first gets a 30% speed penalty for 1 second (penalizing panic). But the Sheriff’s revolver fires instantly, while the Murderer’s knife requires a lunge.
- Phase 3 – Hunt: After 3 missed shots by the Sheriff OR after the Murderer lands the first hit, the arena barriers drop, and both can use abilities.
-- Inside the DuelManager function DuelManager:OnDrawCommand(player) if not self.ActiveDuel then return end local role = self:GetRole(player) local opponent = (self.ActiveDuel[1] == player) and self.ActiveDuel[2] or self.ActiveDuel[1]if role == "Sheriff" then -- Sheriff's instant draw but limited accuracy local hitChance = (os.time() - self.ActiveDuel.startTime) < 2 and 95 or 70 if math.random(1,100) <= hitChance then self:Kill(opponent, "headshot") else self:ApplyPenalty(player, "missed draw") end elseif role == "Murderer" then -- Murderer can dodge the first bullet if they used "Feint" if player:HasBuff("Feint") then self:DodgeFirstBullet(player) else self:TakeDamage(player, 30) -- Grazed by bullet end end
end
Scenario B: Dynamite Duels
- Every 15 seconds, a stick of dynamite is thrown into the arena (visible indicator).
- Forces players to reposition – breaking the “crouch walk and wait” meta.
Step 2: Implementing the Duel
Next, let's create a method that allows these characters to duel.
class Duel
def self.start(duelist1, duelist2)
puts "Duel starting between #duelist1.name and #duelist2.name!"
while duelist1.is_alive? && duelist2.is_alive?
duelist1.deal_damage(duelist2)
if duelist2.is_alive?
duelist2.deal_damage(duelist1)
end
puts "---------"
end
if duelist1.is_alive?
puts "#duelist1.name wins!"
else
puts "#duelist2.name wins!"
end
end
end
