Skip to content

Commit

Permalink
Merge branch 'Citadel-Station-13:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
jakeramsay007 authored Aug 18, 2024
2 parents e12d8e1 + a6fbd81 commit 3ecc9b0
Show file tree
Hide file tree
Showing 132 changed files with 685 additions and 5,477 deletions.
11 changes: 6 additions & 5 deletions .github/workflows/update_tgs_dmapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ on:

jobs:
update-dmapi:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
if: github.repository == 'Citadel-Station-13/Citadel-Station-13-RP' # Don't run on forks!
name: Update the TGS DMAPI
steps:
- name: Clone
uses: actions/checkout@v3
uses: actions/checkout@v4

- name: Branch
run: |
Expand All @@ -22,15 +22,16 @@ jobs:
- name: Apply DMAPI update
uses: tgstation/tgs-dmapi-updater@v2
id: dmapi-update
with:
header-path: 'code/__DEFINES/tgs.dm'
library-path: 'code/modules/tgs'

- name: Commit and Push
continue-on-error: true
run: |
git config user.name tgstation-server
git config user.email [email protected]
git config user.name "tgstation-server-ci[bot]"
git config user.email "161980869+tgstation-server-ci[bot]@users.noreply.github.com"
git add .
git commit -m 'Update TGS DMAPI'
git push -f -u origin tgs-dmapi-update
Expand All @@ -42,7 +43,7 @@ jobs:
source_branch: "tgs-dmapi-update"
destination_branch: "master"
pr_title: "Automatic TGS DMAPI Update"
pr_body: "This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging."
pr_body: "This pull request updates the TGS DMAPI to the latest version. Please note any changes that may be breaking or unimplemented in your codebase by checking what changes are in the definitions file: code/__DEFINES/tgs.dm before merging.\n\n${{ steps.dmapi-update.outputs.release-notes }}"
pr_label: "Tools"
pr_allow_empty: false
github_token: ${{ secrets.SILICONS_BOT_TOKEN }}
10 changes: 8 additions & 2 deletions citadel.dme
Original file line number Diff line number Diff line change
Expand Up @@ -1067,6 +1067,11 @@
#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\supplies.dm"
#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\vehicles.dm"
#include "code\game\content\factions\corporations\nanotrasen\nanotrasen-supply\voidsuits.dm"
#include "code\game\content\factions\orion\iwl\armor.dm"
#include "code\game\content\factions\orion\iwl\guns.dm"
#include "code\game\content\factions\orion\iwl\head.dm"
#include "code\game\content\factions\orion\iwl\suits.dm"
#include "code\game\content\factions\orion\iwl\uniform.dm"
#include "code\game\content\locations\frontier.dm"
#include "code\game\dna\dna2.dm"
#include "code\game\dna\dna2_domutcheck.dm"
Expand Down Expand Up @@ -1298,7 +1303,6 @@
#include "code\game\machinery\oxygen_pump.dm"
#include "code\game\machinery\pda_multicaster.dm"
#include "code\game\machinery\pointdefense.dm"
#include "code\game\machinery\portable_turret.dm"
#include "code\game\machinery\recharger.dm"
#include "code\game\machinery\rechargestation.dm"
#include "code\game\machinery\recipe_lookup.dm"
Expand All @@ -1313,7 +1317,6 @@
#include "code\game\machinery\syndicatebeacon.dm"
#include "code\game\machinery\transportpod.dm"
#include "code\game\machinery\turnstile.dm"
#include "code\game\machinery\turret_control.dm"
#include "code\game\machinery\vitals_monitor.dm"
#include "code\game\machinery\wall_frames.dm"
#include "code\game\machinery\washing_machine.dm"
Expand Down Expand Up @@ -1418,6 +1421,9 @@
#include "code\game\machinery\teleporter\console.dm"
#include "code\game\machinery\teleporter\pad.dm"
#include "code\game\machinery\teleporter\projector.dm"
#include "code\game\machinery\turrets\portable_turret.dm"
#include "code\game\machinery\turrets\shielded_turret.dm"
#include "code\game\machinery\turrets\turret_control.dm"
#include "code\game\machinery\vending\drinks.dm"
#include "code\game\machinery\vending\engineering.dm"
#include "code\game\machinery\vending\loadout.dm"
Expand Down
1 change: 1 addition & 0 deletions code/__DEFINES/admin/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
#define SMITE_DROP_LIMB_RANDOM "Remove one(1) arm and one(1) leg"
#define SMITE_DROP_LIMB_ALL "Remove all(4) limbs"
#define SMITE_DROP_LIMB_PICK "Remove one specific limb"
#define SMITE_VALIDHUNT "Declare KOS (and optionally noncanon)"

