Skip to content

Commit

Permalink
Lone Spacer offship (Aurorastation#19848)
Browse files Browse the repository at this point in the history
This adds the Lone Spacer offship and ghostrole. This is a shuttle-based
offship with only one slot, designed to be a totally generic and
versatile sandbox to play around with. It can be played in pretty much
any way imaginable, in any sector, any species, essentially any origin,
doing anything from piracy to smuggling, trading, light mining or
xenoarchaeology, or whatever else helps the intrepid explorer scratch
out a living from the stars.

**This is up for review.**

A few things to note:

- This adds a few crate variants to provide hazards in some of the
submaps. I've playtested these, they seem to work smoothly.
- There is an ongoing bug with shuttle-based offships, including this
and the Izharshan ship, in which telecommunications doesn't work unless
you clear every filtered frequency. I'm not attempting to tackle that
bug in this PR, so tentatively players will have to use the multitool by
the all-in-one to clear the filtering frequencies, or they can simply
use a shortwave.
- The ship is just within the constraints for shuttle size - I couldn't
make it any bigger. If it can't dock with a docking port, it's because
the docking port is mapped without enough space.
- IconDiffBot says I modified the Xanu Frigate overmap sprites at one
point. I'm not honestly sure how this happened, but it _seems_ fine?
- The workshop submap gives the ship a variety of generic augments, plus
all of the Zeng-Hu specific augments including the memory manipulator
and enhanced retinas. It doesn't have any more faction-specific augments
than those. The submap is mostly designed for installing prosthetics and
augments and making simple robots, but I'm pretty sure you could use it
to make a shipbound or IPC if you really wanted.

Credit to NobleRow for the overmap sprites!
  • Loading branch information
hazelrat authored Sep 9, 2024
1 parent 9fd9f52 commit 029a7f4
Show file tree
Hide file tree
Showing 13 changed files with 69,914 additions and 0 deletions.
4 changes: 4 additions & 0 deletions aurorastation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3968,6 +3968,10 @@
#include "maps\away\ships\konyang\water_barge\water_barge.dm"
#include "maps\away\ships\konyang\water_barge\water_barge_areas.dm"
#include "maps\away\ships\konyang\water_barge\water_barge_ghostroles.dm"
#include "maps\away\ships\lone_spacer\lone_spacer.dm"
#include "maps\away\ships\lone_spacer\lone_spacer_areas.dm"
#include "maps\away\ships\lone_spacer\lone_spacer_ghostroles.dm"
#include "maps\away\ships\lone_spacer\lone_spacer_landmarks.dm"
#include "maps\away\ships\nka\nka_merchant\nka_merchant.dm"
#include "maps\away\ships\nka\nka_merchant\nka_merchant_areas.dm"
#include "maps\away\ships\nka\nka_merchant\nka_merchant_ghostroles.dm"
Expand Down
5 changes: 5 additions & 0 deletions code/__DEFINES/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -810,3 +810,8 @@
id = ACCESS_TRAMP_FREIGHTER
desc = "Independent Freighter Access"

#define ACCESS_LONE_SPACER 243
/datum/access/lone_spacer_access
id = ACCESS_LONE_SPACER
desc = "Independent Skiff Access"

16 changes: 16 additions & 0 deletions code/game/objects/structures/crates_lockers/crates.dm
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,22 @@
break
return

/obj/structure/closet/crate/secure/large/larva // Spawns with one greimorian larva inside of it. Can mature inside, so be careful.

/obj/structure/closet/crate/secure/large/larva/fill()
new /obj/effect/spider/spiderling(src)

/obj/structure/closet/crate/secure/large/viscerator // Spawns with one viscerator inside of it.

/obj/structure/closet/crate/secure/large/viscerator/fill()
new /mob/living/simple_animal/hostile/viscerator(src)

/obj/structure/closet/crate/secure/large/rats // Spawns with rats inside it.

/obj/structure/closet/crate/secure/large/rats/fill()
for(var/i=1,i<=5,i++)
new /mob/living/simple_animal/rat(src)

/obj/structure/closet/crate/hydroponics
name = "hydroponics crate"
desc = "All you need to destroy those pesky weeds and pests."
Expand Down
11 changes: 11 additions & 0 deletions code/game/objects/structures/crates_lockers/largecrate.dm
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,14 @@

/obj/structure/largecrate/animal/moghes/otzek
held_type = /mob/living/simple_animal/otzek

// Hostile mob crates! Use with caution.
/obj/structure/largecrate/animal/shark
name = "shark crate"
held_type = /mob/living/simple_animal/hostile/carp/shark
desc = "A hefty wooden crate. This one has bright yellow and red markings on the sides warning of hazardous contents."

/obj/structure/largecrate/animal/babycarp
name = "carp crate"
held_type = /mob/living/simple_animal/carp/baby
desc = "A hefty wooden crate. This one has bright yellow and red markings on the sides warning of hazardous contents."
58 changes: 58 additions & 0 deletions html/changelogs/hazelmouse-lonespacer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# - (fixes bugs)
# wip
# - (work in progress)
# qol
# - (quality of life)
# soundadd
# - (adds a sound)
# sounddel
# - (removes a sound)
# rscadd
# - (adds a feature)
# rscdel
# - (removes a feature)
# imageadd
# - (adds an image or sprite)
# imagedel
# - (removes an image or sprite)
# spellcheck
# - (fixes spelling or grammar)
# experiment
# - (experimental change)
# balance
# - (balance changes)
# code_imp
# - (misc internal code change)
# refactor
# - (refactors code)
# config
# - (makes a change to the config files)
# admin
# - (makes changes to administrator tools)
# server
# - (miscellaneous changes to server)
#################################

# Your name.
author: hazelmouse

# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True

# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
changes:
- rscadd: "Adds the Lone Spacer ghostrole, a small ship crewed by only one person, spawning in all sectors."
Binary file modified icons/obj/overmap/overmap_ships.dmi
Binary file not shown.
90 changes: 90 additions & 0 deletions maps/away/ships/lone_spacer/lone_spacer.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/datum/map_template/ruin/away_site/lone_spacer
name = "Independent Skiff"
id = "lone_spacer"
description = "A small independent spacecraft."

prefix = "ships/lone_spacer/"
suffix = "lone_spacer.dmm"

spawn_weight = 1
ship_cost = 1
shuttles_to_initialise = list(/datum/shuttle/autodock/overmap/lone_spacer)
sectors = list(ALL_POSSIBLE_SECTORS)
template_flags = TEMPLATE_FLAG_SPAWN_GUARANTEED

unit_test_groups = list(1)

/singleton/submap_archetype/lone_spacer
map = "Independent Skiff"
descriptor = "A small independent spacecraft."

// Shuttle stuff!
/obj/effect/overmap/visitable/ship/landable/lone_spacer
name = "Independent Skiff"
class = "ICV"
shuttle = "Independent Skiff"
desc = "Of all of the most ubiquitous ships in the spur today, the Minnow-class skiff has perhaps seen one of the most meteoric rises. Designed in 2443 by Hephaestus Industries as a short-distance hauling craft intended to be operated by only one or two crewmates, the Minnow-class quickly caught on with virtually every demographic imaginable - logisticians appreciated its standardised design and expansive cargo holds, scientists its ease of use and modification, smugglers its nimble speed and ability to dodge patrols with its warp drive, and pirates its discreet and inexpensive nature. Due to this, it's challenging to make any reliable precursory judgement on how a Minnow-class hauler pays back its costs, and it's even harder to predict the character of its pilots. Some caution is advised."
icon_state = "spacer"
moving_state = "spacer_moving"
colors = list("#70a170")
max_speed = 1/(2 SECONDS)
burn_delay = 2 SECONDS
vessel_mass = 7500
vessel_size = SHIP_SIZE_SMALL
fore_dir = SOUTH
use_mapped_z_levels = TRUE
invisible_until_ghostrole_spawn = TRUE
designer = "Hephaestus Industries"
volume = "30 meters length, 20 meters beam/width, 7 meters vertical height"
drive = "Low-Speed Warp Acceleration FTL Drive"
weapons = "Starboard low-end ballistic cannon"
sizeclass = "Minnow-class Hauler"
shiptype = "Eclectic short-distance shipping utilities"

/obj/effect/overmap/visitable/ship/landable/lone_spacer/New()
designation = "[pick("Roach", "Moonskipper", "Thunder", "Firefly", "Starfarer", "Workhorse", "Light-in-the-Dark", "Gift Horse", "Rain", "Mirth", "Ever-Lucky", "Tin-and-Copper", "Bright Burning", "Bird-of-the-Heavens", "Ruby", "Old Story", "Fardancer", "Albedo", "Lightchaser", "Sooner-than-Later", "Sunlight", "Pearl-of-the-Morning", "Endless", "Finity", "Calm Drift", "Mercury's Hand")]"
..()

// Shuttle control console
/obj/machinery/computer/shuttle_control/explore/terminal/lone_spacer
name = "shuttle control console"
shuttle_tag = "Independent Skiff"

// This controls how docking behaves
/datum/shuttle/autodock/overmap/lone_spacer
name = "Independent Skiff"
move_time = 20
range = 2
fuel_consumption = 2
shuttle_area = list(/area/shuttle/lone_spacer/bridge, /area/shuttle/lone_spacer/bridge_foyer, /area/shuttle/lone_spacer/fore_hall, /area/shuttle/lone_spacer/washroom, /area/shuttle/lone_spacer/storage, /area/shuttle/lone_spacer/port_storage, /area/shuttle/lone_spacer/port_nacelle, /area/shuttle/lone_spacer/starboard_storage, /area/shuttle/lone_spacer/starboard_nacelle)
current_location = "nav_lone_spacer_space"
dock_target = "lone_spacer"
landmark_transition = "nav_lone_spacer_transit"
logging_home_tag = "nav_lone_spacer_space"
defer_initialisation = TRUE

// Main shuttle landmark
/obj/effect/shuttle_landmark/ship/lone_spacer
shuttle_name = "Independent Skiff"
landmark_tag = "nav_lone_spacer_space"

// Transit landmark
/obj/effect/shuttle_landmark/lone_spacer_transit
name = "In transit"
landmark_tag = "nav_lone_spacer_transit"
base_turf = /turf/space

// Custom stuff
/obj/machinery/light/colored/decayed/lone_spacer_dimmed
brightness_power = 0.3

/obj/item/clothing/accessory/scarf/lone_spacer_green
color = "#395340"
name = "faded green scarf"
desc = "A soft green scarf, worn at the edges. You see faint embroidery, faded with time beyond recognition."

// Feels bad to develop around bugs, but I don't see myself fixing the telecommunications bug imminently so it'll have to do.
/obj/item/paper/fluff/lone_spacer_note
name = "scrawled note"
desc = "A paper. It's a little crumpled."
info = "<font face=\"Verdana\"><b>NOTE TO SELF: MUST CLEAR FILTERING FREQUENCIES IN SERVER.</b></center></font>"
Loading

0 comments on commit 029a7f4

Please sign in to comment.