From 93ad888c32b2a22d256e7f4b74df51caaf332993 Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 25 Jul 2026 19:12:35 +1000 Subject: [PATCH] =?UTF-8?q?Round=205b:=20SIDE=20A=20campaign=20=E2=80=94?= =?UTF-8?q?=20mission=2001=20FIRST=20PRESSING=20with=20scripted=20objectiv?= =?UTF-8?q?es,=20briefing,=20timed=20Stream=20probe;=20shared=20campaign.l?= =?UTF-8?q?ua,=20campaign=20rules,=20objectives=20panel,=20missions=20regi?= =?UTF-8?q?stry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 --- mods/vinylgod/fluent/lua.ftl | 7 ++ mods/vinylgod/maps/m01/m01.lua | 46 ++++++++++++ mods/vinylgod/maps/m01/map.bin | Bin 0 -> 12517 bytes mods/vinylgod/maps/m01/map.png | Bin 0 -> 713 bytes mods/vinylgod/maps/m01/map.yaml | 94 ++++++++++++++++++++++++ mods/vinylgod/maps/m01/rules.yaml | 5 ++ mods/vinylgod/missions/vinylgod.yaml | 2 + mods/vinylgod/mod.yaml | 1 + mods/vinylgod/rules/campaign.yaml | 10 +++ mods/vinylgod/rules/world.yaml | 2 + mods/vinylgod/scripts/campaign.lua | 26 +++++++ tools/gen_mission.py | 102 +++++++++++++++++++++++++++ 12 files changed, 295 insertions(+) create mode 100644 mods/vinylgod/fluent/lua.ftl create mode 100644 mods/vinylgod/maps/m01/m01.lua create mode 100644 mods/vinylgod/maps/m01/map.bin create mode 100644 mods/vinylgod/maps/m01/map.png create mode 100644 mods/vinylgod/maps/m01/map.yaml create mode 100644 mods/vinylgod/maps/m01/rules.yaml create mode 100644 mods/vinylgod/rules/campaign.yaml create mode 100644 mods/vinylgod/scripts/campaign.lua create mode 100644 tools/gen_mission.py diff --git a/mods/vinylgod/fluent/lua.ftl b/mods/vinylgod/fluent/lua.ftl new file mode 100644 index 0000000..55344e7 --- /dev/null +++ b/mods/vinylgod/fluent/lua.ftl @@ -0,0 +1,7 @@ +new-objective = New objective +objective-completed = Objective completed +objective-failed = Objective failed + +press-first-records = Build a Pressing Plant and bank 2000 records +survive-the-probe = Survive the Stream's survey probe +keep-the-van-alive = Do not lose the Pop-Up Shop diff --git a/mods/vinylgod/maps/m01/m01.lua b/mods/vinylgod/maps/m01/m01.lua new file mode 100644 index 0000000..56b1db6 --- /dev/null +++ b/mods/vinylgod/maps/m01/m01.lua @@ -0,0 +1,46 @@ +-- 01: FIRST PRESSING + +TARGET_RECORDS = 2000 +PROBE_DELAY = DateTime.Minutes(4) + +WorldLoaded = function() + -- do NOT shadow the `Player` global: Player.GetPlayer is still needed below + Mrp = Player.GetPlayer("Player") + Stream = Player.GetPlayer("Enemy") + InitObjectives(Mrp) + + PressObjective = Mrp.AddPrimaryObjective("press-first-records") + VanObjective = Mrp.AddSecondaryObjective("keep-the-van-alive") + + -- lose the HQ, lose the secondary + local hq = Utils.Where(Map.ActorsInWorld, function(a) + return a.Owner == Mrp and (a.Type == "popupvan" or a.Type == "popupshop") + end) + if #hq > 0 then + Trigger.OnAllKilled(hq, function() + Mrp.MarkFailedObjective(VanObjective) + end) + end + + -- the probe + Trigger.AfterDelay(PROBE_DELAY, function() + Media.PlaySpeechNotification(Mrp, "BaseAttack") + Utils.Do(Map.ActorsInWorld, function(a) + if a.Owner == Stream and a.HasProperty("Hunt") then + a.Hunt() + end + end) + end) +end + +Tick = function() + if PressObjective ~= nil and not Mrp.IsObjectiveCompleted(PressObjective) then + local banked = Mrp.Cash + Mrp.Resources + local plants = Utils.Where(Map.ActorsInWorld, function(a) + return a.Owner == Mrp and a.Type == "pressplant" + end) + if #plants > 0 and banked >= TARGET_RECORDS then + Mrp.MarkCompletedObjective(PressObjective) + end + end +end diff --git a/mods/vinylgod/maps/m01/map.bin b/mods/vinylgod/maps/m01/map.bin new file mode 100644 index 0000000000000000000000000000000000000000..c452a991d2db08da73d364cf87c76c53ddea85e6 GIT binary patch literal 12517 zcmeI1VQ#`O3`XOYwhZmh4zNpbpWXi$o9&Ectf`>Xsl@aMRRc|I=Y6h8MR!i;^p^7L z<2|KM-VlHQ1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZ~Bk=vVDklhR zBp}^J12?8iF9#X)=x+>s__BH!Wb!t&@}lui@**caCOJGD>TF`6FP*RAB(Lga(tdz0 zYSZXj>$AP+b*KkZcl2f|Yt+$txV=%1-bVH2ndB=A%PWoCJYkNwBiPcbh9e>gtep!!JCVNf^ l-QgGOm!9qbn>?vp?Av({J={y|*7wJ6a`gWffiFV^!a)E4 literal 0 HcmV?d00001 diff --git a/mods/vinylgod/maps/m01/map.png b/mods/vinylgod/maps/m01/map.png new file mode 100644 index 0000000000000000000000000000000000000000..732388ac186ad7f607c56f652ce0ea3e15fa9331 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^(?FPm2}o{Eezui?foX!Li(^Q|oVR!V{e%l88XhJ+ z5r{j~>hVM>?%;-pE_Wr?Jup=>%-hq_UhtUdWs}#El7C<3+MVxmX;R7Gr~f&7`I)23 z`Q^>0?2Y^-{vbl=ndc1k#Ca{1Br^8K{t}N^UcUXl{JtMwzgE5ae_8}+Qu)KlzMm!P z>MMUddiJUA&iov%&njm&dn}KgtzY;g%d{0}OXQMdxhMN`xBvh9?0k9o`P$E~%~oli znQU-gDfW$1$$ZzUWjdE^x=SYg-MRbCo$r%YUu#Cl_v}9}`f}zbkI#4hnJl~h_Pp}U zLpGeBV`1aj>4xFv@Re;3P2Uj^|{1L5T2zc18(eUZEmlA0c~#Jc&qhwnqKh$X1uwEe@y zx;49>vVWg=325orjULnQ7B%~u6+Y6rw1-oCWqH#xu)ULkP60Yp1?Wwnn?Ck`dpB+V zOt7c3A?}1rf*I2P^`G$D|FfI)r#Q}^WQ zy}lKt|DVhctKa^I#|IdPvy1CDXP$e`_t_uh_u|+k?ROt