List of commits:
Subject Hash Author Date (UTC)
feat(clearcasting): Remove individual class profiles c7b4d8cf1ad3885e8f0bd84f33082a29330f1f18 Vladyslav Bondarenko 2021-11-05 18:41:10
fix(clearcasting): Correct subset button order when first allocated f3b52da4b40e436e7dc5fc5bda8c4cdbf2c3f4a7 Vladyslav Bondarenko 2021-11-05 13:15:09
fix(clearcasting): Subset button clickable and updates slower ec4768e7b925e52126140788fe866070ee3796c3 Vladyslav Bondarenko 2021-11-05 13:05:13
fix(clearcasting): Improve subset buttons readabilitiy a86de677ad80a16372b76c67d1f8baa457f72faa Vladyslav Bondarenko 2021-11-04 22:23:53
fix(clearcasting)!: Export createSubset correctly e4a0fdb48ac3e3e63d7e763460fb6ca2d95a1f9f Vladyslav Bondarenko 2021-11-04 22:02:35
feat(choir): Render debuff type color for subset cb13282dcb4c42732eccf46821d9ff49e6f8bdff Vladyslav Bondarenko 2021-11-04 20:12:49
fix(choir)!: Subset auras update in combat 081493e96ee7c72371f8770d8bbdc9b108db53ac Vladyslav Bondarenko 2021-11-04 19:02:16
feat(choir)!: Add alternative section creation 1aac7826a961509021679db26b95071edba77ad8 Vladyslav Bondarenko 2021-11-04 17:36:05
feat(clearcasting): Add death knight indicators 5c42814210b355e6de601faaf8e173222995cfa6 Vladyslav Bondarenko 2021-10-30 12:23:43
feat!: Show spell tooltip on indicator mouseover dd69f46f1522f49ce942d8e0b3756c609471be7a Vladyslav Bondarenko 2021-10-13 01:12:08
feat!: Indicator grouping feature df7e0579a51388dba73bc5d92b3d04369bb0e426 Vladyslav Bondarenko 2021-10-13 00:17:28
feat!: Redo the core functionality 085af1bc403b3a9d2d4b99ec460d67889239fabd Vladyslav Bondarenko 2021-07-09 11:15:31
feat: Track additional auras 958e52f9808d64ebb816663d2aa22a4eb39a2068 Vladyslav Bondarenko 2021-01-22 20:28:13
fix!: No longer crash on unknown spell 65061085f0f55b75910c9ed4d8249b1e8e30f9ee Vladyslav Bondarenko 2020-12-11 17:31:16
fix: Render indicators properly on first login bf102cc749cc23d3769a82f10fe93a05afc5277f Vladyslav Bondarenko 2020-12-11 14:25:11
feat: Add Serendipity and Surge of Light indicators ba1d0f32a4b8f4f5d4e2730f0a4e409e23b52974 Vladyslav Bondarenko 2020-12-10 16:19:55
Initial commit 9b3df418e373218125fec12271084afebb11cfc2 Vladyslav Bondarenko 2020-12-04 10:27:24
Commit c7b4d8cf1ad3885e8f0bd84f33082a29330f1f18 - feat(clearcasting): Remove individual class profiles
Author: Vladyslav Bondarenko
Author date (UTC): 2021-11-05 18:41
Committer name: Vladyslav Bondarenko
Committer date (UTC): 2021-11-05 18:41
Parent(s): f3b52da4b40e436e7dc5fc5bda8c4cdbf2c3f4a7
Signing key:
Tree: 5ea69548690e20e2f025e4018c0d1365a1616767
File Lines added Lines deleted
clearcasting.lua 26 319
File clearcasting.lua changed (mode: 100644) (index 29b57fd..a342677)
... ... local function createSubset(parentFrame, frameDesignation, unitDesignation, filt
974 974 end end
975 975 end end
976 976
977 if ClearcastingDebugFlag then
978 local background = subsetFrame:CreateTexture(subsetFrame:GetName() .. 'Background', 'BACKGROUND')
979 background:SetAllPoints()
980 background:SetTexture(0, 0, 0)
981 subsetFrame.background = background
982 end
983
977 984 subsetFrame.unit = unitDesignation subsetFrame.unit = unitDesignation
978 985 subsetFrame.filter = filterDescriptor subsetFrame.filter = filterDescriptor
979 986 subsetFrame:RegisterEvent('PARTY_CONVERTED_TO_RAID') subsetFrame:RegisterEvent('PARTY_CONVERTED_TO_RAID')
 
... ... local function createSubset(parentFrame, frameDesignation, unitDesignation, filt
992 999 return subsetFrame return subsetFrame
993 1000 end end
994 1001
995 local function initSpellActivationOverlayAny(rootFrame)
996 local margin = rootFrame:GetWidth() / 2 - 28 * 5 / 2
997 local d0 = createIndicator(rootFrame, 'Magic', 'player', 'HARMFUL')
998 d0:SetPoint('BOTTOMLEFT', margin + 28 * 0, 64)
999 local d1 = createIndicator(rootFrame, 'Poison', 'player', 'HARMFUL')
1000 d1:SetPoint('BOTTOMLEFT', margin + 28 * 1, 64)
1001 local d2 = createIndicator(rootFrame, 'Disease', 'player', 'HARMFUL')
1002 d2:SetPoint('BOTTOMLEFT', margin + 28 * 2, 64)
1003 local d3 = createIndicator(rootFrame, 'Curse', 'player', 'HARMFUL')
1004 d3:SetPoint('BOTTOMLEFT', margin + 28 * 3, 64)
1005 local d4 = createIndicator(rootFrame, 'HARMFUL', 'player', 'HARMFUL')
1006 d4:SetPoint('BOTTOMLEFT', margin + 28 * 4, 64)
1007
1008 local subset0 = createSubset(rootFrame, 'ClearcastingPlayerSubset', 'player', 'PLAYER HELPFUL',
1009 6, 1)
1010 subset0:SetPoint('CENTER', 144 * 2, 144 * 2)
1011
1012 local subset1 = createSubset(rootFrame, 'ClearcastingPlayerSubset', 'target', 'PLAYER HELPFUL',
1013 6, 1)
1014 subset1:SetPoint('CENTER', -144 * 2, 144 * 2)
1015
1016 local subset2 = createSubset(rootFrame, 'ClearcastingPlayerSubset', 'target', 'HARMFUL',
1017 6, 1)
1018 subset2:SetPoint('CENTER', 0, 144 * 2)
1019 end
1020
1021 local function initSpellActivationOverlayDeathKnight(rootFrame)
1022 local _, classDesignation = UnitClass('player')
1023 if 'DEATHKNIGHT' ~= classDesignation then
1024 return
1025 end
1026
1027 local sectionWidth = 288
1028 local sectionHeight = 36
1029
1030 local s0 = createSection('ClearcastingDeathKnightFrame1', rootFrame, sectionWidth, sectionHeight)
1031 s0:SetPoint('BOTTOMLEFT', rootFrame:GetWidth() / 2 - sectionWidth / 2, 144)
1032 createIndicator(s0, 'Icebound Fortitude')
1033 createIndicator(s0, 'Anti-Magic Shell')
1034 createIndicator(s0, 'Anti-Magic Zone')
1035 createIndicator(s0, 'Vampiric Blood')
1036 createIndicator(s0, 'Icy Talons')
1037 createIndicator(s0, 'Killing Machine')
1038 createIndicator(s0, 'Freezing Fog')
1039 createIndicator(s0, 'Blade Barrier')
1040 createIndicator(s0, 'Horn of Winter')
1041 createIndicator(s0, 'Lichborne')
1042
1043 local s1 = createSection('ClearcastingDeathKnightFrame2', rootFrame, sectionWidth, sectionHeight)
1044 s1:SetPoint('BOTTOMLEFT', rootFrame:GetWidth() / 2 - sectionWidth / 2, 144 * 4)
1045 createIndicator(s1, 'Unholy Blight', 'target', 'PLAYER HARMFUL')
1046 createIndicator(s1, 'Frost Fever', 'target', 'PLAYER HARMFUL')
1047 createIndicator(s1, 'Blood Plague', 'target', 'PLAYER HARMFUL')
1048 createIndicator(s1, 'Heart Strike', 'target', 'PLAYER HARMFUL')
1049 createIndicator(s1, 'Chains of Ice', 'target', 'PLAYER HARMFUL')
1050 createIndicator(s1, 'Unholy Blight', 'target', 'PLAYER HARMFUL')
1051 createIndicator(s1, 'Icy Clutch', 'target', 'PLAYER HARMFUL')
1052 createIndicator(s1, 'Mark of Blood', 'target', 'PLAYER HARMFUL')
1053 createIndicator(s1, 'Strangulate', 'target', 'PLAYER HARMFUL')
1054 createIndicator(s1, 'Gnaw', 'target', 'PLAYER HARMFUL')
1055 createIndicator(s1, 'Death Grip', 'target', 'PLAYER HARMFUL')
1056 createIndicator(s1, 'Dark Command', 'target', 'PLAYER HARMFUL')
1057
1058 --[[createIndicator(s0, 'Hysteria')]]--
1059 end
1060
1061 local function initSpellActivationOverlayPaladin(rootFrame)
1062 local _, classDesignation = UnitClass('player')
1063 if 'PALADIN' ~= classDesignation then
1064 return
1065 end
1066
1067 --[[ row 1 ]]--
1068 local presenceSet = {
1069 'Concentration Aura',
1070 'Crusader Aura',
1071 'Devotion Aura',
1072 'Fire Resistance Aura',
1073 'Frost Resistance Aura',
1074 'Retribution Aura',
1075 'Shadow Resistance Aura',
1076 }
1077 createIndicator(rootFrame, presenceSet, 'player', 'PLAYER HELPFUL')
1078
1079 local sealSet = {
1080 'Seal of Command',
1081 'Seal of Corruption',
1082 'Seal of Light',
1083 'Seal of Righteousness',
1084 'Seal of Vengeance',
1085 'Seal of Wisdom',
1086 }
1087 createIndicator(rootFrame, sealSet, 'player', 'PLAYER HELPFUL')
1088
1089 local blessingSet = {
1090 'Blessing of Kings',
1091 'Blessing of Might',
1092 'Blessing of Sanctuary',
1093 'Blessing of Wisdom',
1094 'Greater Blessing of Kings',
1095 'Greater Blessing of Might',
1096 'Greater Blessing of Sanctuary',
1097 'Greater Blessing of Wisdom',
1098 }
1099 createIndicator(rootFrame, blessingSet, 'player', 'PLAYER HELPFUL')
1100
1101 createIndicator(rootFrame, 'Righteous Fury')
1102
1103 --[[ row 2 ]]--
1104 createIndicator(rootFrame, 'Divine Shield')
1105 createIndicator(rootFrame, 'Divine Protection')
1106 createIndicator(rootFrame, 'Hand of Protection')
1107 createIndicator(rootFrame, 'Avenging Wrath')
1108 --[[ row 3 ]]--
1109 createIndicator(rootFrame, 'Divine Favor')
1110 createIndicator(rootFrame, 'Divine Plea')
1111 createIndicator(rootFrame, 'Divine Illumination')
1112 createIndicator(rootFrame, 'Hand of Sacrifice')
1113 --[[ row 4 ]]--
1114 createIndicator(rootFrame, 'Judgements of the Pure')
1115 createIndicator(rootFrame, 'Light\'s Grace')
1116 createIndicator(rootFrame, 'Infusion of Light')
1117 createIndicator(rootFrame, 'Holy Shield')
1118 --[[ row 5 ]]--
1119 createIndicator(rootFrame, 53601, 'player', 'PLAYER HELPFUL')
1120 createIndicator(rootFrame, 58597, 'player', 'PLAYER HELPFUL')
1121 createIndicator(rootFrame, 'Flash of Light', 'player', 'PLAYER HELPFUL')
1122
1123 createIndicator(rootFrame, 58597, 'focus', 'HELPFUL')
1124 end
1125
1126 local function initSpellActivationOverlayWarlock(rootFrame)
1127 assert (rootFrame ~= nil)
1128
1129 local _, classDesignation = UnitClass('player')
1130 if 'WARLOCK' ~= classDesignation then
1131 return
1132 end
1133
1134 local sectionWidth = 128
1135 local sectionHeight = 64
1136
1137 local wf = createSection('ClearcastingWarlockFrame', rootFrame, sectionWidth, sectionHeight)
1138 wf:SetPoint('BOTTOMLEFT', rootFrame:GetWidth() / 2 - sectionWidth / 2, 0)
1139
1140 createIndicator(wf, 'Blood Fury')
1141 createIndicator(wf, 'Sacrifice')
1142 createIndicator(wf, 'Backlash')
1143 createIndicator(wf, 'Decimation')
1144 createIndicator(wf, 'Eradication')
1145 createIndicator(wf, 'Shadow Trance')
1146 createIndicator(wf, 'Nether Protection')
1147 createIndicator(wf, 'Shadow Ward')
1148
1149 --[[ Cumulative effects. Show effects that belong to user only. ]]--
1150 local t = {
1151 'Drain Soul',
1152 'Drain Life',
1153 'Corruption',
1154 'Haunt',
1155 'Immolate',
1156 'Seed of Corruption',
1157 'Unstable Affliction',
1158 'Shadow Embrace',
1159 }
1160
1161 --[[ Conflicting or overlapping effects. Show effects that belong to any player. ]]--
1162 local u = {
1163 --[[ Curse ]]--
1164 'Curse of Agony',
1165 'Curse of Exhaustion',
1166 'Curse of Weakness',
1167 'Curse of the Elements',
1168 'Curse of Tongues',
1169 'Hex',
1170 --[[ Magic ]]--
1171 'Shadow Mastery',
1172 'Entangling Roots',
1173 'Fear',
1174 'Polymorph',
1175 'Psychic Scream',
1176 'Spell Lock',
1177 'Counterspell',
1178 'Death Coil',
1179 'Howl of Terror',
1180 'Psychic Scream',
1181 --[[ Other ]]--
1182 'Concussion Blow',
1183 'Cyclone',
1184 }
1185
1186 local sft = createSection('ClearcastingWarlockFocusPlayerHarmful', rootFrame, sectionWidth, sectionHeight)
1187 local sfu = createSection('ClearcastingWarlockFocusHarmful', rootFrame, sectionWidth, sectionHeight)
1188 local spt = createSection('ClearcastingWarlockPetTargetPlayerHarmful', rootFrame, sectionWidth, sectionHeight)
1189 local spu = createSection('ClearcastingWarlockPetTargetHarmful', rootFrame, sectionWidth, sectionHeight)
1190 local stt = createSection('ClearcastingWarlockTargetPlayerHarmful', rootFrame, sectionWidth, sectionHeight)
1191 local stu = createSection('ClearcastingWarlockTargetHarmful', rootFrame, sectionWidth, sectionHeight)
1192
1193 local marginBottom = rootFrame:GetHeight() * 2 / 3
1194 local marginLeft = rootFrame:GetWidth()
1195 sft:SetPoint('BOTTOMLEFT', marginLeft - sectionWidth * 2, marginBottom + sectionHeight * 0)
1196 sfu:SetPoint('BOTTOMLEFT', marginLeft - sectionWidth * 2, marginBottom + sectionHeight * 1)
1197 spt:SetPoint('BOTTOMLEFT', marginLeft - sectionWidth * 1, marginBottom + sectionHeight * 0)
1198 spu:SetPoint('BOTTOMLEFT', marginLeft - sectionWidth * 1, marginBottom + sectionHeight * 1)
1199 stt:SetPoint('BOTTOMLEFT', sectionWidth, marginBottom + sectionHeight * 0)
1200 stu:SetPoint('BOTTOMLEFT', sectionWidth, marginBottom + sectionHeight * 1)
1201
1202 local p = 0
1203 while (p < #t) do
1204 p = p + 1
1205 local spellName = t[p]
1206 createIndicator(stt, spellName, 'target', 'PLAYER HARMFUL')
1207 createIndicator(sft, spellName, 'focus', 'PLAYER HARMFUL')
1208 createIndicator(spt, spellName, 'pettarget', 'PLAYER HARMFUL')
1209 end
1210
1211 local q = 0
1212 while (q < #u) do
1213 q = q + 1
1214 local spellName = u[q]
1215 createIndicator(stu, spellName, 'target', 'HARMFUL')
1216 createIndicator(sfu, spellName, 'focus', 'HARMFUL')
1217 createIndicator(spu, spellName, 'pettarget', 'HARMFUL')
1218 end
1219 end
1220
1221 local function initSpellActivationOverlayWarrior(rootFrame)
1222 local _, classDesignation = UnitClass('player')
1223 if 'WARRIOR' ~= classDesignation then
1224 return
1225 end
1226
1227 createIndicator(rootFrame, 'Shield Wall')
1228 createIndicator(rootFrame, 'Last Stand')
1229 createIndicator(rootFrame, 'Enraged Regeneration')
1230 createIndicator(rootFrame, 'Shield Block')
1231
1232 createIndicator(rootFrame, 'Recklessness')
1233 createIndicator(rootFrame, 'Retaliation')
1234 createIndicator(rootFrame, 'Berserker Rage')
1235 createIndicator(rootFrame, 'Bloodrage')
1236
1237 createIndicator(rootFrame, 'Blood Fury')
1238 createIndicator(rootFrame, 'Enrage')
1239 createIndicator(rootFrame, 'Glyph of Blocking')
1240 createIndicator(rootFrame, 'Sword and Board')
1241
1242 local x = UIParent:GetWidth() / 2 - 28 * 10 / 2
1243 local y = 640
1244
1245 local f0 = createIndicator(rootFrame, 'Concussion Blow', 'target', 'PLAYER HARMFUL')
1246 f0:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 0, y)
1247
1248 local f1 = createIndicator(rootFrame, 'Shockwave', 'target', 'PLAYER HARMFUL')
1249 f1:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 1, y)
1250
1251 local f2 = createIndicator(rootFrame, 'Hamstring', 'target', 'PLAYER HARMFUL')
1252 f2:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 2, y)
1253
1254 local f3 = createIndicator(rootFrame, 'Piercing Howl', 'target', 'PLAYER HARMFUL')
1255 f3:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 3, y)
1256
1257 local f4 = createIndicator(rootFrame, 'Gag Order', 'target', 'PLAYER HARMFUL')
1258 f4:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 4, y)
1259
1260 local f5 = createIndicator(rootFrame, 'Disarm', 'target', 'PLAYER HARMFUL')
1261 f5:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 5, y)
1262
1263 local f6 = createIndicator(rootFrame, 'Intimidating Shout', 'target', 'PLAYER HARMFUL')
1264 f6:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 6, y)
1265
1266 local f7 = createIndicator(rootFrame, 'Sunder Armor', 'target', 'PLAYER HARMFUL')
1267 f7:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 7, y)
1268
1269 local f8 = createIndicator(rootFrame, 'Taunt', 'target', 'PLAYER HARMFUL')
1270 f8:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 8, y)
1271
1272 local f9 = createIndicator(rootFrame, 'Mocking Blow', 'target', 'PLAYER HARMFUL')
1273 f9:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 9, y)
1274
1275 local f10 = createIndicator(rootFrame, 'Challenging Shout', 'target', 'PLAYER HARMFUL')
1276 f10:SetPoint('BOTTOMLEFT', UIParent, 'BOTTOMLEFT', x + 28 * 10, y)
1277 end
1002 local function initSpellActivationOverlay(rootFrame)
1003 --[[ Hide the native buff frame ]]--
1004 BuffFrame:Hide()
1278 1005
1279 local function initSpellActivationOverlayPriest(rootFrame)
1280 assert (rootFrame ~= nil)
1006 local helpSubset = createSubset(rootFrame, 'ClearcastingSubsetPlayerHelp', 'player', 'HELPFUL',
1007 12, 4)
1008 helpSubset:SetPoint('TOPRIGHT', rootFrame, 'TOPRIGHT', 0, 0)
1281 1009
1282 local sectionWidth = 288
1283 local sectionHeight = 36
1010 local harmSubset = createSubset(rootFrame, 'ClearcastingSubsetPlayerHarm', 'player', 'HARMFUL',
1011 12, 4)
1012 harmSubset:SetPoint('TOPLEFT', rootFrame, 'TOPLEFT', 0, 0)
1284 1013
1285 local s0 = createSection('ClearcastingPriestFrame1', rootFrame, sectionWidth, sectionHeight)
1286 s0:SetPoint('BOTTOMLEFT', rootFrame:GetWidth() / 2 - sectionWidth / 2, 144)
1287 local s1 = createSection('ClearcastingPriestFrame2', rootFrame, sectionWidth, sectionHeight)
1288 s1:SetPoint('BOTTOMLEFT', rootFrame:GetWidth() / 2 - sectionWidth / 2, 144 * 4)
1014 local targetHelpSubset = createSubset(rootFrame, 'ClearcastingSubsetTargetHelp', 'target', 'HELPFUL',
1015 4, 1)
1016 targetHelpSubset:SetPoint('CENTER', rootFrame,
1017 'CENTER', 0, rootFrame:GetHeight() / 3)
1289 1018
1290 local s = {s0, s1}
1291 local t = {'player', 'target'}
1292 local i = 0
1293 while (i < #t) do
1294 i = i + 1
1295 local section = s[i]
1296 assert (section ~= nil)
1297 local unitDesignation = t[i]
1298 assert (unitDesignation ~= nil)
1299 createIndicator(section, 'Power Word: Shield', unitDesignation, 'PLAYER HELPFUL')
1300 createIndicator(section, 'Renew', unitDesignation, 'PLAYER HELPFUL')
1301 createIndicator(section, 'Weakened Soul', unitDesignation, 'HARMFUL')
1302 createIndicator(section, 'Psychic Scream', unitDesignation, 'HARMFUL')
1303 end
1304 createIndicator(s0, 'Surge of Light', 'player', 'PLAYER HELPFUL')
1305 createIndicator(s0, 'Serendipity', 'player', 'PLAYER HELPFUL')
1306 createIndicator(s0, 'Borrowed Time', 'player', 'PLAYER HELPFUL')
1307 end
1019 local targetHarmSubset = createSubset(rootFrame, 'ClearcastingSubsetTargetHarm', 'target', 'HARMFUL',
1020 4, 1)
1021 targetHarmSubset:SetPoint('CENTER', rootFrame,
1022 'CENTER', 0, rootFrame:GetHeight() / 3 - targetHelpSubset:GetHeight() + 4)
1308 1023
1309 local function initSpellActivationOverlay(rootFrame)
1310 initSpellActivationOverlayDeathKnight(rootFrame)
1311 initSpellActivationOverlayPaladin(rootFrame)
1312 initSpellActivationOverlayPriest(rootFrame)
1313 initSpellActivationOverlayWarlock(rootFrame)
1314 initSpellActivationOverlayWarrior(rootFrame)
1315 initSpellActivationOverlayAny(rootFrame)
1316
1317 return {rootFrame:GetChildren()}
1024 return {helpSubset, harmSubset}
1318 1025 end end
1319 1026
1320 1027 local function init(rootFrame) local function init(rootFrame)
 
... ... local function main()
1342 1049 assert ('enGB' == GetLocale() or 'enUS' == GetLocale()) assert ('enGB' == GetLocale() or 'enUS' == GetLocale())
1343 1050 local rootFrame = CreateFrame('FRAME', 'ClearcastingFrame', UIParent) local rootFrame = CreateFrame('FRAME', 'ClearcastingFrame', UIParent)
1344 1051 rootFrame:SetSize(1024, 768) rootFrame:SetSize(1024, 768)
1345 rootFrame:SetPoint('CENTER', UIParent, 'CENTER', 0, 0)
1052 rootFrame:SetPoint('CENTER', 0, 0)
1346 1053
1347 1054 rootFrame:SetScript('OnEvent', init) rootFrame:SetScript('OnEvent', init)
1348 1055 rootFrame:RegisterEvent('VARIABLES_LOADED') rootFrame:RegisterEvent('VARIABLES_LOADED')
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/clearcasting

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/clearcasting

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/clearcasting

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main