From e88f0716f6b97b067dfcaf5d17323c14f2aa1831 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 30 Jul 2024 15:48:17 -0400 Subject: [PATCH 1/6] attain reality --- modular_doppler/wargaming/code/game_kit.dm | 436 ++++++++++++++++++ modular_doppler/wargaming/code/holograms.dm | 122 +++++ modular_doppler/wargaming/code/projectors.dm | 199 ++++++++ .../icons/projectors_and_holograms.dmi | Bin 0 -> 3779 bytes 4 files changed, 757 insertions(+) create mode 100644 modular_doppler/wargaming/code/game_kit.dm create mode 100644 modular_doppler/wargaming/code/holograms.dm create mode 100644 modular_doppler/wargaming/code/projectors.dm create mode 100644 modular_doppler/wargaming/icons/projectors_and_holograms.dmi diff --git a/modular_doppler/wargaming/code/game_kit.dm b/modular_doppler/wargaming/code/game_kit.dm new file mode 100644 index 0000000000000..6f62f2c1cd7cb --- /dev/null +++ b/modular_doppler/wargaming/code/game_kit.dm @@ -0,0 +1,436 @@ +/obj/item/storage/briefcase/secure/wargame_kit + name = "DIY Wargaming Kit" + desc = "Contains everything an aspiring naval officer (or just massive nerd) would need for a proper modern naval wargame." + custom_premium_price = PAYCHECK_CREW * 2 + +/obj/item/storage/briefcase/secure/wargame_kit/PopulateContents() + var/static/items_inside = list( + /obj/item/wargame_projector/ships = 1, + /obj/item/wargame_projector/ships/red = 1, + /obj/item/wargame_projector/terrain = 1, + /obj/item/storage/dice = 1, + /obj/item/book/manual/wargame_rules = 1, + /obj/item/book/manual/wargame_rules/examples = 1, + ) + generate_items_inside(items_inside,src) + +/obj/item/book/manual/wargame_rules + name = "Wargame: Blue Lizard - Example Ruleset" + icon_state = "book" + starting_author = "Nanotrasen Naval Wargames Commission" + starting_title = "Wargame: Blue Lizard - Example Ruleset" + starting_content = {" + + + + + +
+ Official publication of the Nanotrasen Naval Wargames Commission +

Wargame: Blue Lizard

+
+

Introduction

+ Wargame: Blue Lizard* is a combination of historically popular wargames, + and new, widely available hologram technology. The standard kit should contain + a collection of the following listed items by default, and play may prove difficult + if any of these items are missing. +
+ Kit items: + 1x of 'terrain' holoprojector
+ 2x of 'unit' holoprojector
+ 1x of standard dice set
+
+ An example set of rules will be provided further on in this manual, though it + should be noted that it is not required to follow these rules by the letter, or at + all. Players are encouraged to make their own rules and play the game as they wish, + rather than feel limited by the provided set. +
+

Example Ruleset

+ Players + By the example rules, the game is built to be played by two or more individuals. + One player will act as a game master (sometimes referred to as an umpire), whose + job it will be to direct the game. All other players will be the ones participating + in the game +
+ The layout of players, or teams, is fully up to the game master. For example, + a game of two players may see both players on the same team against a non-player + threat, or it may see them against one another. +
+ Setting Up a Game + Once the layout of players and teams has been established, the scenario, and what + vessels each player should have under their control should be determined by the + game master. What vessels there are, how many there are, what they have on them, + and the overall scenario is completely up to the game master to decide, and it + cannot be stated enough that the scenarios do not have to be even, one side + might have more ships than the other, one side might have more players than the + other. +
+ As stated, the types of ships that exist and what they are armed with is up to the + game master, though some examples of ships and scenarios can be found in the + accompanying book in the standard wargaming set. +
+ Playing the Game
+ Typically, the game goes in a turn by turn system. What this actually means is + again up to the game master. Some examples may be each player going one by one, + or every player on a team going at once. With each turn, each player's units + (typically ships) may move, and take another non-movement action each ship, + each turn. +
+ Commanding Units
+ Units should move across the board, and interact with it, through the hands of + the game master. In order to get a unit to do something that a player commands, + the player should address the game master as if the game master was the + one in control of the ship, and give them orders accordingly. From there, + it is at the game master's discretion to interpret the order and take action. +
+ An example of how this works would be: +
+ Game Master: "We have spotted several enemy vessels, all ships are ready + for orders."
+ Player: "I see... Destroyer, charge the enemy vessels head on, guns blazing!"
+ -- The game master interprets this as moving the destroyer its maximum movement range + straight towards the enemy ships, before moving on to rolling dice for attacking any in + range (attacking will be covered later on in the rules) +
+ Unit Visibility
+ Unit visibility may sound complex at first, but should be fairly simple after + explanation. In a standard game, if there are two or more teams, they will play + on separate, but identical boards that have an opaque divider between them. +
+ Note that most standard issue holodecks have a setup including dual boards and divider. +
+ Space 'terrain', including asteroids, space dust, planetoids, gas clouds, and so on, should + be identical, both in appearance and position, on both halves of the board. The divider + should be closed before either team's units are placed, so that tactical secrecy may be held, + and that players may be able to 'hide' ships from one another. +
+ Determining if a ship is visible to either team is up to the game master to decide. + Typically, however, this should work off of line of sight. An example would be two ships + with a large asteroid between them. Neither ship can see the other due to the asteroid. + If one ship were to move out from behind the asteroid and into direct line of sight with + the other ship, however, both would be able to see each other. It is also possible for a + situation where two ships might know where each other are, but cannot identify what type + of ship the other is. An example of this would be gas clouds and thick space dust. In + this case, the game master can represent the unit as an unidentified ship to the + corresponding team. +
+ Lastly, visibility can be lost. Taking the two ships and an asteroid example again, + if the ship goes back behind the asteroid, then obviously neither team will be able to + see the other ship again. They will, however, still be aware of the general area of the + enemy. +
+ Attacking and Damage
+ Inevitably, ships will come into contact with one another, blows will be exchanged, + and damage will be sustained. +
+ Typically, attacking other ships is done through one of the following means, though + do be aware this list is not the end all be all of weapons and game masters may + create their own. +
+ -- Cannons --
+ Cannons are basic weapons firing projectiles of some kind towards the enemy. + The range of cannons varies, but typically one or two tile lengths away + will be the range for accurate fire. +
+ -- Missiles --
+ Missiles are weapons that are usually limited in the number that each ship + brings into the battle, in exchange for damaging the enemy significantly more + as well as having a longer range than cannons. Missiles are one of the two + 'weapons' that are unique in how they work, in that if the range to the target + is more than a single tile's length away, they should appear as an object on the + board, and should take multiple turns to reach their target. +
+ Missiles are also special in that many weapons fall under their category, + some of the basic types will be listed below.
+ Unguided rockets - These are the most basic type of missile, lacking any + guidance system at all. If these are fired at a target, and the target moves + somehow before they impact, the rockets will simply continue on in a straight + line until either hitting something or being lost into the depths of space. +
+ Seeking missiles - These are missiles that will actively guide themselves + towards a target, usually designated when launching them. It is possible to + evade these by hiding behind a large object, or hiding within a debris/ + dust/gas cloud. If these missiles lose tracking, they will simply fly in + a straight line until impacting something or being lost to deep space. +
+ Seeking torpedoes - These operate similar to seeking missiles in that + they will guide themselves towards a target. The difference with these is + that torpedoes will typically do significantly more damage if they impact + a target, but are significantly slower than missiles in exchange. Again if + these lose tracking, they will fly in a straight line until impacting + something or being lost to the void. +
+ -- Strike Craft --
+ Strike craft are an example of a uniquely operating weapon. Typically carried + into combat by a larger ship of some kind, 'using' this weapon should result + in either a single, or wing of strike craft being placed alongside the vessel + that launched them. For all intents and purposes, these strike craft will now + behave as if they are any other ship, including having their own weapons and + damage. +
+ Strike craft do operate differently to ships in how they are destroyed. Each + ship capable of carrying strike craft will enter the battle with a set number + of 'wings'. These wings will be launched as a whole and will act as one 'vessel' + on the board. When coming under fire from other ships, dice should be rolled to + determine how many, if any, of the strike craft are lost. If all of the craft + in a wing are lost, the wing is destroyed, and the home vessel loses that wing + forever. If a wing is only partially destroyed, however, it may return to the + home vessel and spend a full turn repairing to get all its craft back. +
+ Ships taking damage is left up to both rolls of the dice and the discretion of the + game master. Typically, a D20 will be used for determining if a ship takes damage or + not. +
+ For a ship to take damage, an attack must roll higher than the ship's 'defensive power'. + The defensive power of a vessel is a combination of many factors, though some examples + will be provided below, though ships should all have a defensive power of '5' by default, + with other factors raising that. +
+ Heavy Armor - If a ship is determined to have heavy armor, usually ships that are + either large, built for close range combat, or both, then they will gain a bonus to + their defensive power (usually +5, for a total of 10 default). +
+ Strong Point Defense - If a ship has a strong point defense system, it is able + to intercept incoming projectiles before impact. In game, this translates to an + increase in defensive power (usually +5, for a total of 10 with nothing else). +
+ Weak Construction - If a ship is determined to be built fairly weak, usually reserved + to non-combat ships (perhaps one a fleet is escorting?), then it will have a loss of + defensive power (usually -5, for a total of 0 default) +
+ These modifiers may be stacked with each other, and custom ones may be created by the game + master for a given scenario. +
+ If an attack does manage to get through the defenses of a vessel, another dice roll should + determine what damage the vessel takes, if any. This is also up to the game master's discretion, + though a table of damage based off of a D20 will be provided below. If a ship takes damage to + two or more 'critical' systems (power, life support, or structure) then the ship will be + lost and irrecoverable. Damage can be repaired, however, if a ship sacrifices both its movement + and second action for a full turn, repairing one major damage of the player's choice. +
+ From a D20 + 0 - 5, Only superficial damage was taken, nothing happens
+ 6 - 7, The ship's engines are disabled, and it will be unable to move until repairs are done
+ 8 - 10, The ship's weapons are disabled, and it will be unable to attack until repairs are done
+ 11 - 12, The ship's main reactor fails, both weapons and movement will be disabled until repairs are done
+ 13 - 16, The ship suffers a disabling breach, and it will be lost if this compounds with another problem
+ 17 - 20, The ship suffers catastrophic structural damage, and it will be lost if this compounds with another problem
+
+ If a ship is lost in combat, then one of two things will happen. If the reactor was damaged + at the time of the vessel being lost, then it should catastrophically fail and cause + any ships near it should take damage from the detonation, and the ship itself should be + removed from the board. If the reactor was not damaged when the vessel was lost, however, + then the ship's color should be changed to a neutral grey, where it will remain as an empty + hulk that can be used for cover or concealment by other ships. +
+ Objectives and Victory
+ At the start of the match, the game master should assign each team, or player, a specific objective + that they must complete in order to win. This objective can be something simple like complete + destruction of the enemy forces. However more complex objectives, like escorting a civilian + ship to a nearby planet, protecting a station of attack, and so on, are all possible. In the end + it is up to the game master to come up with a scenario and objectives. +
+ When the game master determines these objectives to be complete, or that some kind of game + ending condition has been achieved, then they may end the game at will. +
+ *Wargame: Blue Lizard is a copyright protected title under ownership of Nanotrasen + + + "} + +/obj/item/book/manual/wargame_rules/examples + name = "Wargame: Blue Lizard - Example Ships and Scenarios" + icon_state = "book1" + starting_author = "Nanotrasen Naval Wargames Commission" + starting_title = "Wargame: Blue Lizard - Example Ships and Scenarios" + starting_content = {" + + + + + +
+ Official publication of the Nanotrasen Naval Wargames Commission +

Wargame: Blue Lizard

+
+

Introduction

+ Should you not have read the example ruleset that should have come with this book, then it is + highly suggested that you read through that first. This publication will contain a list of example + ships and scenarios for using in games. It should be noted that it is not required to use the + ships in this book and that making your own with your game master is encouraged. +
+

Example Ships

+ Nanotrasen
+ Nanotrasen's fleet has historically been focused on quick response, especially due to the spread + of Nanotrasen assets across the galaxy. Their ships are often built to simply get to a location + fast and, hopefully, scare off anything that's there. This isn't to say that modern vessels are + incapable of heavy combat, though the vessels in this list will be based upon older, decommissioned + ship types due to modern designs being classified. +
+ -- Patrol Corvette --
+ A small vessel armed with little more than some cannons, lacking heavy armor and point defense, + though able to travel quickly due to its relatively small size and weight.
+ - Represented by a small ship marker
+ - Cannons
+ - ~1 tile's length of movement range +
+ -- Torpedo Frigate --
+ Built to handle threats that the patrol corvette couldn't, usually carries some anti ship torpedoes + into battle. + - Represented by a medium ship marker
+ - 2 Torpedoes
+ - Strong point defense
+ - ~1 tile's length of movement range +
+ -- Light Carrier --
+ Usually sent with patrols of smaller craft, used as a command and support vessel wherever task force + cohesion is needed, or just fighter support.
+ - Represented by a large ship marker
+ - 2 Wings of strike craft, armed with 3 seeking missiles each wing
+ - Strong point defense
+ - ~1/2 a tile's length of movement range +
+ -- Battlecruiser --
+ The largest commonly fielded ship in Nanotrasen's navy, a fast response vessel with enough guns and + armor to handle any large threat the fleet comes across, though these ships are a rare sight.
+ - Represented by an alternate large ship marker
+ - Cannons
+ - Heavy armor
+ - Strong point defense system
+ - ~1/2 a tile's length of movement range +
+ SolFed
+ SolFed's navy is possibly the oldest and largest in the known universe, having more experience in + combat historically than most other navies combined. Nowadays, due to the expanse of SolFed space, + their patrols are thin stretched across the space they control, large groups of ships a rare sight. + A side effect of this is that they usually lack smaller combat vessels, favoring larger ships.
+
+ -- Flak Frigate --
+ Built special purpose to shoot down the vast numbers of strike craft that were often employed by SolFed's + enemies in large scale disputes, comes packed with enough point defense to make any carrier captain cry.
+ - Represented by a medium ship marker
+ - Cannons
+ - 4 Seeking missiles
+ - Strong point defense
+ - ~1 tile's length of movement range +
+ -- Light Cruiser --
+ The mainstay ship of any SolFed fleet, with enough armor and firepower to cruise into the thick of + any battle and more than likely come out the other side still operational.
+ - Represented by a large ship marker
+ - Cannons
+ - Heavy armor
+ - Strong point defense
+ - ~1/2 a tile's length of movement range +
+ -- Heavy Carrier --
+ A prohibitively expensive carrier (not like this stops SolFed) that, while rarely fielded, can bring + more strike craft into battle than any ship known to mankind.
+ - Represented by an alternative large ship marker
+ - 4 Wings of strike craft, with 3 seeking missiles each wing
+ - Strong point defense
+ - ~1/2 a tile's length of movement range +
+ NRI
+ The NRI's navy has always been at least a contender to SolFed's and Nanotrasen's own, heavily focused on missiles + with very few ships straying away from that doctrine. +
+ -- Patrol Corvette -- + A common sight in NRI controlled space, with many owned by not only the navy, but also the government's + police forces. Usually what that means is parking one near unruly stations and outposts, just to remind + them who owns the space they live in.
+ - Represented by a small ship marker
+ - Cannons
+ - ~1 tile's length of movement range +
+ -- Defense Frigate --
+ Built for the express purpose of ruining the day of any territorial invader, stacked up with the heaviest + armor of any frigate in the known universe, with weapons to deal back any damage thrown at it.
+ - Represented by a medium ship marker
+ - Cannons
+ - 4 Seeking missiles
+ - Heavy armor
+ - ~1/2 a tile's length of movement range +
+ -- Missile Destroyer --
+ Missiles? You like missiles don't you? I hope you do, because when NRI naval command demanded more missiles + on a vessel, their shipyards gave the answer in the form of what is essentially a cargo ship filled to + the brim with every guided missile they could find.
+ - Represented by a large ship marker
+ - Bottomless seeking missiles
+ - Heavy armor
+ - ~1/2 a tile's length of movement range +
+ Mothic Raiders + Though nowhere near as common as they were in the years since official contact with the Nomad Fleet, + explorers of humanity's past have been plagued with raids from pirate ships of mothic origin. Though + not malicious in nature, they would often come in skirmishes with patrol and escort forces on the outer + rim of SolFed territory, and may still rarely commit to raids against human ships even today. +
+ -- Raider Corvette --
+ The smallest and most common ship in mothic pirate bands, using the Nomad Fleet's prowess in ship + technology to scream across the stars faster than any vessel humanity could come up with.
+ - Represented by a small ship marker
+ - Cannons
+ - 1 Torpedo
+ - ~1 and 1/2 a tile's a movement range +
+ -- Mini Carrier --
+ Often the core of mothic pirate bands, a small vessel usually kept on the backlines of raids, + capable of carrying a small compliment of strike craft to support them.
+ - Represented by a medium ship marker
+ - 2 Wings of strike craft, with 3 seeking missiles each wing
+ - Strong point defense
+ - ~1 tile's movement range +
+ -- Rocket Destroyer --
+ The result of common incidents where a captain will choose to evacuate a cargo vessel before a + band of mothic raiders boards, leaving the ship fully to the control of the pirates. This will + often result in them crudely converting the vessel into a warship of some kind.
+ - Represented by a large ship marker
+ - Bottomless supply of unguided rockets, can be fired twice per turn
+ - Weak construction
+ - ~1 tile's movement range +
+

Example Scenarios

+ -- Nanotrasen/NRI Station Skirmish --
+ A Nanotrasen sponsored station located in NRI border territories has violated several regulations + and laws, and an NRI patrol fleet has been sent to repossess the station. A force of Nanotrasen + ships jumps in just in time to intercept.
+ - Takes place with a Nanotrasen station surrounded by a large asteroid field of some kind between + where both teams start.
+ - Either side will win through complete destruction or surrender of the enemy.
+ - The NRI should start with a few more ships, or stronger ships than the NT force, however + the NT station should have several defensive platforms surrounding it to supplement.
+
+ -- NRI/SolFed Border Conflict --
+ Two sizeable fleets from both SolFed, and the NRI meet in disputed space. A battle ensues soon + after, this fight being only a small part of a larger battle.
+ - Takes place in the rings of a nearby planet, large dust fields and asteroids making spotting + other ships difficult.
+ - Either side will win through complete destruction or surrender of the enemy.
+ - Both the NRI and SolFed fleets should be about the same size and strength. +
+ -- SolFed/Mothic Raiders Convoy Raid --
+ A convoy of Nanotrasen cargo vessels, escorted by a small patrol force, come under attack by a sizeable + band of mothic raiders.
+ - Takes place in a dense asteroid field
+ - NT will win if they destroy the raiders completely
+ - The raiders will win if they destroy all of NT's cargo ships
+ - NT's fleet should be a small number of combat vessels, escorting 2-3 large cargo ships + with stats as follows:
+ - Weak construction
+ - ~1/2 a tile's length of movement range
+ - The mothic raider fleet should be larger than NT's + + + "} diff --git a/modular_doppler/wargaming/code/holograms.dm b/modular_doppler/wargaming/code/holograms.dm new file mode 100644 index 0000000000000..b0fa56f0426da --- /dev/null +++ b/modular_doppler/wargaming/code/holograms.dm @@ -0,0 +1,122 @@ +/obj/structure/wargame_hologram + name = "broken holographic wargame marker" + desc = "You have a feeling like this is supposed to be telling you something, but the hologram must have broken." + icon = 'modular_doppler/wargaming/icons/projectors_and_holograms.dmi' + icon_state = null + anchored = TRUE + density = FALSE + max_integrity = 1 + obj_flags = UNIQUE_RENAME + /// What object created this projection? Can be null as a projector isn't required for this to exist + var/obj/item/wargame_projector/projector + +/obj/structure/wargame_hologram/Initialize(mapload, source_projector) + . = ..() + if(source_projector) + projector = source_projector + LAZYADD(projector.projections, src) + +/obj/structure/wargame_hologram/Destroy() + if(projector) + LAZYREMOVE(projector.projections, src) + projector = null + return ..() + +/obj/structure/wargame_hologram/update_overlays() + . = ..() + . += emissive_appearance(icon, icon_state, src) + +/// Projections for 'moving vessels' in order from smallest to largest representation + +/obj/structure/wargame_hologram/strike_craft + name = "strike craft marker" + desc = "A hologram of a single strike craft." + icon_state = "strikesingle" + +/obj/structure/wargame_hologram/strike_craft + name = "skiff marker" + desc = "A hologram of a single utility skiff." + icon_state = "strike_utility" + +/obj/structure/wargame_hologram/strike_craft/wing + name = "strike craft wing marker" + desc = "A hologram of a wing of strike craft." + icon_state = "strikewing" + +/obj/structure/wargame_hologram/ship_marker + name = "small vessel marker" + desc = "A hologram of a small frigate." + icon_state = "smallship" + +/obj/structure/wargame_hologram/ship_marker/medium + name = "medium vessel marker" + desc = "A hologram of a destroyer." + icon_state = "mediumship" + +/obj/structure/wargame_hologram/ship_marker/large + name = "large vessel marker" + desc = "A hologram of a large cruiser." + icon_state = "bigship" + +/obj/structure/wargame_hologram/ship_marker/large/alternate + name = "alternate large vessel marker" + desc = "A hologram of a massive ship." + icon_state = "bigship_alternate" + +/obj/structure/wargame_hologram/unidentified + name = "unidentified contact marker" + desc = "A hologram standing for an unidentified contact." + icon_state = "unidentified" + +/* +Projections for misc stuff, like stations, scout probes, or incoming missiles +*/ + +/obj/structure/wargame_hologram/missile_warning + name = "in-flight missile marker" + desc = "A hologram of a missile currently in flight." + icon_state = "missile" + +/obj/structure/wargame_hologram/probe + name = "probe marker" + desc = "A hologram of a scout probe." + icon_state = "probe" + +/obj/structure/wargame_hologram/stationary_structure + name = "station marker" + desc = "A hologram of a space station." + icon_state = "station" + +/obj/structure/wargame_hologram/stationary_structure/platform + name = "platform marker" + desc = "A hologram of a small space platform." + icon_state = "platform" + +/* +Projections for space 'terrain' like asteroids and dust clouds +*/ + +/obj/structure/wargame_hologram/dust + name = "dust field marker" + desc = "A hologram of a field of stellar dust of some sort." + icon_state = "dustcloud" + +/obj/structure/wargame_hologram/asteroid + name = "small asteroid marker" + desc = "A hologram of a small asteroid." + icon_state = "asteroidsmall" + +/obj/structure/wargame_hologram/asteroid/large + name = "large asteroid marker" + desc = "A hologram of a large asteroid." + icon_state = "asteroidlarge" + +/obj/structure/wargame_hologram/asteroid/cluster + name = "asteroid cluster marker" + desc = "A hologram of a cluster of asteroids." + icon_state = "asteroidcluster" + +/obj/structure/wargame_hologram/planet + name = "planetary body marker" + desc = "A hologram of a planet." + icon_state = "planet" diff --git a/modular_doppler/wargaming/code/projectors.dm b/modular_doppler/wargaming/code/projectors.dm new file mode 100644 index 0000000000000..102ddb972e495 --- /dev/null +++ b/modular_doppler/wargaming/code/projectors.dm @@ -0,0 +1,199 @@ +/obj/item/wargame_projector + name = "holographic projector" + desc = "A handy-dandy holographic projector developed by Nanotrasen Naval Command for playing wargames with, this one seems broken." + icon = 'modular_doppler/wargaming/icons/projectors_and_holograms.dmi' + icon_state = "projector" + inhand_icon_state = "electronic" + worn_icon_state = "electronic" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + force = 0 + w_class = WEIGHT_CLASS_SMALL + throwforce = 0 + throw_speed = 3 + throw_range = 7 + item_flags = NOBLUDGEON + /// All of the signs this projector is maintaining + var/list/projections + /// The maximum number of projections this can support + var/max_signs = 1 + /// The color to give holograms when created + var/holosign_color = COLOR_WHITE + /// The type of hologram to spawn on click + var/holosign_type = /obj/structure/wargame_hologram + /// A list containing all of the possible holosigns this can choose from + var/list/holosign_options = list( + /obj/structure/wargame_hologram, + ) + /// Contains all of the colors that the holograms can be changed to spawn as + var/static/list/color_options = list( + "Red" = COLOR_RED_LIGHT, + "Orange" = COLOR_LIGHT_ORANGE, + "Yellow" = COLOR_VIVID_YELLOW, + "Green" = COLOR_VIBRANT_LIME, + "Blue" = COLOR_BLUE_LIGHT, + "Pink" = COLOR_FADED_PINK, + "White" = COLOR_WHITE, + "Gray" = COLOR_GRAY, + "Brown" = COLOR_BROWN, + "Ice" = COLOR_BLUE_GRAY, + ) + /// Will hold the choices for radial menu use, populated on init + var/list/radial_choices = list() + /// A names to path list for the projections filled out by populate_radial_choice_lists() on init + var/list/projection_names_to_path = list() + +/obj/item/wargame_projector/Initialize(mapload) + . = ..() + AddElement(/datum/element/openspace_item_click_handler) + update_appearance() + populate_radial_choice_lists() + +/obj/item/wargame_projector/handle_openspace_click(turf/target, mob/user, click_parameters) + ranged_interact_with_atom(target, user, params2list(click_parameters)) + +/obj/item/wargame_projector/update_appearance() + . = ..() + cut_overlays() + + var/image/color_select_overlay = image(icon = icon, icon_state = "[base_icon_state]_screen") + color_select_overlay.color = holosign_color + add_overlay(color_select_overlay) + +/obj/item/wargame_projector/examine(mob/user) + . = ..() + if(projections) + . += span_notice("It is currently maintaining [projections.len]/[max_signs] projections.") + . += span_notice("Use the projector in hand to change what type of hologram it creates.") + . += span_notice("Alt clicking the projector will let you change the color of the next hologram it makes.") + . += span_warning("Control clicking the projector will allow you to clear all active holograms.") + +/obj/item/wargame_projector/proc/populate_radial_choice_lists() + if(!length(radial_choices) || !length(projection_names_to_path)) + for(var/obj/structure/wargame_hologram/hologram as anything in holosign_options) + projection_names_to_path[initial(hologram.name)] = hologram + radial_choices[initial(hologram.name)] = image(icon = initial(hologram.icon), icon_state = initial(hologram.icon_state)) + +/// Changes the selected hologram to one of the options from the hologram list +/obj/item/wargame_projector/proc/select_hologram(mob/user) + var/picked_choice = show_radial_menu( + user, + src, + radial_choices, + require_near = TRUE, + tooltips = TRUE, + ) + + if(isnull(picked_choice)) + return + + holosign_type = projection_names_to_path[picked_choice] + +/obj/item/wargame_projector/attack_self(mob/user) + select_hologram(user) + +/obj/item/wargame_projector/click_alt(mob/user) + var/selected_color = tgui_input_list(user, "Select a color", "Color Selection", color_options) + if(isnull(selected_color)) + balloon_alert(user, "no color change") + return + var/color_to_set_to = color_options[selected_color] + holosign_color = color_to_set_to + balloon_alert(user, "color changed") + update_appearance() + return CLICK_ACTION_SUCCESS + +/obj/item/wargame_projector/item_ctrl_click(mob/user) + if(tgui_alert(usr,"Clear all currently active holograms?", "Hologram Removal", list("Yes", "No")) == "Yes") + for(var/hologram as anything in projections) + qdel(hologram) + return CLICK_ACTION_SUCCESS + +/// Can we place a hologram at the target location? +/obj/item/wargame_projector/proc/check_can_place_hologram(atom/target, mob/user, team) + if(!check_allowed_items(target, not_inside = TRUE)) + return FALSE + var/turf/target_turf = get_turf(target) + if(target_turf.is_blocked_turf(TRUE)) + return FALSE + if(LAZYLEN(projections) >= max_signs) + balloon_alert(user, "max capacity!") + return FALSE + return TRUE + +/// Spawn a hologram with pixel offset based on where the user clicked +/obj/item/wargame_projector/proc/create_hologram(atom/target, mob/user, list/modifiers) + var/obj/target_holosign = new holosign_type(get_turf(target), src) + + var/click_x + var/click_y + + if(LAZYACCESS(modifiers, ICON_X) && LAZYACCESS(modifiers, ICON_Y)) + click_x = clamp(text2num(LAZYACCESS(modifiers, ICON_X)) - 16, -(world.icon_size/2), world.icon_size/2) + click_y = clamp(text2num(LAZYACCESS(modifiers, ICON_Y)) - 16, -(world.icon_size/2), world.icon_size/2) + + target_holosign.pixel_x = click_x + target_holosign.pixel_y = click_y + + target_holosign.color = holosign_color + + playsound(loc, 'sound/machines/click.ogg', 20, TRUE) + +/obj/item/wargame_projector/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) + if(istype(interacting_with, /obj/structure/wargame_hologram)) + qdel(interacting_with) + return ITEM_INTERACT_SUCCESS + if(!check_can_place_hologram(interacting_with, user, 1)) + return NONE + create_hologram(interacting_with, user, modifiers) + return ITEM_INTERACT_SUCCESS + +/obj/item/wargame_projector/Destroy() + QDEL_LAZYLIST(projections) + . = ..() + +/* +Actual projector types, split between the 'categories' of things they can project +*/ + +/obj/item/wargame_projector/ships + name = "holographic unit projector" + desc = "A handy-dandy holographic projector developed by Nanotrasen Naval Command for playing wargames with, this one creates markers for 'units'." + max_signs = 30 + holosign_color = COLOR_BLUE_LIGHT + holosign_type = /obj/structure/wargame_hologram/ship_marker + holosign_options = list( + /obj/structure/wargame_hologram/unidentified, + /obj/structure/wargame_hologram/missile_warning, + /obj/structure/wargame_hologram/strike_craft, + /obj/structure/wargame_hologram/strike_craft/wing, + /obj/structure/wargame_hologram/ship_marker, + /obj/structure/wargame_hologram/ship_marker/medium, + /obj/structure/wargame_hologram/ship_marker/large, + /obj/structure/wargame_hologram/ship_marker/large/alternate, + /obj/structure/wargame_hologram/probe, + /obj/structure/wargame_hologram/stationary_structure, + /obj/structure/wargame_hologram/stationary_structure/platform, + ) + +/obj/item/wargame_projector/ships/red + holosign_color = COLOR_RED_LIGHT + +/obj/item/wargame_projector/terrain + name = "holographic terrain projector" + desc = "A handy-dandy holographic projector developed by Nanotrasen Naval Command for playing wargames with, this one creates markers for space 'terrain'." + max_signs = 30 + holosign_color = COLOR_GRAY + holosign_type = /obj/structure/wargame_hologram/asteroid + // Some things, like stations, probes, and unidentified contacts, can be in the terrain one just because I can see situations where that's desired + holosign_options = list( + /obj/structure/wargame_hologram/unidentified, + /obj/structure/wargame_hologram/dust, + /obj/structure/wargame_hologram/asteroid, + /obj/structure/wargame_hologram/asteroid/large, + /obj/structure/wargame_hologram/asteroid/cluster, + /obj/structure/wargame_hologram/planet, + /obj/structure/wargame_hologram/probe, + /obj/structure/wargame_hologram/stationary_structure, + /obj/structure/wargame_hologram/stationary_structure/platform, + ) diff --git a/modular_doppler/wargaming/icons/projectors_and_holograms.dmi b/modular_doppler/wargaming/icons/projectors_and_holograms.dmi new file mode 100644 index 0000000000000000000000000000000000000000..569b6d7274c9b5e660b34cb41529df9dba798019 GIT binary patch literal 3779 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 Date: Tue, 30 Jul 2024 15:58:43 -0400 Subject: [PATCH 2/6] actually ticks files --- tgstation.dme | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index a64698fcfbb1d..f6b2be73c885b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -6358,4 +6358,7 @@ #include "modular_doppler\emotes\code\added_emotes\human_things.dm" #include "modular_doppler\emotes\code\added_emotes\robot_sounds.dm" #include "modular_doppler\face_mouse_preferences\code\face_mouse_pref.dm" +#include "modular_doppler\wargaming\code\game_kit.dm" +#include "modular_doppler\wargaming\code\holograms.dm" +#include "modular_doppler\wargaming\code\projectors.dm" // END_INCLUDE From c91feadd00666d23ac5b6eeefb24f796a4384f34 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 30 Jul 2024 16:04:27 -0400 Subject: [PATCH 3/6] fixes some stuff --- modular_doppler/wargaming/code/holograms.dm | 2 +- modular_doppler/wargaming/code/projectors.dm | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modular_doppler/wargaming/code/holograms.dm b/modular_doppler/wargaming/code/holograms.dm index b0fa56f0426da..1d85021ef680c 100644 --- a/modular_doppler/wargaming/code/holograms.dm +++ b/modular_doppler/wargaming/code/holograms.dm @@ -33,7 +33,7 @@ desc = "A hologram of a single strike craft." icon_state = "strikesingle" -/obj/structure/wargame_hologram/strike_craft +/obj/structure/wargame_hologram/strike_craft_util name = "skiff marker" desc = "A hologram of a single utility skiff." icon_state = "strike_utility" diff --git a/modular_doppler/wargaming/code/projectors.dm b/modular_doppler/wargaming/code/projectors.dm index 102ddb972e495..78cab9a8c5b71 100644 --- a/modular_doppler/wargaming/code/projectors.dm +++ b/modular_doppler/wargaming/code/projectors.dm @@ -139,7 +139,7 @@ playsound(loc, 'sound/machines/click.ogg', 20, TRUE) -/obj/item/wargame_projector/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) +/obj/item/wargame_projector/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if(istype(interacting_with, /obj/structure/wargame_hologram)) qdel(interacting_with) return ITEM_INTERACT_SUCCESS @@ -152,9 +152,7 @@ QDEL_LAZYLIST(projections) . = ..() -/* -Actual projector types, split between the 'categories' of things they can project -*/ +/// Actual projector types, split between the 'categories' of things they can project /obj/item/wargame_projector/ships name = "holographic unit projector" @@ -166,6 +164,7 @@ Actual projector types, split between the 'categories' of things they can projec /obj/structure/wargame_hologram/unidentified, /obj/structure/wargame_hologram/missile_warning, /obj/structure/wargame_hologram/strike_craft, + /obj/structure/wargame_hologram/strike_craft_util, /obj/structure/wargame_hologram/strike_craft/wing, /obj/structure/wargame_hologram/ship_marker, /obj/structure/wargame_hologram/ship_marker/medium, From c535fc9e8dd409398972138278ddb9f00d668ffd Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 30 Jul 2024 16:46:12 -0400 Subject: [PATCH 4/6] i cant be bothered with the books right now man --- modular_doppler/wargaming/code/game_kit.dm | 417 +------------------ modular_doppler/wargaming/code/projectors.dm | 1 + 2 files changed, 6 insertions(+), 412 deletions(-) diff --git a/modular_doppler/wargaming/code/game_kit.dm b/modular_doppler/wargaming/code/game_kit.dm index 6f62f2c1cd7cb..e88b285782458 100644 --- a/modular_doppler/wargaming/code/game_kit.dm +++ b/modular_doppler/wargaming/code/game_kit.dm @@ -3,7 +3,7 @@ desc = "Contains everything an aspiring naval officer (or just massive nerd) would need for a proper modern naval wargame." custom_premium_price = PAYCHECK_CREW * 2 -/obj/item/storage/briefcase/secure/wargame_kit/PopulateContents() +/obj/item/storage/briefcase/secure/white/wargame_kit/PopulateContents() var/static/items_inside = list( /obj/item/wargame_projector/ships = 1, /obj/item/wargame_projector/ships/red = 1, @@ -17,420 +17,13 @@ /obj/item/book/manual/wargame_rules name = "Wargame: Blue Lizard - Example Ruleset" icon_state = "book" - starting_author = "Nanotrasen Naval Wargames Commission" + starting_author = "John War - CEO of War" starting_title = "Wargame: Blue Lizard - Example Ruleset" - starting_content = {" - - - - - -
- Official publication of the Nanotrasen Naval Wargames Commission -

Wargame: Blue Lizard

-
-

Introduction

- Wargame: Blue Lizard* is a combination of historically popular wargames, - and new, widely available hologram technology. The standard kit should contain - a collection of the following listed items by default, and play may prove difficult - if any of these items are missing. -
- Kit items: - 1x of 'terrain' holoprojector
- 2x of 'unit' holoprojector
- 1x of standard dice set
-
- An example set of rules will be provided further on in this manual, though it - should be noted that it is not required to follow these rules by the letter, or at - all. Players are encouraged to make their own rules and play the game as they wish, - rather than feel limited by the provided set. -
-

Example Ruleset

- Players - By the example rules, the game is built to be played by two or more individuals. - One player will act as a game master (sometimes referred to as an umpire), whose - job it will be to direct the game. All other players will be the ones participating - in the game -
- The layout of players, or teams, is fully up to the game master. For example, - a game of two players may see both players on the same team against a non-player - threat, or it may see them against one another. -
- Setting Up a Game - Once the layout of players and teams has been established, the scenario, and what - vessels each player should have under their control should be determined by the - game master. What vessels there are, how many there are, what they have on them, - and the overall scenario is completely up to the game master to decide, and it - cannot be stated enough that the scenarios do not have to be even, one side - might have more ships than the other, one side might have more players than the - other. -
- As stated, the types of ships that exist and what they are armed with is up to the - game master, though some examples of ships and scenarios can be found in the - accompanying book in the standard wargaming set. -
- Playing the Game
- Typically, the game goes in a turn by turn system. What this actually means is - again up to the game master. Some examples may be each player going one by one, - or every player on a team going at once. With each turn, each player's units - (typically ships) may move, and take another non-movement action each ship, - each turn. -
- Commanding Units
- Units should move across the board, and interact with it, through the hands of - the game master. In order to get a unit to do something that a player commands, - the player should address the game master as if the game master was the - one in control of the ship, and give them orders accordingly. From there, - it is at the game master's discretion to interpret the order and take action. -
- An example of how this works would be: -
- Game Master: "We have spotted several enemy vessels, all ships are ready - for orders."
- Player: "I see... Destroyer, charge the enemy vessels head on, guns blazing!"
- -- The game master interprets this as moving the destroyer its maximum movement range - straight towards the enemy ships, before moving on to rolling dice for attacking any in - range (attacking will be covered later on in the rules) -
- Unit Visibility
- Unit visibility may sound complex at first, but should be fairly simple after - explanation. In a standard game, if there are two or more teams, they will play - on separate, but identical boards that have an opaque divider between them. -
- Note that most standard issue holodecks have a setup including dual boards and divider. -
- Space 'terrain', including asteroids, space dust, planetoids, gas clouds, and so on, should - be identical, both in appearance and position, on both halves of the board. The divider - should be closed before either team's units are placed, so that tactical secrecy may be held, - and that players may be able to 'hide' ships from one another. -
- Determining if a ship is visible to either team is up to the game master to decide. - Typically, however, this should work off of line of sight. An example would be two ships - with a large asteroid between them. Neither ship can see the other due to the asteroid. - If one ship were to move out from behind the asteroid and into direct line of sight with - the other ship, however, both would be able to see each other. It is also possible for a - situation where two ships might know where each other are, but cannot identify what type - of ship the other is. An example of this would be gas clouds and thick space dust. In - this case, the game master can represent the unit as an unidentified ship to the - corresponding team. -
- Lastly, visibility can be lost. Taking the two ships and an asteroid example again, - if the ship goes back behind the asteroid, then obviously neither team will be able to - see the other ship again. They will, however, still be aware of the general area of the - enemy. -
- Attacking and Damage
- Inevitably, ships will come into contact with one another, blows will be exchanged, - and damage will be sustained. -
- Typically, attacking other ships is done through one of the following means, though - do be aware this list is not the end all be all of weapons and game masters may - create their own. -
- -- Cannons --
- Cannons are basic weapons firing projectiles of some kind towards the enemy. - The range of cannons varies, but typically one or two tile lengths away - will be the range for accurate fire. -
- -- Missiles --
- Missiles are weapons that are usually limited in the number that each ship - brings into the battle, in exchange for damaging the enemy significantly more - as well as having a longer range than cannons. Missiles are one of the two - 'weapons' that are unique in how they work, in that if the range to the target - is more than a single tile's length away, they should appear as an object on the - board, and should take multiple turns to reach their target. -
- Missiles are also special in that many weapons fall under their category, - some of the basic types will be listed below.
- Unguided rockets - These are the most basic type of missile, lacking any - guidance system at all. If these are fired at a target, and the target moves - somehow before they impact, the rockets will simply continue on in a straight - line until either hitting something or being lost into the depths of space. -
- Seeking missiles - These are missiles that will actively guide themselves - towards a target, usually designated when launching them. It is possible to - evade these by hiding behind a large object, or hiding within a debris/ - dust/gas cloud. If these missiles lose tracking, they will simply fly in - a straight line until impacting something or being lost to deep space. -
- Seeking torpedoes - These operate similar to seeking missiles in that - they will guide themselves towards a target. The difference with these is - that torpedoes will typically do significantly more damage if they impact - a target, but are significantly slower than missiles in exchange. Again if - these lose tracking, they will fly in a straight line until impacting - something or being lost to the void. -
- -- Strike Craft --
- Strike craft are an example of a uniquely operating weapon. Typically carried - into combat by a larger ship of some kind, 'using' this weapon should result - in either a single, or wing of strike craft being placed alongside the vessel - that launched them. For all intents and purposes, these strike craft will now - behave as if they are any other ship, including having their own weapons and - damage. -
- Strike craft do operate differently to ships in how they are destroyed. Each - ship capable of carrying strike craft will enter the battle with a set number - of 'wings'. These wings will be launched as a whole and will act as one 'vessel' - on the board. When coming under fire from other ships, dice should be rolled to - determine how many, if any, of the strike craft are lost. If all of the craft - in a wing are lost, the wing is destroyed, and the home vessel loses that wing - forever. If a wing is only partially destroyed, however, it may return to the - home vessel and spend a full turn repairing to get all its craft back. -
- Ships taking damage is left up to both rolls of the dice and the discretion of the - game master. Typically, a D20 will be used for determining if a ship takes damage or - not. -
- For a ship to take damage, an attack must roll higher than the ship's 'defensive power'. - The defensive power of a vessel is a combination of many factors, though some examples - will be provided below, though ships should all have a defensive power of '5' by default, - with other factors raising that. -
- Heavy Armor - If a ship is determined to have heavy armor, usually ships that are - either large, built for close range combat, or both, then they will gain a bonus to - their defensive power (usually +5, for a total of 10 default). -
- Strong Point Defense - If a ship has a strong point defense system, it is able - to intercept incoming projectiles before impact. In game, this translates to an - increase in defensive power (usually +5, for a total of 10 with nothing else). -
- Weak Construction - If a ship is determined to be built fairly weak, usually reserved - to non-combat ships (perhaps one a fleet is escorting?), then it will have a loss of - defensive power (usually -5, for a total of 0 default) -
- These modifiers may be stacked with each other, and custom ones may be created by the game - master for a given scenario. -
- If an attack does manage to get through the defenses of a vessel, another dice roll should - determine what damage the vessel takes, if any. This is also up to the game master's discretion, - though a table of damage based off of a D20 will be provided below. If a ship takes damage to - two or more 'critical' systems (power, life support, or structure) then the ship will be - lost and irrecoverable. Damage can be repaired, however, if a ship sacrifices both its movement - and second action for a full turn, repairing one major damage of the player's choice. -
- From a D20 - 0 - 5, Only superficial damage was taken, nothing happens
- 6 - 7, The ship's engines are disabled, and it will be unable to move until repairs are done
- 8 - 10, The ship's weapons are disabled, and it will be unable to attack until repairs are done
- 11 - 12, The ship's main reactor fails, both weapons and movement will be disabled until repairs are done
- 13 - 16, The ship suffers a disabling breach, and it will be lost if this compounds with another problem
- 17 - 20, The ship suffers catastrophic structural damage, and it will be lost if this compounds with another problem
-
- If a ship is lost in combat, then one of two things will happen. If the reactor was damaged - at the time of the vessel being lost, then it should catastrophically fail and cause - any ships near it should take damage from the detonation, and the ship itself should be - removed from the board. If the reactor was not damaged when the vessel was lost, however, - then the ship's color should be changed to a neutral grey, where it will remain as an empty - hulk that can be used for cover or concealment by other ships. -
- Objectives and Victory
- At the start of the match, the game master should assign each team, or player, a specific objective - that they must complete in order to win. This objective can be something simple like complete - destruction of the enemy forces. However more complex objectives, like escorting a civilian - ship to a nearby planet, protecting a station of attack, and so on, are all possible. In the end - it is up to the game master to come up with a scenario and objectives. -
- When the game master determines these objectives to be complete, or that some kind of game - ending condition has been achieved, then they may end the game at will. -
- *Wargame: Blue Lizard is a copyright protected title under ownership of Nanotrasen - - - "} + starting_content = "Formatting is a fuck - 2564 kill em all - Just go to this link in your browser https://hackmd.io/@Paxilmaniac/H1ZVsTIYR" /obj/item/book/manual/wargame_rules/examples name = "Wargame: Blue Lizard - Example Ships and Scenarios" icon_state = "book1" - starting_author = "Nanotrasen Naval Wargames Commission" + starting_author = "John War - CEO of War" starting_title = "Wargame: Blue Lizard - Example Ships and Scenarios" - starting_content = {" - - - - - -
- Official publication of the Nanotrasen Naval Wargames Commission -

Wargame: Blue Lizard

-
-

Introduction

- Should you not have read the example ruleset that should have come with this book, then it is - highly suggested that you read through that first. This publication will contain a list of example - ships and scenarios for using in games. It should be noted that it is not required to use the - ships in this book and that making your own with your game master is encouraged. -
-

Example Ships

- Nanotrasen
- Nanotrasen's fleet has historically been focused on quick response, especially due to the spread - of Nanotrasen assets across the galaxy. Their ships are often built to simply get to a location - fast and, hopefully, scare off anything that's there. This isn't to say that modern vessels are - incapable of heavy combat, though the vessels in this list will be based upon older, decommissioned - ship types due to modern designs being classified. -
- -- Patrol Corvette --
- A small vessel armed with little more than some cannons, lacking heavy armor and point defense, - though able to travel quickly due to its relatively small size and weight.
- - Represented by a small ship marker
- - Cannons
- - ~1 tile's length of movement range -
- -- Torpedo Frigate --
- Built to handle threats that the patrol corvette couldn't, usually carries some anti ship torpedoes - into battle. - - Represented by a medium ship marker
- - 2 Torpedoes
- - Strong point defense
- - ~1 tile's length of movement range -
- -- Light Carrier --
- Usually sent with patrols of smaller craft, used as a command and support vessel wherever task force - cohesion is needed, or just fighter support.
- - Represented by a large ship marker
- - 2 Wings of strike craft, armed with 3 seeking missiles each wing
- - Strong point defense
- - ~1/2 a tile's length of movement range -
- -- Battlecruiser --
- The largest commonly fielded ship in Nanotrasen's navy, a fast response vessel with enough guns and - armor to handle any large threat the fleet comes across, though these ships are a rare sight.
- - Represented by an alternate large ship marker
- - Cannons
- - Heavy armor
- - Strong point defense system
- - ~1/2 a tile's length of movement range -
- SolFed
- SolFed's navy is possibly the oldest and largest in the known universe, having more experience in - combat historically than most other navies combined. Nowadays, due to the expanse of SolFed space, - their patrols are thin stretched across the space they control, large groups of ships a rare sight. - A side effect of this is that they usually lack smaller combat vessels, favoring larger ships.
-
- -- Flak Frigate --
- Built special purpose to shoot down the vast numbers of strike craft that were often employed by SolFed's - enemies in large scale disputes, comes packed with enough point defense to make any carrier captain cry.
- - Represented by a medium ship marker
- - Cannons
- - 4 Seeking missiles
- - Strong point defense
- - ~1 tile's length of movement range -
- -- Light Cruiser --
- The mainstay ship of any SolFed fleet, with enough armor and firepower to cruise into the thick of - any battle and more than likely come out the other side still operational.
- - Represented by a large ship marker
- - Cannons
- - Heavy armor
- - Strong point defense
- - ~1/2 a tile's length of movement range -
- -- Heavy Carrier --
- A prohibitively expensive carrier (not like this stops SolFed) that, while rarely fielded, can bring - more strike craft into battle than any ship known to mankind.
- - Represented by an alternative large ship marker
- - 4 Wings of strike craft, with 3 seeking missiles each wing
- - Strong point defense
- - ~1/2 a tile's length of movement range -
- NRI
- The NRI's navy has always been at least a contender to SolFed's and Nanotrasen's own, heavily focused on missiles - with very few ships straying away from that doctrine. -
- -- Patrol Corvette -- - A common sight in NRI controlled space, with many owned by not only the navy, but also the government's - police forces. Usually what that means is parking one near unruly stations and outposts, just to remind - them who owns the space they live in.
- - Represented by a small ship marker
- - Cannons
- - ~1 tile's length of movement range -
- -- Defense Frigate --
- Built for the express purpose of ruining the day of any territorial invader, stacked up with the heaviest - armor of any frigate in the known universe, with weapons to deal back any damage thrown at it.
- - Represented by a medium ship marker
- - Cannons
- - 4 Seeking missiles
- - Heavy armor
- - ~1/2 a tile's length of movement range -
- -- Missile Destroyer --
- Missiles? You like missiles don't you? I hope you do, because when NRI naval command demanded more missiles - on a vessel, their shipyards gave the answer in the form of what is essentially a cargo ship filled to - the brim with every guided missile they could find.
- - Represented by a large ship marker
- - Bottomless seeking missiles
- - Heavy armor
- - ~1/2 a tile's length of movement range -
- Mothic Raiders - Though nowhere near as common as they were in the years since official contact with the Nomad Fleet, - explorers of humanity's past have been plagued with raids from pirate ships of mothic origin. Though - not malicious in nature, they would often come in skirmishes with patrol and escort forces on the outer - rim of SolFed territory, and may still rarely commit to raids against human ships even today. -
- -- Raider Corvette --
- The smallest and most common ship in mothic pirate bands, using the Nomad Fleet's prowess in ship - technology to scream across the stars faster than any vessel humanity could come up with.
- - Represented by a small ship marker
- - Cannons
- - 1 Torpedo
- - ~1 and 1/2 a tile's a movement range -
- -- Mini Carrier --
- Often the core of mothic pirate bands, a small vessel usually kept on the backlines of raids, - capable of carrying a small compliment of strike craft to support them.
- - Represented by a medium ship marker
- - 2 Wings of strike craft, with 3 seeking missiles each wing
- - Strong point defense
- - ~1 tile's movement range -
- -- Rocket Destroyer --
- The result of common incidents where a captain will choose to evacuate a cargo vessel before a - band of mothic raiders boards, leaving the ship fully to the control of the pirates. This will - often result in them crudely converting the vessel into a warship of some kind.
- - Represented by a large ship marker
- - Bottomless supply of unguided rockets, can be fired twice per turn
- - Weak construction
- - ~1 tile's movement range -
-

Example Scenarios

- -- Nanotrasen/NRI Station Skirmish --
- A Nanotrasen sponsored station located in NRI border territories has violated several regulations - and laws, and an NRI patrol fleet has been sent to repossess the station. A force of Nanotrasen - ships jumps in just in time to intercept.
- - Takes place with a Nanotrasen station surrounded by a large asteroid field of some kind between - where both teams start.
- - Either side will win through complete destruction or surrender of the enemy.
- - The NRI should start with a few more ships, or stronger ships than the NT force, however - the NT station should have several defensive platforms surrounding it to supplement.
-
- -- NRI/SolFed Border Conflict --
- Two sizeable fleets from both SolFed, and the NRI meet in disputed space. A battle ensues soon - after, this fight being only a small part of a larger battle.
- - Takes place in the rings of a nearby planet, large dust fields and asteroids making spotting - other ships difficult.
- - Either side will win through complete destruction or surrender of the enemy.
- - Both the NRI and SolFed fleets should be about the same size and strength. -
- -- SolFed/Mothic Raiders Convoy Raid --
- A convoy of Nanotrasen cargo vessels, escorted by a small patrol force, come under attack by a sizeable - band of mothic raiders.
- - Takes place in a dense asteroid field
- - NT will win if they destroy the raiders completely
- - The raiders will win if they destroy all of NT's cargo ships
- - NT's fleet should be a small number of combat vessels, escorting 2-3 large cargo ships - with stats as follows:
- - Weak construction
- - ~1/2 a tile's length of movement range
- - The mothic raider fleet should be larger than NT's - - - "} + starting_content = "Formatting is a fuck - 2564 kill em all - Just go to this link in your browser https://hackmd.io/@Paxilmaniac/rJwy1C8KR" diff --git a/modular_doppler/wargaming/code/projectors.dm b/modular_doppler/wargaming/code/projectors.dm index 78cab9a8c5b71..3abfc01bbada9 100644 --- a/modular_doppler/wargaming/code/projectors.dm +++ b/modular_doppler/wargaming/code/projectors.dm @@ -3,6 +3,7 @@ desc = "A handy-dandy holographic projector developed by Nanotrasen Naval Command for playing wargames with, this one seems broken." icon = 'modular_doppler/wargaming/icons/projectors_and_holograms.dmi' icon_state = "projector" + base_icon_state = "projector" inhand_icon_state = "electronic" worn_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' From 0ef44d3e8fbfa75dc171388f46bfcef19cfc4d51 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 30 Jul 2024 16:47:21 -0400 Subject: [PATCH 5/6] get real --- modular_doppler/wargaming/code/game_kit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/wargaming/code/game_kit.dm b/modular_doppler/wargaming/code/game_kit.dm index e88b285782458..32284784cc291 100644 --- a/modular_doppler/wargaming/code/game_kit.dm +++ b/modular_doppler/wargaming/code/game_kit.dm @@ -1,6 +1,6 @@ /obj/item/storage/briefcase/secure/wargame_kit name = "DIY Wargaming Kit" - desc = "Contains everything an aspiring naval officer (or just massive nerd) would need for a proper modern naval wargame." + desc = "Contains everything an aspiring naval officer (or just huge fucking nerd) would need for a proper modern naval wargame." custom_premium_price = PAYCHECK_CREW * 2 /obj/item/storage/briefcase/secure/white/wargame_kit/PopulateContents() From d58cd897a73c7175f086a3d505a3c58bad8de1a2 Mon Sep 17 00:00:00 2001 From: Paxilmaniac Date: Tue, 30 Jul 2024 16:53:52 -0400 Subject: [PATCH 6/6] fixes briefcase --- modular_doppler/wargaming/code/game_kit.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_doppler/wargaming/code/game_kit.dm b/modular_doppler/wargaming/code/game_kit.dm index 32284784cc291..729ee80fe3985 100644 --- a/modular_doppler/wargaming/code/game_kit.dm +++ b/modular_doppler/wargaming/code/game_kit.dm @@ -3,7 +3,7 @@ desc = "Contains everything an aspiring naval officer (or just huge fucking nerd) would need for a proper modern naval wargame." custom_premium_price = PAYCHECK_CREW * 2 -/obj/item/storage/briefcase/secure/white/wargame_kit/PopulateContents() +/obj/item/storage/briefcase/secure/wargame_kit/PopulateContents() var/static/items_inside = list( /obj/item/wargame_projector/ships = 1, /obj/item/wargame_projector/ships/red = 1,