diff --git a/README.md b/README.md index 02df9760..1bac1c69 100644 --- a/README.md +++ b/README.md @@ -186,6 +186,7 @@ * Moved keyboard & mouse dpad icons to the same position as controller dpad icons * Grenade icons no longer fade based on how many the player currently has * Ammo counter no longer shows while scoped on all maps +* Added round chalk images from Mob of the Dead to all maps * Added proper game mode and map name to scoreboard * Added icons on scoreboard when player is downed, bled out, in Who's Who mode, in afterlife, or has the meat * Increased waypoint offset from top of screen diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index f44a9696..3db999a8 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -40,6 +40,11 @@ init() precacheshader("white_waypoint_grab"); precacheshader("white_waypoint_kill"); precacheshader("white_waypoint_escort"); + precacheshader("chalkmarks_hellcatraz_1"); + precacheshader("chalkmarks_hellcatraz_2"); + precacheshader("chalkmarks_hellcatraz_3"); + precacheshader("chalkmarks_hellcatraz_4"); + precacheshader("chalkmarks_hellcatraz_5"); level._effect["human_disappears"] = loadfx("maps/zombie/fx_zmb_returned_spawn_puff"); @@ -286,10 +291,10 @@ grief_score_hud_set_player_count(team, num = get_number_of_valid_players_team(te level.grief_score_hud[team1].player_count[team].alpha = 1; - offset = (4 - num) * (level.grief_score_hud[team1].player_count[team].width / 9); + offset = (4 - num) * (level.grief_score_hud[team1].player_count[team].width / 8); level.grief_score_hud[team1].player_count[team].x = level.grief_score_hud[team1].player_count[team].og_x + offset; - level.grief_score_hud[team1].player_count[team] setShader("hud_chalk_" + num, level.grief_score_hud[team1].player_count[team].width, level.grief_score_hud[team1].player_count[team].height); + level.grief_score_hud[team1].player_count[team] setShader("chalkmarks_hellcatraz_" + num, level.grief_score_hud[team1].player_count[team].width, level.grief_score_hud[team1].player_count[team].height); } } diff --git a/ui_mp/t6/zombie/hudroundstatuszombie.lua b/ui_mp/t6/zombie/hudroundstatuszombie.lua new file mode 100644 index 00000000..1e2f4a7c --- /dev/null +++ b/ui_mp/t6/zombie/hudroundstatuszombie.lua @@ -0,0 +1,501 @@ +CoD.RoundStatus = {} +CoD.RoundStatus.FactionIconLeftOffset = 7 +CoD.RoundStatus.FactionIconSize = 91 +CoD.RoundStatus.RoundIconLeftOffset = 0 +CoD.RoundStatus.TextLeftOffset = 7 +CoD.RoundStatus.LeftOffset = 0 +CoD.RoundStatus.ChalkTop = -96 +CoD.RoundStatus.ChalkSize = 96 +CoD.RoundStatus.SpecialLeftOffset = 3 +CoD.RoundStatus.SpecialRoundIconSize = 85 +CoD.RoundStatus.RoundCenterHeight = 80 +CoD.RoundStatus.Chalks = {} +CoD.RoundStatus.FirstRoundDuration = 1000 +CoD.RoundStatus.FirstRoundIdleDuration = 3000 +CoD.RoundStatus.FirstRoundFallDuration = 2000 +CoD.RoundStatus.RoundPulseDuration = 500 +CoD.RoundStatus.RoundPulseTimes = 2 +CoD.RoundStatus.RoundPulseTimesDelta = 5 +CoD.RoundStatus.RoundPulseTimesMin = 2 +CoD.RoundStatus.RoundMax = 100 +CoD.RoundStatus.ChalkFontName = "Morris" +LUI.createMenu.RoundStatus = function(LocalClientIndex) + local RoundStatusWidget = CoD.Menu.NewSafeAreaFromState("RoundStatus", LocalClientIndex) + CoD.RoundStatus.DefaultColor = { + r = 0.21, + g = 0, + b = 0, + } + CoD.RoundStatus.AlternatePulseColor = { + r = 1, + g = 1, + b = 1, + } + CoD.RoundStatus.Chalks[1] = RegisterMaterial("chalkmarks_hellcatraz_1") + CoD.RoundStatus.Chalks[2] = RegisterMaterial("chalkmarks_hellcatraz_2") + CoD.RoundStatus.Chalks[3] = RegisterMaterial("chalkmarks_hellcatraz_3") + CoD.RoundStatus.Chalks[4] = RegisterMaterial("chalkmarks_hellcatraz_4") + CoD.RoundStatus.Chalks[5] = RegisterMaterial("chalkmarks_hellcatraz_5") + RoundStatusWidget.gameTypeGroup = UIExpression.DvarString(nil, "ui_zm_gamemodegroup") + RoundStatusWidget.gameType = UIExpression.DvarString(nil, "ui_gametype") + RoundStatusWidget.startRound = Engine.GetGametypeSetting("startRound") + if RoundStatusWidget.gameTypeGroup == CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then + CoD.RoundStatus.LeftOffset = CoD.RoundStatus.FactionIconLeftOffset + else + CoD.RoundStatus.LeftOffset = CoD.RoundStatus.RoundIconLeftOffset + end + RoundStatusWidget.scaleContainer = CoD.SplitscreenScaler.new(nil, CoD.Zombie.SplitscreenMultiplier) + RoundStatusWidget.scaleContainer:setLeftRight(true, false, 0, 0) + RoundStatusWidget.scaleContainer:setTopBottom(false, true, 0, 0) + RoundStatusWidget:addElement(RoundStatusWidget.scaleContainer) + local f1_local1, f1_local2, f1_local3, f1_local4 = Engine.GetUserSafeAreaForController(LocalClientIndex) + RoundStatusWidget.safeAreaWidth = (f1_local3 - f1_local1) / RoundStatusWidget.scaleContainer.scale + RoundStatusWidget.safeAreaHeight = (f1_local4 - f1_local2) / RoundStatusWidget.scaleContainer.scale + RoundStatusWidget.chalkCenterTop = -RoundStatusWidget.safeAreaHeight * 0.5 - CoD.RoundStatus.ChalkSize * 1.5 + RoundStatusWidget.roundContainer = LUI.UIElement.new() + RoundStatusWidget.roundContainer:setLeftRight(true, false, 0, 0) + RoundStatusWidget.roundContainer:setTopBottom(false, true, 0, 0) + RoundStatusWidget.scaleContainer:addElement(RoundStatusWidget.roundContainer) + RoundStatusWidget.roundIconContainer = LUI.UIElement.new() + RoundStatusWidget.roundIconContainer:setLeftRight(true, false, 0, 0) + RoundStatusWidget.roundIconContainer:setTopBottom(false, true, 0, 0) + RoundStatusWidget.scaleContainer:addElement(RoundStatusWidget.roundIconContainer) + local f1_local5 = RoundStatusWidget.safeAreaWidth * 0.5 + RoundStatusWidget.roundTextCenter = LUI.UIText.new() + RoundStatusWidget.roundTextCenter:setLeftRight(true, false, f1_local5 * 0.5 + CoD.RoundStatus.ChalkSize * -0.5, f1_local5 * 0.5 + CoD.RoundStatus.ChalkSize * 0.5) + RoundStatusWidget.roundTextCenter:setTopBottom(false, true, RoundStatusWidget.chalkCenterTop, RoundStatusWidget.chalkCenterTop + CoD.RoundStatus.RoundCenterHeight) + RoundStatusWidget.roundTextCenter:setFont(CoD.fonts[CoD.RoundStatus.ChalkFontName]) + RoundStatusWidget.roundTextCenter:setAlignment(LUI.Alignment.Center) + RoundStatusWidget.roundTextCenter:setAlpha(0) + RoundStatusWidget.roundTextCenter:registerEventHandler("transition_complete_first_round", CoD.RoundStatus.ShowFirstRoundFinish) + RoundStatusWidget.roundTextCenter:registerEventHandler("transition_complete_idle", CoD.RoundStatus.ShowFirstRoundTextCenterIdleFinish) + RoundStatusWidget.roundContainer:addElement(RoundStatusWidget.roundTextCenter) + RoundStatusWidget.roundText = LUI.UIText.new() + RoundStatusWidget.roundText:setLeftRight(true, false, CoD.RoundStatus.TextLeftOffset, CoD.RoundStatus.TextLeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundText:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundText:setFont(CoD.fonts[CoD.RoundStatus.ChalkFontName]) + RoundStatusWidget.roundText:setAlpha(0) + RoundStatusWidget.roundText:registerEventHandler("transition_complete_first_round", CoD.RoundStatus.ShowFirstRoundFinish) + RoundStatusWidget.roundText:registerEventHandler("transition_complete_idle", CoD.RoundStatus.ShowFirstRoundTextIdleFinish) + RoundStatusWidget.roundText:registerEventHandler("transition_complete_round_switch_show", CoD.RoundStatus.RoundSwitchShowFinish) + RoundStatusWidget.roundText:registerEventHandler("transition_complete_round_switch_hide", CoD.RoundStatus.RoundSwitchHideFinish) + RoundStatusWidget.roundContainer:addElement(RoundStatusWidget.roundText) + RoundStatusWidget.roundChalk1 = LUI.UIImage.new() + RoundStatusWidget.roundChalk1:setLeftRight(true, false, CoD.RoundStatus.LeftOffset, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk1:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[1]) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk1:registerEventHandler("transition_complete_first_round", CoD.RoundStatus.ShowFirstRoundFinish) + RoundStatusWidget.roundChalk1:registerEventHandler("transition_complete_idle", CoD.RoundStatus.ShowFirstRoundChalk1IdleFinish) + RoundStatusWidget.roundChalk1:registerEventHandler("transition_complete_round_switch_show", CoD.RoundStatus.RoundSwitchShowFinish) + RoundStatusWidget.roundChalk1:registerEventHandler("transition_complete_round_switch_hide", CoD.RoundStatus.RoundSwitchHideFinish) + RoundStatusWidget.roundContainer:addElement(RoundStatusWidget.roundChalk1) + RoundStatusWidget.roundChalk2 = LUI.UIImage.new() + RoundStatusWidget.roundChalk2:setLeftRight(true, false, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundChalk2:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[1]) + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundChalk2:registerEventHandler("transition_complete_first_round", CoD.RoundStatus.ShowFirstRoundFinish) + RoundStatusWidget.roundChalk2:registerEventHandler("transition_complete_idle", CoD.RoundStatus.ShowFirstRoundChalk2IdleFinish) + RoundStatusWidget.roundChalk2:registerEventHandler("transition_complete_round_switch_show", CoD.RoundStatus.RoundSwitchShowFinish) + RoundStatusWidget.roundChalk2:registerEventHandler("transition_complete_round_switch_hide", CoD.RoundStatus.RoundSwitchHideFinish) + RoundStatusWidget.roundContainer:addElement(RoundStatusWidget.roundChalk2) + RoundStatusWidget.factionIcon = LUI.UIImage.new() + RoundStatusWidget.factionIcon:setLeftRight(true, false, CoD.RoundStatus.FactionIconLeftOffset, CoD.RoundStatus.FactionIconLeftOffset + CoD.RoundStatus.FactionIconSize) + RoundStatusWidget.factionIcon:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.FactionIconSize) + RoundStatusWidget.factionIcon:setAlpha(0) + RoundStatusWidget.scaleContainer:addElement(RoundStatusWidget.factionIcon) + RoundStatusWidget:registerEventHandler("hud_update_refresh", CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_HUD_VISIBLE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_PLAYER_IN_AFTERLIFE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_EMP_ACTIVE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_UI_ACTIVE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SPECTATING_CLIENT, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_SCOREBOARD_OPEN, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_VEHICLE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_GUIDED_MISSILE, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_SCOPED, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_IS_FLASH_BANGED, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_bit_" .. CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN, CoD.RoundStatus.UpdateVisibility) + RoundStatusWidget:registerEventHandler("hud_update_rounds_played", CoD.RoundStatus.UpdateRoundsPlayed) + RoundStatusWidget:registerEventHandler("hud_update_team_change", CoD.RoundStatus.UpdateTeamChange) + RoundStatusWidget:registerEventHandler("sq_tpo_special_round_active", CoD.RoundStatus.UpdateSpecialRound) + RoundStatusWidget.timebombOverride = false + if CoD.Zombie.IsDLCMap(CoD.Zombie.DLC3Maps) then + RoundStatusWidget:registerEventHandler("time_bomb_lua_override", CoD.RoundStatus.TimeBombRoundAnimationOverride) + end + RoundStatusWidget.visible = true + return RoundStatusWidget +end + +CoD.RoundStatus.UpdateVisibility = function(RoundStatusWidget, ClientInstance) + local f2_local0 = ClientInstance.controller + if UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_HUD_VISIBLE) == 1 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IS_PLAYER_IN_AFTERLIFE) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_EMP_ACTIVE) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_DEMO_CAMERA_MODE_MOVIECAM) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_DEMO_ALL_GAME_HUD_HIDDEN) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_UI_ACTIVE) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IN_KILLCAM) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_SCOREBOARD_OPEN) == 0 and (not CoD.IsShoutcaster(f2_local0) or CoD.ExeProfileVarBool(f2_local0, "shoutcaster_teamscore")) and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IN_GUIDED_MISSILE) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IN_REMOTE_KILLSTREAK_STATIC) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IS_SCOPED) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IN_VEHICLE) == 0 and UIExpression.IsVisibilityBitSet(f2_local0, CoD.BIT_IS_FLASH_BANGED) == 0 then + if not RoundStatusWidget.visible then + RoundStatusWidget:setAlpha(1) + RoundStatusWidget.visible = true + end + elseif RoundStatusWidget.visible then + RoundStatusWidget:setAlpha(0) + RoundStatusWidget.visible = nil + end +end + +CoD.RoundStatus.UpdateRoundsPlayed = function(RoundStatusWidget, ClientInstance) + if RoundStatusWidget.gameType == CoD.Zombie.GAMETYPE_ZCLASSIC or RoundStatusWidget.gameType == CoD.Zombie.GAMETYPE_ZSTANDARD or RoundStatusWidget.gameType == CoD.Zombie.GAMETYPE_ZGRIEF then + CoD.RoundStatus.RoundPulseTimes = math.ceil(CoD.RoundStatus.RoundPulseTimesMin + (1 - math.min(ClientInstance.roundsPlayed, CoD.RoundStatus.RoundMax) / CoD.RoundStatus.RoundMax) * CoD.RoundStatus.RoundPulseTimesDelta) + if RoundStatusWidget.startRound == ClientInstance.roundsPlayed then + if ClientInstance.wasDemoJump == false and RoundStatusWidget.timebombOverride == false and CoD.Zombie.AllowRoundAnimation == 1 then + CoD.RoundStatus.ShowFirstRound(RoundStatusWidget, ClientInstance.roundsPlayed) + else + RoundStatusWidget.roundChalk1:setLeftRight(true, false, CoD.RoundStatus.LeftOffset, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk1:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + if not ClientInstance.wasDemoJump then + ClientInstance.wasDemoJump = RoundStatusWidget.timebombOverride == true + end + CoD.RoundStatus.StartNewRound(RoundStatusWidget, ClientInstance.roundsPlayed, ClientInstance.wasDemoJump) + end + elseif RoundStatusWidget.startRound < ClientInstance.roundsPlayed then + RoundStatusWidget.roundChalk1:setLeftRight(true, false, CoD.RoundStatus.LeftOffset, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk1:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk2:setLeftRight(true, false, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundChalk2:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundText:setLeftRight(true, false, CoD.RoundStatus.TextLeftOffset, CoD.RoundStatus.TextLeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundText:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + if not ClientInstance.wasDemoJump then + ClientInstance.wasDemoJump = RoundStatusWidget.timebombOverride == true + end + CoD.RoundStatus.StartNewRound(RoundStatusWidget, ClientInstance.roundsPlayed, ClientInstance.wasDemoJump) + else + CoD.RoundStatus.HideAllRoundIcons(RoundStatusWidget, ClientInstance) + end + else + CoD.RoundStatus.HideAllRoundIcons(RoundStatusWidget, ClientInstance) + end +end + +CoD.RoundStatus.ShowFirstRound = function(RoundStatusWidget, FirstRoundValue) + local f4_local0 = Engine.Localize("ZOMBIE_ROUND") + local f4_local1_1, f4_local1_2, f4_local1_3, f4_local1_4 = GetTextDimensions(f4_local0, CoD.fonts[CoD.RoundStatus.ChalkFontName], CoD.RoundStatus.ChalkSize) + local f4_local2 = f4_local1_3 + local f4_local3 = RoundStatusWidget.safeAreaWidth * 0.5 + local f4_local4 = RoundStatusWidget.chalkCenterTop + RoundStatusWidget.roundTextCenter:setLeftRight(false, true, f4_local3 + CoD.RoundStatus.ChalkSize * -0.5 - f4_local2, f4_local3 + CoD.RoundStatus.ChalkSize * 0.5 + f4_local2) + RoundStatusWidget.roundTextCenter:setText(f4_local0) + RoundStatusWidget.roundTextCenter:setAlpha(1) + RoundStatusWidget.roundTextCenter:beginAnimation("first_round", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget.roundTextCenter:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + if FirstRoundValue <= 5 then + if FirstRoundValue == 1 then + local f4_local5 = f4_local3 - 15 + RoundStatusWidget.roundChalk1:setLeftRight(true, false, f4_local5, f4_local5 + CoD.RoundStatus.ChalkSize) + else + RoundStatusWidget.roundChalk1:setLeftRight(true, false, f4_local3 + CoD.RoundStatus.ChalkSize * -0.5, f4_local3 + CoD.RoundStatus.ChalkSize * 0.5) + end + RoundStatusWidget.roundChalk1:setTopBottom(false, true, f4_local4 + CoD.RoundStatus.ChalkSize, f4_local4 + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[FirstRoundValue]) + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:beginAnimation("first_round", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk2:completeAnimation() + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundText:completeAnimation() + RoundStatusWidget.roundText:setAlpha(0) + elseif FirstRoundValue <= 10 then + RoundStatusWidget.roundChalk1:setLeftRight(true, false, f4_local3 - CoD.RoundStatus.ChalkSize, f4_local3) + RoundStatusWidget.roundChalk1:setTopBottom(false, true, f4_local4 + CoD.RoundStatus.ChalkSize, f4_local4 + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[5]) + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:beginAnimation("first_round", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk2:setLeftRight(true, false, f4_local3, f4_local3 + CoD.RoundStatus.ChalkSize) + RoundStatusWidget.roundChalk2:setTopBottom(false, true, f4_local4 + CoD.RoundStatus.ChalkSize, f4_local4 + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[FirstRoundValue - 5]) + RoundStatusWidget.roundChalk2:setAlpha(1) + RoundStatusWidget.roundChalk2:beginAnimation("first_round", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + else + local f4_local5_1, f4_local5_2, f4_local5_3, f4_local5_4 = GetTextDimensions(FirstRoundValue, CoD.fonts[CoD.RoundStatus.ChalkFontName], CoD.RoundStatus.ChalkSize) + local f4_local6 = f4_local5_3 + RoundStatusWidget.roundText:setLeftRight(true, false, f4_local3 + CoD.RoundStatus.ChalkSize * -0.5 - f4_local6, f4_local3 + CoD.RoundStatus.ChalkSize * 0.5 + f4_local6) + RoundStatusWidget.roundText:setTopBottom(false, true, f4_local4 + CoD.RoundStatus.ChalkSize, f4_local4 + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget.roundText:setText(FirstRoundValue) + RoundStatusWidget.roundText:setAlignment(LUI.Alignment.Center) + RoundStatusWidget.roundText:setAlpha(1) + RoundStatusWidget.roundText:beginAnimation("first_round", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget.roundText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + end +end + +CoD.RoundStatus.ShowFirstRoundFinish = function(RoundStatusWidget, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundStatusWidget:beginAnimation("idle", CoD.RoundStatus.FirstRoundIdleDuration) + end +end + +CoD.RoundStatus.ShowFirstRoundTextCenterIdleFinish = function(RoundStatusWidget, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundStatusWidget:beginAnimation("fade_out", CoD.RoundStatus.FirstRoundDuration) + RoundStatusWidget:setAlpha(0) + end +end + +CoD.RoundStatus.ShowFirstRoundTextIdleFinish = function(RoundStatusWidget, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundStatusWidget:beginAnimation("fall_down", CoD.RoundStatus.FirstRoundFallDuration) + RoundStatusWidget:setLeftRight(true, false, CoD.RoundStatus.LeftOffset, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + end +end + +CoD.RoundStatus.ShowFirstRoundChalk1IdleFinish = function(RoundStatusWidget, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundStatusWidget:beginAnimation("fall_down", CoD.RoundStatus.FirstRoundFallDuration) + RoundStatusWidget:setLeftRight(true, false, CoD.RoundStatus.LeftOffset, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize) + RoundStatusWidget:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + end +end + +CoD.RoundStatus.ShowFirstRoundChalk2IdleFinish = function(RoundStatusWidget, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundStatusWidget:beginAnimation("fall_down", CoD.RoundStatus.FirstRoundFallDuration) + RoundStatusWidget:setLeftRight(true, false, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize, CoD.RoundStatus.LeftOffset + CoD.RoundStatus.ChalkSize * 2) + RoundStatusWidget:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.ChalkSize) + end +end + +CoD.RoundStatus.StartNewRound = function(RoundStatusWidget, RoundsPlayed, WasDemoJump) + if RoundsPlayed <= 5 then + RoundStatusWidget.roundChalk1:setAlpha(1) + if WasDemoJump == true then + RoundStatusWidget.roundChalk1:completeAnimation() + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[RoundsPlayed]) + else + if RoundsPlayed > 1 then + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[RoundsPlayed - 1]) + end + RoundStatusWidget.roundChalk1.pulseTimes = 0 + RoundStatusWidget.roundChalk1.material = CoD.RoundStatus.Chalks[RoundsPlayed] + RoundStatusWidget.roundChalk1.showInLastPulse = true + RoundStatusWidget.roundChalk1.showInPreviousPulses = true + RoundStatusWidget.roundChalk1:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + end + RoundStatusWidget.roundChalk2:completeAnimation() + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundText:completeAnimation() + RoundStatusWidget.roundText:setAlpha(0) + elseif RoundsPlayed == 6 then + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[5]) + if WasDemoJump == true then + RoundStatusWidget.roundChalk2:setAlpha(1) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[1]) + else + RoundStatusWidget.roundChalk1.pulseTimes = 0 + RoundStatusWidget.roundChalk1.material = CoD.RoundStatus.Chalks[5] + RoundStatusWidget.roundChalk1.showInLastPulse = true + RoundStatusWidget.roundChalk1.showInPreviousPulses = true + RoundStatusWidget.roundChalk1:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + RoundStatusWidget.roundChalk2.pulseTimes = 0 + RoundStatusWidget.roundChalk2.material = CoD.RoundStatus.Chalks[RoundsPlayed - 5] + RoundStatusWidget.roundChalk2.showInLastPulse = true + RoundStatusWidget.roundChalk2.showInPreviousPulses = false + RoundStatusWidget.roundChalk2:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + end + RoundStatusWidget.roundText:completeAnimation() + RoundStatusWidget.roundText:setAlpha(0) + elseif RoundsPlayed <= 10 then + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[5]) + RoundStatusWidget.roundChalk2:setAlpha(1) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[RoundsPlayed - 5 - 1]) + if WasDemoJump == true then + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk2:setAlpha(1) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[RoundsPlayed - 5]) + else + RoundStatusWidget.roundChalk1.pulseTimes = 0 + RoundStatusWidget.roundChalk1.material = CoD.RoundStatus.Chalks[5] + RoundStatusWidget.roundChalk1.showInLastPulse = true + RoundStatusWidget.roundChalk1.showInPreviousPulses = true + RoundStatusWidget.roundChalk1:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + RoundStatusWidget.roundChalk2.pulseTimes = 0 + RoundStatusWidget.roundChalk2.material = CoD.RoundStatus.Chalks[RoundsPlayed - 5] + RoundStatusWidget.roundChalk2.showInLastPulse = true + RoundStatusWidget.roundChalk2.showInPreviousPulses = true + RoundStatusWidget.roundChalk2:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + end + RoundStatusWidget.roundText:completeAnimation() + RoundStatusWidget.roundText:setAlpha(0) + elseif RoundsPlayed == 11 then + RoundStatusWidget.roundChalk1:setAlpha(1) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk1:setImage(CoD.RoundStatus.Chalks[5]) + RoundStatusWidget.roundChalk2:setAlpha(1) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundChalk2:setImage(CoD.RoundStatus.Chalks[5]) + if WasDemoJump == true then + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundText:setAlpha(1) + RoundStatusWidget.roundText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundText:setText(RoundsPlayed) + else + RoundStatusWidget.roundChalk1.pulseTimes = 0 + RoundStatusWidget.roundChalk1.material = CoD.RoundStatus.Chalks[5] + RoundStatusWidget.roundChalk1.showInLastPulse = false + RoundStatusWidget.roundChalk1.showInPreviousPulses = true + RoundStatusWidget.roundChalk1:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk1:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + RoundStatusWidget.roundChalk2.pulseTimes = 0 + RoundStatusWidget.roundChalk2.material = CoD.RoundStatus.Chalks[5] + RoundStatusWidget.roundChalk2.showInLastPulse = false + RoundStatusWidget.roundChalk2.showInPreviousPulses = true + RoundStatusWidget.roundChalk2:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundChalk2:setAlpha(0) + RoundStatusWidget.roundChalk2:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + RoundStatusWidget.roundText.pulseTimes = 0 + RoundStatusWidget.roundText.material = RoundsPlayed + RoundStatusWidget.roundText.showInLastPulse = true + RoundStatusWidget.roundText.showInPreviousPulses = false + RoundStatusWidget.roundText:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundText:setAlpha(0) + RoundStatusWidget.roundText:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + end + else + RoundStatusWidget.roundText:setAlpha(1) + RoundStatusWidget.roundText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + RoundStatusWidget.roundText:setText(RoundsPlayed - 1) + if WasDemoJump == true then + RoundStatusWidget.roundText:setText(RoundsPlayed) + else + RoundStatusWidget.roundText.pulseTimes = 0 + RoundStatusWidget.roundText.material = RoundsPlayed + RoundStatusWidget.roundText.showInLastPulse = true + RoundStatusWidget.roundText.showInPreviousPulses = true + RoundStatusWidget.roundText:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + RoundStatusWidget.roundText:setAlpha(0) + RoundStatusWidget.roundText:setRGB(CoD.RoundStatus.AlternatePulseColor.r, CoD.RoundStatus.AlternatePulseColor.g, CoD.RoundStatus.AlternatePulseColor.b) + end + RoundStatusWidget.roundChalk1:completeAnimation() + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk2:completeAnimation() + RoundStatusWidget.roundChalk2:setAlpha(0) + end +end + +CoD.RoundStatus.RoundSwitchShowFinish = function(RoundText, ClientInstance) + if ClientInstance.interrupted ~= true then + RoundText.pulseTimes = RoundText.pulseTimes + 1 + if RoundText.pulseTimes <= CoD.RoundStatus.RoundPulseTimes then + if RoundText.pulseTimes > CoD.RoundStatus.RoundPulseTimes - 1 then + RoundText:beginAnimation("round_switch_hide", CoD.RoundStatus.FirstRoundDuration) + RoundText:setRGB(CoD.RoundStatus.DefaultColor.r, CoD.RoundStatus.DefaultColor.g, CoD.RoundStatus.DefaultColor.b) + else + RoundText:beginAnimation("round_switch_hide", CoD.RoundStatus.RoundPulseDuration) + end + RoundText:setAlpha(0) + end + end +end + +CoD.RoundStatus.RoundSwitchHideFinish = function(RoundText, ClientInstance) + if ClientInstance.interrupted ~= true then + local RoundNumberIsVisible = 1 + if RoundText.pulseTimes > CoD.RoundStatus.RoundPulseTimes - 1 then + if type(RoundText.material) == "number" then + RoundText:setText(RoundText.material) + else + RoundText:setImage(RoundText.material) + end + if RoundText.showInLastPulse == false then + RoundNumberIsVisible = 0 + end + RoundText:beginAnimation("round_switch_show", CoD.RoundStatus.FirstRoundDuration) + else + if RoundText.showInPreviousPulses == false then + RoundNumberIsVisible = 0 + end + RoundText:beginAnimation("round_switch_show", CoD.RoundStatus.RoundPulseDuration) + end + RoundText:setAlpha(RoundNumberIsVisible) + end +end + +CoD.RoundStatus.UpdateTeamChange = function(RoundStatusWidget, ClientInstance) + if RoundStatusWidget.team ~= ClientInstance.team and type(ClientInstance.team) == "number" and ClientInstance.team < CoD.TEAM_SPECTATOR then + RoundStatusWidget.team = ClientInstance.team + if RoundStatusWidget.team ~= CoD.TEAM_FREE then + local FactionTeam = Engine.GetFactionForTeam(ClientInstance.team) + if FactionTeam ~= "" and RoundStatusWidget.gameTypeGroup == CoD.Zombie.GAMETYPEGROUP_ZENCOUNTER then + if CoD.Zombie.GAMETYPE_ZCLEANSED == Dvar.ui_gametype:get() and RoundStatusWidget.team == CoD.TEAM_AXIS then + FactionTeam = "zombie" + elseif CoD.Zombie.GAMETYPE_ZMEAT == Dvar.ui_gametype:get() and RoundStatusWidget.team == CoD.TEAM_AXIS then + FactionTeam = "cia" + end + RoundStatusWidget.factionIcon:setImage(RegisterMaterial("faction_" .. FactionTeam)) + RoundStatusWidget.factionIcon:setAlpha(1) + else + RoundStatusWidget.factionIcon:setAlpha(0) + end + else + RoundStatusWidget.factionIcon:setAlpha(0) + end + end +end + +CoD.RoundStatus.HideAllRoundIcons = function(RoundStatusWidget, ClientInstance) + RoundStatusWidget.roundTextCenter:setAlpha(0) + RoundStatusWidget.roundText:setAlpha(0) + RoundStatusWidget.roundChalk1:setAlpha(0) + RoundStatusWidget.roundChalk2:setAlpha(0) +end + +CoD.RoundStatus.UpdateSpecialRound = function(RoundStatusWidget, ClientInstance) + if ClientInstance.newValue == 1 then + if not RoundStatusWidget.specialRoundIcon then + RoundStatusWidget.specialRoundIcon = LUI.UIImage.new() + RoundStatusWidget.specialRoundIcon:setLeftRight(true, false, CoD.RoundStatus.SpecialLeftOffset, CoD.RoundStatus.SpecialLeftOffset + CoD.RoundStatus.SpecialRoundIconSize) + RoundStatusWidget.specialRoundIcon:setTopBottom(false, true, CoD.RoundStatus.ChalkTop, CoD.RoundStatus.ChalkTop + CoD.RoundStatus.SpecialRoundIconSize / 2) + RoundStatusWidget.specialRoundIcon:setImage(RegisterMaterial("hud_zm_chalk_infinity")) + RoundStatusWidget.specialRoundIcon:setAlpha(0) + RoundStatusWidget.roundIconContainer:addElement(RoundStatusWidget.specialRoundIcon) + end + RoundStatusWidget.specialRoundIcon:beginAnimation("fade_in", 1000) + RoundStatusWidget.specialRoundIcon:setAlpha(1) + RoundStatusWidget.roundContainer:beginAnimation("fade_out", 500) + RoundStatusWidget.roundContainer:setAlpha(0) + else + RoundStatusWidget.specialRoundIcon:beginAnimation("fade_out", 500) + RoundStatusWidget.specialRoundIcon:setAlpha(0) + RoundStatusWidget.roundContainer:beginAnimation("fade_in", 1000) + RoundStatusWidget.roundContainer:setAlpha(1) + end +end + +CoD.RoundStatus.TimeBombRoundAnimationOverride = function(RoundStatusWidget, ClientInstance) + if ClientInstance.newValue == 1 then + RoundStatusWidget.timebombOverride = true + else + RoundStatusWidget.timebombOverride = false + end +end diff --git a/zone_source/zm_prison.zone b/zone_source/zm_prison.zone index c55adf59..898e7e20 100644 --- a/zone_source/zm_prison.zone +++ b/zone_source/zm_prison.zone @@ -4,6 +4,17 @@ include,includes/mapents/so_zencounter_zm_prison +image,chalkmarks_hellcatraz_1 +material,chalkmarks_hellcatraz_1 +image,chalkmarks_hellcatraz_2 +material,chalkmarks_hellcatraz_2 +image,chalkmarks_hellcatraz_3 +material,chalkmarks_hellcatraz_3 +image,chalkmarks_hellcatraz_4 +material,chalkmarks_hellcatraz_4 +image,chalkmarks_hellcatraz_5 +material,chalkmarks_hellcatraz_5 + weapon,knife_zm_alcatraz weapon,spoon_zm_alcatraz weapon,spork_zm_alcatraz