#define ADMIN_LOOKUP(user) ("[key_name_admin(user)][ADMIN_QUE(user)]")
#define ADMIN_LOOKUPFLW(user) ("[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]")
Expand Down
5 changes: 4 additions & 1 deletion code/controllers/subsystem/assets.dm
Original file line number Diff line number Diff line change
Expand Up @@ -210,13 +210,16 @@ SUBSYSTEM_DEF(assets)

set_transport_to(newtransport)

/datum/controller/subsystem/assets/proc/reload_transport()
set_transport_to(new transport.type)

/datum/controller/subsystem/assets/proc/set_transport_to(datum/asset_transport/new_transport)
QDEL_NULL(transport)
transport = new_transport

// unload all asset packs
for(var/datum/asset_pack/pack in asset_packs)
pack.loaded_urls = null
pack.unload()
// unload all dynamic items
for(var/name in dynamic_asset_items_by_name)
var/datum/asset_item/dynamic/item = dynamic_asset_items_by_name[name]
Expand Down
3 changes: 3 additions & 0 deletions code/datums/changelog.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
if(.)
return
if(action == "get_month")
if(!params["date"] || !fexists("html/changelogs/archive/[params["date"]].yml"))
return TRUE
var/datum/asset_pack/changelog_item/changelog_item = changelog_items[params["date"]]
if (!changelog_item)
changelog_item = new /datum/asset_pack/changelog_item(params["date"])
SSassets.register_asset_pack(changelog_item)
changelog_items[params["date"]] = changelog_item
ui.send_asset(changelog_item)
return TRUE
Expand Down
5 changes: 5 additions & 0 deletions code/game/content/factions/orion/iwl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Interplanetary Worker's League

By Seeks

Description pending.
19 changes: 19 additions & 0 deletions code/game/content/factions/orion/iwl/armor.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/obj/item/clothing/suit/storage/vest/leaguearmor
name = "leaguer armored vest"
desc = "A cumbersome green armored vest with steel plates slotted on the inside. Part of the new MOROD gear rollout for IWL armed forces."
icon = 'icons/content/factions/orion/iwl/iwlsuit.dmi'
icon_state = "iwl_armor"
armor_type = /datum/armor/station/tactical
encumbrance = ITEM_ENCUMBRANCE_ARMOR_MEDIUM
weight = ITEM_WEIGHT_ARMOR_MEDIUM
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/suit/storage/vest/leaguearmorheavy
name = "leaguer heavy armored vest"
desc = "An even more cumbersome green armored vest with steel plates slotted on the inside, side-padding and an armored collar. Part of the new MOROD gear rollout for IWL armed forces. Looks like it can take a huge beating."
icon = 'icons/content/factions/orion/iwl/iwlsuit.dmi'
icon_state = "iwl_armor_heavy"
armor_type = /datum/armor/station/heavy
encumbrance = ITEM_ENCUMBRANCE_ARMOR_HEAVY
weight = ITEM_WEIGHT_ARMOR_HEAVY
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
52 changes: 52 additions & 0 deletions code/game/content/factions/orion/iwl/guns.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/obj/item/gun/ballistic/automatic/k25
name = "League Service Rifle"
desc = "A cheaply-made but rugged and reliable K25 semi-automatic rifle. A staple weapon of the Interplanetary Worker's League naval and armed forces, it handles a lighter caliber than other weaponry but packs quite the punch either way."
icon = 'icons/content/factions/orion/iwl/items/guns/k25.dmi'
icon_state = "k25"
w_class = WEIGHT_CLASS_BULKY
recoil = 2 // The battlerifle was known for its nasty recoil.
max_shells = 45
caliber = /datum/ammo_caliber/a9_5mm
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
magazine_type = /obj/item/ammo_magazine/a9_5mm/k25
allowed_magazines = list(/obj/item/ammo_magazine/a9_5mm/k25)
fire_sound = 'sound/content/factions/orion/iwl/gun_k25.ogg'
load_method = MAGAZINE
slot_flags = SLOT_BACK
one_handed_penalty = 40 // The weapon itself is heavy
render_use_legacy_by_default = FALSE
item_state = null

/obj/item/gun/ballistic/automatic/k25/update_icon()
. = ..()
update_held_icon()

/obj/item/gun/ballistic/automatic/k25/update_icon_state()
. = ..()
if(ammo_magazine)
icon_state = "k25"
else
icon_state = "k25-empty"

// ---------- AMMO & MAGAZINE

/obj/item/ammo_magazine/a9_5mm/k25
name = "box mag (9.5x40mm)"
icon = 'icons/content/factions/orion/iwl/ammo_vr.dmi'
icon_state = "k25_m"
ammo_caliber = /datum/ammo_caliber/a9_5mm
ammo_preload = /obj/item/ammo_casing/a95
ammo_max = 45
magazine_type = MAGAZINE_TYPE_NORMAL

