From 87ba712c8c9e10b2448c978db87e83bca19f918b Mon Sep 17 00:00:00 2001 From: tilderain Date: Sun, 13 Jul 2025 12:02:15 -0700 Subject: [PATCH 1/3] Make the ships move in pirate --- .../tf2ware_ultimate/minigames/pirate.nut | 50 ++++++++++++++----- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut index 92ab2157d..5267a1636 100644 --- a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut +++ b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut @@ -23,6 +23,8 @@ ship_model <- "models/marioragdoll/super mario galaxy/bj ship/bjship.mdl" red_ship <- null blue_ship <- null +ships <- [] + function OnPrecache() { PrecacheModel(ship_model) @@ -32,32 +34,56 @@ function OnStart() { Ware_SetGlobalLoadout(TF_CLASS_DEMOMAN, "Stickybomb Jumper") + local mission = RandomInt(0,1) foreach (player in Ware_MinigamePlayers) { - local team = player.GetTeam() - if (team == TF_TEAM_RED) - Ware_SetPlayerMission(player, 0) - else if (team == TF_TEAM_BLUE) - Ware_SetPlayerMission(player, 1) + Ware_SetPlayerMission(player, mission) } - - local swap = RandomBool() + + local x_off = 100 + red_ship = Ware_SpawnEntity("prop_dynamic_override", { - origin = Ware_MinigameLocation.center + Vector(2200, swap ? -500 : 300, -136), + origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 0 ? x_off : 0), RandomFloat(-300,300), -136), model = ship_model rendercolor = "255 0 0", }) blue_ship = Ware_SpawnEntity("prop_dynamic_override", { - origin = Ware_MinigameLocation.center + Vector(2200, swap ? 300 : -500, -136), + origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 1 ? x_off : 0), RandomFloat(-300,300), -136), model = ship_model rendercolor = "0 255 255", }) + + ships <- [red_ship, blue_ship] + foreach (ship in ships) + { + ship.ValidateScriptScope() + local scope = ship.GetScriptScope() + + scope.speed <- RandomFloat(-20, 20) + if (abs(scope.speed) < 5) scope.speed = RandomBool() ? 10 : -10 + scope.start_y <- ship.GetOrigin().y + } + } function OnUpdate() { + + foreach (ship in ships) + { + local scope = ship.GetScriptScope() + local origin = ship.GetOrigin() + + if (origin.y > scope.start_y) + scope.speed -= 0.2 + else + scope.speed += 0.2 + + ship.KeyValueFromVector("origin", origin + Vector(0, scope.speed, 0)) + } + local offset = Vector(0, 0, 300) local red_point = red_ship.GetOrigin() + offset local blue_point = blue_ship.GetOrigin() + offset @@ -75,8 +101,8 @@ function OnUpdate() local target = player // squirrel needs this to be happy local origin = player.GetOrigin() - local team = player.GetTeam() - if (team == TF_TEAM_RED) + local mission = Ware_GetPlayerMission(player) + if (mission == 0) { if (origin.z > red_point.z && VectorDistance2D(origin, red_point) < 150.0) { @@ -95,7 +121,7 @@ function OnUpdate() Ware_ChatPrint(player, "You pirated the wrong ship!") } } - else if (team == TF_TEAM_BLUE) + else if (mission == 1) { if (origin.z > blue_point.z && VectorDistance2D(origin, blue_point) < 150.0) { From ba17b4f02da0a6ff9120580a8146422b00103900 Mon Sep 17 00:00:00 2001 From: tilderain Date: Sat, 9 Aug 2025 19:34:46 -0700 Subject: [PATCH 2/3] Add original pirate behavior as mode --- .../tf2ware_ultimate/minigames/pirate.nut | 100 ++++++++++++------ 1 file changed, 65 insertions(+), 35 deletions(-) diff --git a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut index 5267a1636..b9f9e8164 100644 --- a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut +++ b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut @@ -16,6 +16,7 @@ minigame <- Ware_MinigameData "pirate_red" "pirate_blue" ] + modes = 2 }) ship_model <- "models/marioragdoll/super mario galaxy/bj ship/bjship.mdl" @@ -34,54 +35,83 @@ function OnStart() { Ware_SetGlobalLoadout(TF_CLASS_DEMOMAN, "Stickybomb Jumper") - local mission = RandomInt(0,1) - foreach (player in Ware_MinigamePlayers) + if (Ware_MinigameMode == 0) { - Ware_SetPlayerMission(player, mission) - } - - local x_off = 100 + foreach (player in Ware_MinigamePlayers) + { + local team = player.GetTeam() + if (team == TF_TEAM_RED) + Ware_SetPlayerMission(player, 0) + else if (team == TF_TEAM_BLUE) + Ware_SetPlayerMission(player, 1) + } + + local swap = RandomBool() - red_ship = Ware_SpawnEntity("prop_dynamic_override", - { - origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 0 ? x_off : 0), RandomFloat(-300,300), -136), - model = ship_model - rendercolor = "255 0 0", - }) - blue_ship = Ware_SpawnEntity("prop_dynamic_override", + red_ship = Ware_SpawnEntity("prop_dynamic_override", + { + origin = Ware_MinigameLocation.center + Vector(2200, swap ? -500 : 300, -136), + model = ship_model + rendercolor = "255 0 0", + }) + blue_ship = Ware_SpawnEntity("prop_dynamic_override", + { + origin = Ware_MinigameLocation.center + Vector(2200, swap ? 300 : -500, -136), + model = ship_model + rendercolor = "0 255 255", + }) + } + else { - origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 1 ? x_off : 0), RandomFloat(-300,300), -136), - model = ship_model - rendercolor = "0 255 255", - }) + local mission = RandomInt(0,1) + foreach (player in Ware_MinigamePlayers) + { + Ware_SetPlayerMission(player, mission) + } - ships <- [red_ship, blue_ship] - foreach (ship in ships) - { - ship.ValidateScriptScope() - local scope = ship.GetScriptScope() + local x_off = 100 + red_ship = Ware_SpawnEntity("prop_dynamic_override", + { + origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 0 ? x_off : 0), RandomFloat(-300,300), -136), + model = ship_model + rendercolor = "255 0 0", + }) + blue_ship = Ware_SpawnEntity("prop_dynamic_override", + { + origin = Ware_MinigameLocation.center + Vector(2200 + (mission == 1 ? x_off : 0), RandomFloat(-300,300), -136), + model = ship_model + rendercolor = "0 255 255", + }) - scope.speed <- RandomFloat(-20, 20) - if (abs(scope.speed) < 5) scope.speed = RandomBool() ? 10 : -10 - scope.start_y <- ship.GetOrigin().y - } + ships <- [red_ship, blue_ship] + foreach (ship in ships) + { + ship.ValidateScriptScope() + local scope = ship.GetScriptScope() + scope.speed <- RandomFloat(-20, 20) + if (abs(scope.speed) < 5) scope.speed = RandomBool() ? 10 : -10 + scope.start_y <- ship.GetOrigin().y + } + } } function OnUpdate() { - - foreach (ship in ships) + if (Ware_MinigameMode == 1) { - local scope = ship.GetScriptScope() - local origin = ship.GetOrigin() + foreach (ship in ships) + { + local scope = ship.GetScriptScope() + local origin = ship.GetOrigin() - if (origin.y > scope.start_y) - scope.speed -= 0.2 - else - scope.speed += 0.2 + if (origin.y > scope.start_y) + scope.speed -= 0.2 + else + scope.speed += 0.2 - ship.KeyValueFromVector("origin", origin + Vector(0, scope.speed, 0)) + ship.KeyValueFromVector("origin", origin + Vector(0, scope.speed, 0)) + } } local offset = Vector(0, 0, 300) From d70a5e3b4ac64eee5bb1faca21fd7f8b85932f03 Mon Sep 17 00:00:00 2001 From: tilderain Date: Sun, 21 Sep 2025 13:39:47 -0700 Subject: [PATCH 3/3] The ships bob and wave up and down now --- .../tf2ware_ultimate/minigames/pirate.nut | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut index b9f9e8164..d3c5a2074 100644 --- a/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut +++ b/scripts/vscripts/tf2ware_ultimate/minigames/pirate.nut @@ -89,9 +89,21 @@ function OnStart() ship.ValidateScriptScope() local scope = ship.GetScriptScope() - scope.speed <- RandomFloat(-20, 20) - if (abs(scope.speed) < 5) scope.speed = RandomBool() ? 10 : -10 - scope.start_y <- ship.GetOrigin().y + scope.start_origin <- ship.GetOrigin() + scope.start_angles <- ship.GetAngles() + + scope.bob_speed <- RandomFloat(1.5, 2.5) + scope.bob_amplitude <- RandomFloat(4.0, 9.0) + scope.bob_phase <- RandomFloat(0, 2 * PI) + + scope.roll_speed <- RandomFloat(0.8, 1.2) + scope.roll_amplitude <- RandomFloat(2.5, 8.0) + scope.roll_phase <- RandomFloat(0, 2 * PI) + + //Horizontal movement + scope.sway_speed <- RandomFloat(1, 1.5) + scope.sway_amplitude <- RandomFloat(0.0, 600.0) + scope.sway_phase <- RandomFloat(0, 2 * PI) } } } @@ -100,17 +112,22 @@ function OnUpdate() { if (Ware_MinigameMode == 1) { + local minigame_time = Ware_GetMinigameTime() foreach (ship in ships) { local scope = ship.GetScriptScope() - local origin = ship.GetOrigin() - if (origin.y > scope.start_y) - scope.speed -= 0.2 - else - scope.speed += 0.2 + local bob_offset = sin(minigame_time * scope.bob_speed + scope.bob_phase) * scope.bob_amplitude + local sway_offset = sin(minigame_time * scope.sway_speed + scope.sway_phase) * scope.sway_amplitude + local roll_angle_offset = sin(minigame_time * scope.roll_speed + scope.roll_phase) * scope.roll_amplitude + + local new_origin = scope.start_origin + Vector(0, sway_offset, bob_offset) + + local base_angles = scope.start_angles + local new_angles = QAngle(base_angles.x, base_angles.y, base_angles.z + roll_angle_offset) - ship.KeyValueFromVector("origin", origin + Vector(0, scope.speed, 0)) + ship.KeyValueFromVector("origin", new_origin) + ship.SetAbsAngles(new_angles) } }