/obj/item/ammo_magazine/a9_5mm/k25/empty
ammo_current = 0

// /obj/item/ammo_casing/s72
// desc = "A 9.5x40mm bullet casing."
// icon_state = "rifle-casing"
// caliber = "9.5x40mm"
// projectile_type = /obj/projectile/bullet/rifle/s72

// /obj/projectile/bullet/rifle/s72
// damage = 35
22 changes: 22 additions & 0 deletions code/game/content/factions/orion/iwl/head.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/obj/item/clothing/head/iwlcap
name = "officer's cap"
desc = "A fine officer's cap denoting a leaguer rank-bearer. A golden star is embedded to the front."
icon = 'icons/content/factions/orion/iwl/iwlhelms.dmi'
icon_state = "iwl_cap"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/head/helmet/iwlhelmet
name = "iwl helmet"
desc = "A green helmet with padding and machined steel coating. Looks like it can take a hit or two."
icon = 'icons/content/factions/orion/iwl/iwlhelms.dmi'
icon_state = "iwl_helmet"
armor_type = /datum/armor/station/tactical
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/head/helmet/iwlhelmetheavy
name = "heavy iwl helmet"
desc = "A green helmet with heavy padding and machined steel coating. Extended cheek plates and a mouthpiece protects the face. Heavy!"
icon = 'icons/content/factions/orion/iwl/iwlhelms.dmi'
icon_state = "iwl_helmet_heavy"
armor_type = /datum/armor/station/ballistic
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
13 changes: 13 additions & 0 deletions code/game/content/factions/orion/iwl/suits.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/obj/item/clothing/suit/iwlofficersuit
name = "officer's vest"
desc = "A heavy, winter-padded vest with some insignia marking the wearer as part of the IWL navy."
icon = 'icons/content/factions/orion/iwl/iwlsuit.dmi'
icon_state = "iwl_officer"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/suit/iwlcommissarsuit
name = "commissar vest"
desc = "A heavy, winter-padded vest with some insignia marking the wearer as part of the IWL navy. This one is particularly well-manufactured with additional regalia."
icon = 'icons/content/factions/orion/iwl/iwlsuit.dmi'
icon_state = "iwl_comm"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
20 changes: 20 additions & 0 deletions code/game/content/factions/orion/iwl/uniform.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/obj/item/clothing/under/iwlcommissar
name = "commissar uniform"
desc = "A decorated uniform belonging to a political officer. Red stripes on the shoulderpads denote their political affiliation to the All-Labor United Front."
icon = 'icons/content/factions/orion/iwl/iwluni.dmi'
icon_state = "iwl_comm_uniform"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/under/iwlofficer
name = "officer's uniform"
desc = "A decorated uniform belonging to a normal officer. Padded for cold Vorodzhian winters"
icon = 'icons/content/factions/orion/iwl/iwluni.dmi'
icon_state = "iwl_off_uniform"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL

/obj/item/clothing/under/iwluniform
name = "soldiery uniform"
desc = "Green fatigues for conscripted Leaguer youth. "
icon = 'icons/content/factions/orion/iwl/iwluni.dmi'
icon_state = "iwl_uniform"
worn_render_flags = WORN_RENDER_SLOT_ONE_FOR_ALL
35 changes: 35 additions & 0 deletions code/game/machinery/buttons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,38 @@
if(D.glass && (D.id_tint == src.id))
spawn(0)
D.toggle()

/obj/item/frame/window_tint_control
name = "window tint control frame"
desc = "Used for building a window tint controller."
icon = 'icons/obj/power_vr.dmi'
icon_state = "lightswitch-s1"
build_machine_type = /obj/structure/construction/window_tint_control

/obj/structure/construction/window_tint_control
name = "window tint control frame"
desc = "A window tint controller under construction."
icon = 'icons/obj/power_vr.dmi'
icon_state = "lightswitch-s1"
base_icon = "lightswitch-s"
build_machine_type = /obj/machinery/button/windowtint
x_offset = 26
y_offset = 26

/obj/machinery/button/windowtint/attackby(obj/item/W, mob/user, params)
src.add_fingerprint(user)
if(default_deconstruction_screwdriver(user, W))
return
if(default_deconstruction_crowbar(user, W))
return
return ..()

/obj/machinery/button/windowtint/dismantle()
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
var/obj/structure/construction/window_tint_control/A = new(src.loc, src.dir)
A.stage = FRAME_WIRED
A.pixel_x = pixel_x
A.pixel_y = pixel_y
A.update_icon()
qdel(src)
return 1
File renamed without changes.
24 changes: 24 additions & 0 deletions code/game/machinery/turrets/shielded_turret.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/obj/machinery/porta_turret/stationary/shielded
var/obj/item/shield_projector/rectangle/shield_projector
var/shield_health = 150
var/shield_regen_delay = 10 SECONDS
var/shield_regen_amount = 10
var/shield_size_x = 1
var/shield_size_y = 1

/obj/machinery/porta_turret/stationary/shielded/hostile
check_all = TRUE

/obj/machinery/porta_turret/stationary/shielded/Initialize(mapload)
shield_projector = new /obj/item/shield_projector/rectangle(src)
shield_projector.shield_health = shield_health
shield_projector.max_shield_health = shield_health
shield_projector.shield_regen_delay = shield_regen_delay
shield_projector.shield_regen_amount = shield_regen_amount
shield_projector.size_x = shield_size_x
shield_projector.size_y = shield_size_y

// we do this here so that the above changes get included
shield_projector.always_on = TRUE
shield_projector.create_shields()
return ..()
File renamed without changes.
2 changes: 1 addition & 1 deletion code/game/objects/items/inducer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
qdel(charge_beam)
A.remove_filter("inducer_outline")
inducing = FALSE
user.visible_message(SPAN_NOTICE("[user] recharged [A]."), SPAN_NOTICE("Rechraged [A] with [used] units of power."))
user.visible_message(SPAN_NOTICE("[user] recharged [A]."), SPAN_NOTICE("Recharged [A] with [used] units of power."))

/obj/item/inducer/object_cell_slot_removed(obj/item/cell/cell, datum/object_system/cell_slot/slot)
. = ..()
Expand Down
9 changes: 1 addition & 8 deletions code/game/objects/items/paintkit.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// todo: completely rework this stupid shit, why are mech paint kits in here?
/obj/item/kit
icon_state = "modkit"
icon = 'icons/obj/device.dmi'
Expand Down Expand Up @@ -251,14 +252,6 @@
M.update_icon()
use(1, user)

/obj/vehicle/sealed/mecha/attackby(var/obj/item/W, var/mob/user)
if(istype(W, /obj/item/kit/paint))
var/obj/item/kit/paint/P = W
P.customize(src, user)
return
else
return ..()

//Ripley APLU kits.
/obj/item/kit/paint/ripley
name = "\"Classic\" APLU customisation kit"
Expand Down
4 changes: 3 additions & 1 deletion code/modules/admin/admin_verbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ var/list/admin_verbs_admin = list(
/client/proc/admin_cancel_shuttle, //allows us to cancel the emergency shuttle, sending it back to CentCom,
/client/proc/cmd_admin_direct_narrate, //send text directly to a player with no padding. Useful for narratives and fluff-text,
/client/proc/cmd_admin_local_narrate,
/client/proc/cmd_admin_world_narrate, //sends text to all players with no padding,
/client/proc/cmd_admin_world_narrate,
/client/proc/cmd_admin_z_narrate, //sends text to all players on a z-level.When Global is too much
/client/proc/cmd_admin_create_centcom_report,
/client/proc/check_words, //displays cult-words,
/client/proc/check_ai_laws, //shows AI and borg laws,
Expand Down Expand Up @@ -277,6 +278,7 @@ var/list/admin_verbs_hideable = list(
/client/proc/cmd_admin_direct_narrate,
/client/proc/cmd_admin_local_narrate,
/client/proc/cmd_admin_world_narrate,
/client/proc/cmd_admin_z_narrate,
/client/proc/check_words,
/client/proc/play_local_sound,
/client/proc/play_sound,
Expand Down
19 changes: 19 additions & 0 deletions code/modules/admin/verbs/randomverbs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,25 @@
message_admins("<span class='adminnotice'><b> LocalNarrate: [key_name_admin(usr)] at [ADMIN_COORDJMP(A)]:</b> [msg]<BR></span>")
// SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!

/client/proc/cmd_admin_z_narrate()
set category = "Special Verbs"
set name = "Z Narrate"

if(!check_rights(R_ADMIN))
return

var/msg = input("Enter the text you wish to show an entire Z level:", "Z Narrate:") as text|null

if (!msg)
return

for(var/mob/M in range(192)) //Yes this is lazy
to_chat(M, msg)

log_admin("ZNarrate: [key_name(usr)] at [ADMIN_COORDJMP(usr)]: [msg]")
message_admins("<span class='adminnotice'><b> ZNarrate: [key_name_admin(usr)] at [ADMIN_COORDJMP(usr)]:</b> [msg]<BR></span>")


/client/proc/cmd_admin_godmode(mob/M as mob in GLOB.mob_list)
set category = "Special Verbs"
set name = "Godmode"
Expand Down
Loading

0 comments on commit 3ecc9b0

Please sign in to comment.