mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 16:38:22 +01:00
Mecha Gamemode: Jockeys (#17148)
This commit is contained in:
@@ -515,6 +515,7 @@
|
||||
#include "code\game\antagonist\outsider\commando.dm"
|
||||
#include "code\game\antagonist\outsider\deathsquad.dm"
|
||||
#include "code\game\antagonist\outsider\ert.dm"
|
||||
#include "code\game\antagonist\outsider\jockey.dm"
|
||||
#include "code\game\antagonist\outsider\loner.dm"
|
||||
#include "code\game\antagonist\outsider\mercenary.dm"
|
||||
#include "code\game\antagonist\outsider\ninja.dm"
|
||||
@@ -623,6 +624,7 @@
|
||||
#include "code\game\gamemodes\events\holidays\holidays.dm"
|
||||
#include "code\game\gamemodes\extended\extended.dm"
|
||||
#include "code\game\gamemodes\heist\heist.dm"
|
||||
#include "code\game\gamemodes\jockeys\jockeys.dm"
|
||||
#include "code\game\gamemodes\loner\loner.dm"
|
||||
#include "code\game\gamemodes\malfunction\malf_hardware.dm"
|
||||
#include "code\game\gamemodes\malfunction\malf_research.dm"
|
||||
@@ -2059,6 +2061,7 @@
|
||||
#include "code\modules\heavy_vehicle\mech_life.dm"
|
||||
#include "code\modules\heavy_vehicle\mech_wreckage.dm"
|
||||
#include "code\modules\heavy_vehicle\mecha.dm"
|
||||
#include "code\modules\heavy_vehicle\mecha_part_spawners.dm"
|
||||
#include "code\modules\heavy_vehicle\components\_components.dm"
|
||||
#include "code\modules\heavy_vehicle\components\armor.dm"
|
||||
#include "code\modules\heavy_vehicle\components\arms.dm"
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
#define MODE_THRALL "thrall"
|
||||
#define MODE_REVENANT "revenant"
|
||||
#define MODE_GOLEM "golem"
|
||||
#define MODE_JOCKEY "jockey"
|
||||
|
||||
#define DEFAULT_TELECRYSTAL_AMOUNT 20
|
||||
#define DEFAULT_BLUECRYSTAL_AMOUNT 15
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#define IFF_RAIDER "raider"
|
||||
#define IFF_LONER "loner"
|
||||
#define IFF_BURGLAR "burglar"
|
||||
#define IFF_JOCKEY "jockey"
|
||||
#define IFF_CULTIST "cultist"
|
||||
#define IFF_BLUESPACE "bluespace"
|
||||
#define IFF_DEATHSQUAD "deathsquad"
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#define BLSP_FREQ 1253
|
||||
#define NINJ_FREQ 1255
|
||||
#define BURG_FREQ 1257
|
||||
#define JOCK_FREQ 1259
|
||||
#define RAID_FREQ 1277
|
||||
#define DTH_FREQ 1341
|
||||
#define AI_FREQ 1343
|
||||
@@ -52,6 +53,7 @@ var/list/radiochannels = list(
|
||||
"Ninja" = NINJ_FREQ,
|
||||
"Bluespace" = BLSP_FREQ,
|
||||
"Burglar" = BURG_FREQ,
|
||||
"Jockey" = JOCK_FREQ,
|
||||
"Raider" = RAID_FREQ,
|
||||
"Operations" = SUP_FREQ,
|
||||
"Service" = SRV_FREQ,
|
||||
@@ -78,6 +80,7 @@ var/list/reverseradiochannels = list(
|
||||
"[NINJ_FREQ]" = "Ninja",
|
||||
"[BLSP_FREQ]" = "Bluespace",
|
||||
"[BURG_FREQ]" = "Burglar",
|
||||
"[JOCK_FREQ]" = "Jockey",
|
||||
"[RAID_FREQ]" = "Raider",
|
||||
"[SUP_FREQ]" = "Operations",
|
||||
"[SRV_FREQ]" = "Service",
|
||||
|
||||
@@ -487,6 +487,66 @@
|
||||
if(W)
|
||||
W.handle_item_insertion(passport)
|
||||
|
||||
|
||||
/datum/outfit/admin/syndicate/jockey
|
||||
name = "Jockey"
|
||||
allow_backbag_choice = FALSE
|
||||
|
||||
uniform = list(
|
||||
/obj/item/clothing/under/color/darkred,
|
||||
/obj/item/clothing/under/color/red,
|
||||
/obj/item/clothing/under/color/lightred
|
||||
)
|
||||
|
||||
suit = list(
|
||||
/obj/item/clothing/suit/storage/hazardvest,
|
||||
/obj/item/clothing/suit/storage/hazardvest/green,
|
||||
/obj/item/clothing/suit/storage/hazardvest/red
|
||||
)
|
||||
|
||||
back = /obj/item/storage/backpack/duffel/syndie
|
||||
|
||||
belt = /obj/item/storage/belt/utility/very_full
|
||||
shoes = /obj/item/clothing/shoes/workboots/all_species
|
||||
glasses = null
|
||||
head = /obj/item/clothing/head/welding
|
||||
|
||||
gloves = /obj/item/clothing/gloves/yellow // glubbs
|
||||
|
||||
backpack_contents = list(
|
||||
/obj/item/storage/box/survival/engineer = 1,
|
||||
/obj/item/device/flashlight = 1,
|
||||
/obj/item/card/emag = 1
|
||||
)
|
||||
|
||||
l_ear = /obj/item/device/radio/headset/jockey
|
||||
r_pocket = /obj/item/device/special_uplink/jockey
|
||||
id = /obj/item/storage/wallet
|
||||
|
||||
id_iff = IFF_JOCKEY
|
||||
|
||||
/datum/outfit/admin/syndicate/jockey/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
|
||||
. = ..()
|
||||
if(visualsOnly)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(H)
|
||||
var/obj/item/gun/projectile/primary = new /obj/item/gun/projectile/silenced(T)
|
||||
var/obj/item/magazine = new primary.magazine_type(T)
|
||||
H.equip_to_slot_or_del(magazine, slot_l_store)
|
||||
var/obj/item/clothing/accessory/holster/armpit/holster = new /obj/item/clothing/accessory/holster/armpit(T)
|
||||
holster.holstered = primary
|
||||
primary.forceMove(holster)
|
||||
|
||||
var/obj/item/clothing/under/uniform = H.w_uniform
|
||||
uniform.attackby(holster, H)
|
||||
|
||||
var/obj/item/storage/wallet/W = H.wear_id
|
||||
var/obj/item/card/id/syndicate/raider/passport = new(H.loc)
|
||||
passport.name = "[H.real_name]'s Passport"
|
||||
if(W)
|
||||
W.handle_item_insertion(passport)
|
||||
|
||||
// Non-syndicate antag outfits
|
||||
|
||||
/datum/outfit/admin/highlander
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
var/datum/antagonist/jockey/jockeys
|
||||
|
||||
/datum/antagonist/jockey
|
||||
id = MODE_JOCKEY
|
||||
role_text = "Jockey"
|
||||
role_text_plural = "Jockeys"
|
||||
bantype = "jockey"
|
||||
antag_indicator = "jockey"
|
||||
landmark_id = "jockeyspawn"
|
||||
welcome_text = "You are a Jockey, one of the best damn mech pilots in the spur.<br>\
|
||||
Your uplink will grant you access to various tools you may need to attempt to accomplish your goal.<br>\
|
||||
You can use :H or :B to talk on your encrypted channel, which only you and your partner can read.<br>"
|
||||
flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER
|
||||
antaghud_indicator = "hudjockey"
|
||||
required_age = 7
|
||||
|
||||
hard_cap = 3
|
||||
hard_cap_round = 3
|
||||
initial_spawn_req = 2
|
||||
initial_spawn_target = 2
|
||||
|
||||
faction = "syndicate"
|
||||
|
||||
id_type = /obj/item/card/id/syndicate
|
||||
|
||||
/datum/antagonist/jockey/New()
|
||||
..()
|
||||
jockeys = src
|
||||
|
||||
/datum/antagonist/jockey/update_access(var/mob/living/player)
|
||||
for(var/obj/item/storage/wallet/W in player.contents)
|
||||
for(var/obj/item/card/id/id in W.contents)
|
||||
id.name = "passport - [player.real_name]"
|
||||
id.registered_name = player.real_name
|
||||
W.name = "[initial(W.name)] ([id.name])"
|
||||
|
||||
/datum/antagonist/jockey/equip(var/mob/living/carbon/human/player)
|
||||
if(!..())
|
||||
return FALSE
|
||||
|
||||
for(var/obj/item/I in player)
|
||||
if(istype(I, /obj/item/implant))
|
||||
continue
|
||||
player.drop_from_inventory(I)
|
||||
if(I.loc != player)
|
||||
qdel(I)
|
||||
|
||||
player.preEquipOutfit(/datum/outfit/admin/syndicate/jockey, FALSE)
|
||||
player.equipOutfit(/datum/outfit/admin/syndicate/jockey, FALSE)
|
||||
player.force_update_limbs()
|
||||
player.update_eyes()
|
||||
player.regenerate_icons()
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/antagonist/jockey/get_antag_radio()
|
||||
return "Jockey"
|
||||
@@ -0,0 +1,14 @@
|
||||
// medpop burglar/merc hybrid
|
||||
|
||||
/datum/game_mode/jockeys
|
||||
name = "jockeys"
|
||||
config_tag = "jockeys"
|
||||
required_enemies = 2
|
||||
required_players = 10
|
||||
antag_scaling_coeff = 7 // three jockeys at highpop
|
||||
round_description = "Metal Crushers ain't got shit on this."
|
||||
antag_tags = list(MODE_JOCKEY)
|
||||
|
||||
/datum/game_mode/jockeys/pre_setup()
|
||||
extended_round_description = "A couple coolant-soaked knuckleheads are on their way to turn a corporate workplace into a thunderdome. Is the crew ready to rumble?"
|
||||
return ..()
|
||||
@@ -18,6 +18,7 @@
|
||||
#define CHANNEL_NINJA "Ninja"
|
||||
#define CHANNEL_BLUESPACE "Bluespace"
|
||||
#define CHANNEL_BURGLAR "Burglar"
|
||||
#define CHANNEL_JOCKEY "Jockey"
|
||||
|
||||
var/global/list/ALL_RADIO_CHANNELS = list(
|
||||
CHANNEL_COMMON = TRUE,
|
||||
@@ -37,5 +38,6 @@ var/global/list/ALL_RADIO_CHANNELS = list(
|
||||
CHANNEL_MERCENARY = TRUE,
|
||||
CHANNEL_NINJA = TRUE,
|
||||
CHANNEL_BLUESPACE = TRUE,
|
||||
CHANNEL_BURGLAR = TRUE
|
||||
)
|
||||
CHANNEL_BURGLAR = TRUE,
|
||||
CHANNEL_JOCKEY = TRUE
|
||||
)
|
||||
|
||||
@@ -63,6 +63,12 @@
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
syndie = TRUE
|
||||
|
||||
/obj/item/device/encryptionkey/jockey
|
||||
icon_state = "cypherkey"
|
||||
additional_channels = list(CHANNEL_JOCKEY = TRUE, CHANNEL_HAILING = TRUE)
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
syndie = TRUE
|
||||
|
||||
/obj/item/device/encryptionkey/ninja
|
||||
icon_state = "cypherkey"
|
||||
additional_channels = list(CHANNEL_NINJA = TRUE, CHANNEL_HAILING = TRUE)
|
||||
|
||||
@@ -679,6 +679,12 @@
|
||||
syndie = TRUE
|
||||
ks1type = /obj/item/device/encryptionkey/burglar
|
||||
|
||||
/obj/item/device/radio/headset/jockey
|
||||
icon_state = "syn_headset"
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
syndie = TRUE
|
||||
ks1type = /obj/item/device/encryptionkey/jockey
|
||||
|
||||
/obj/item/device/radio/headset/ninja
|
||||
icon_state = "syn_headset"
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
|
||||
@@ -188,15 +188,15 @@ Then check if it's true, if true return. This will stop the normal menu appearin
|
||||
// and if it's sanitized for html.
|
||||
nanoui_data["exploit"]["nanoui_exploit_record"] = html_encode(L.exploit_record) // Change stuff into html
|
||||
nanoui_data["exploit"]["nanoui_exploit_record"] = replacetext(nanoui_data["exploit"]["nanoui_exploit_record"], "\n", "<br>") // change line breaks into <br>
|
||||
nanoui_data["exploit"]["name"] = html_encode(L.name)
|
||||
nanoui_data["exploit"]["sex"] = html_encode(L.sex)
|
||||
nanoui_data["exploit"]["age"] = html_encode(L.age)
|
||||
nanoui_data["exploit"]["species"] = html_encode(L.species)
|
||||
nanoui_data["exploit"]["rank"] = html_encode(L.rank)
|
||||
nanoui_data["exploit"]["citizenship"] = html_encode(L.citizenship)
|
||||
nanoui_data["exploit"]["employer"] = html_encode(L.employer)
|
||||
nanoui_data["exploit"]["religion"] = html_encode(L.religion)
|
||||
nanoui_data["exploit"]["fingerprint"] = html_encode(L.fingerprint)
|
||||
nanoui_data["exploit"]["name"] = html_encode(L.name)
|
||||
nanoui_data["exploit"]["sex"] = html_encode(L.sex)
|
||||
nanoui_data["exploit"]["age"] = html_encode(L.age)
|
||||
nanoui_data["exploit"]["species"] = html_encode(L.species)
|
||||
nanoui_data["exploit"]["rank"] = html_encode(L.rank)
|
||||
nanoui_data["exploit"]["citizenship"] = html_encode(L.citizenship)
|
||||
nanoui_data["exploit"]["employer"] = html_encode(L.employer)
|
||||
nanoui_data["exploit"]["religion"] = html_encode(L.religion)
|
||||
nanoui_data["exploit"]["fingerprint"] = html_encode(L.fingerprint)
|
||||
|
||||
nanoui_data["exploit_exists"] = 1
|
||||
break
|
||||
@@ -441,6 +441,10 @@ Then check if it's true, if true return. This will stop the normal menu appearin
|
||||
name = "sponsored uplink"
|
||||
starting_telecrystals = 20
|
||||
|
||||
/obj/item/device/special_uplink/jockey
|
||||
name = "jockey uplink"
|
||||
starting_telecrystals = 10
|
||||
|
||||
/obj/item/device/special_uplink/raider
|
||||
name = "underground uplink"
|
||||
starting_telecrystals = 3
|
||||
|
||||
@@ -166,6 +166,28 @@
|
||||
charge = min(charge + (maxcharge / 10), maxcharge)
|
||||
next_recharge = world.time + 1 MINUTE
|
||||
|
||||
/obj/item/cell/nuclear
|
||||
name = "miniaturized nuclear power core"
|
||||
desc = "A small self-charging thorium core that can store an immense amount of charge."
|
||||
origin_tech = list(TECH_POWER = 8, TECH_ILLEGAL = 4)
|
||||
icon_state = "icell"
|
||||
maxcharge = 50000
|
||||
matter = null
|
||||
var/next_recharge
|
||||
|
||||
/obj/item/cell/nuclear/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/item/cell/nuclear/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
return ..()
|
||||
|
||||
/obj/item/cell/nuclear/process()
|
||||
if(next_recharge < world.time)
|
||||
charge = min(charge + (maxcharge / 10), maxcharge)
|
||||
next_recharge = world.time + 30 SECONDS
|
||||
|
||||
/obj/item/cell/device/emergency_light
|
||||
name = "miniature power cell"
|
||||
desc = "A small power cell intended for use with emergency lighting."
|
||||
|
||||
@@ -86,6 +86,9 @@
|
||||
icon_auto_adapt = TRUE
|
||||
icon_supported_species_tags = list("taj")
|
||||
|
||||
/obj/item/clothing/shoes/workboots/all_species
|
||||
species_restricted = null
|
||||
|
||||
/obj/item/clothing/shoes/workboots/brown
|
||||
name = "brown workboots"
|
||||
desc = "A pair of brown steel-toed work boots designed for use in industrial settings. Safety first."
|
||||
|
||||
@@ -136,7 +136,8 @@
|
||||
if(!user || !user.client)
|
||||
return TRUE
|
||||
to_chat(user, "That's \a <b>[src]</b>.")
|
||||
to_chat(user, desc)
|
||||
if(desc)
|
||||
to_chat(user, desc)
|
||||
if(LAZYLEN(pilots) && (!hatch_closed || body.pilot_coverage < 100 || body.transparent_cabin))
|
||||
if(length(pilots) == 0)
|
||||
to_chat(user, "It has <b>no pilot</b>.")
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
/obj/effect/map_effect/mecha_part_spawner
|
||||
name = "mecha part spawner"
|
||||
icon_state = "beam_point"
|
||||
|
||||
var/list/parts_to_spawn = list()
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/Initialize(mapload)
|
||||
..()
|
||||
parts_to_spawn = get_parts_to_spawn()
|
||||
spawn_parts()
|
||||
return INITIALIZE_HINT_LATEQDEL
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/proc/get_parts_to_spawn()
|
||||
return list()
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/proc/spawn_parts()
|
||||
for(var/thing in parts_to_spawn)
|
||||
new thing(loc)
|
||||
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/manipulator
|
||||
name = "mecha manipulator spawner"
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/manipulator/get_parts_to_spawn()
|
||||
return subtypesof(/obj/item/mech_component/manipulators)
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/manipulator/spawn_parts()
|
||||
. = ..()
|
||||
new /obj/item/robot_parts/robot_component/actuator(loc)
|
||||
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/propulsion
|
||||
name = "mecha propulsion spawner"
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/propulsion/get_parts_to_spawn()
|
||||
return subtypesof(/obj/item/mech_component/propulsion)
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/propulsion/spawn_parts()
|
||||
. = ..()
|
||||
new /obj/item/robot_parts/robot_component/actuator(loc)
|
||||
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/sensors
|
||||
name = "mecha sensors spawner"
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/sensors/get_parts_to_spawn()
|
||||
return subtypesof(/obj/item/mech_component/sensors)
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/sensors/spawn_parts()
|
||||
. = ..()
|
||||
new /obj/item/robot_parts/robot_component/radio(loc)
|
||||
new /obj/item/robot_parts/robot_component/camera(loc)
|
||||
new /obj/item/mech_component/control_module(loc)
|
||||
|
||||
var/list/softwares = subtypesof(/obj/item/circuitboard/exosystem)
|
||||
for(var/software in softwares)
|
||||
new software(loc)
|
||||
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/chassis
|
||||
name = "mecha chassis spawner"
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/chassis/get_parts_to_spawn()
|
||||
return subtypesof(/obj/item/mech_component/chassis)
|
||||
|
||||
/obj/effect/map_effect/mecha_part_spawner/chassis/spawn_parts()
|
||||
. = ..()
|
||||
new /obj/item/robot_parts/robot_component/diagnosis_unit(loc)
|
||||
var/list/armors = typesof(/obj/item/robot_parts/robot_component/armor/mech)
|
||||
for(var/armor in armors)
|
||||
new armor(loc)
|
||||
@@ -15,6 +15,7 @@ var/list/department_radio_keys = list(
|
||||
":t" = "Mercenary", ".t" = "Mercenary",
|
||||
":x" = "Raider", ".x" = "Raider",
|
||||
":b" = "Burglar", ".b" = "Burglar",
|
||||
":k" = "Jockey", ".k" = "Jockey",
|
||||
":j" = "Bluespace", ".j" = "Bluespace",
|
||||
":y" = "Hailing", ".y" = "Hailing",
|
||||
":q" = "Ninja", ".q" = "Ninja",
|
||||
@@ -38,6 +39,7 @@ var/list/department_radio_keys = list(
|
||||
":T" = "Mercenary", ".T" = "Mercenary",
|
||||
":X" = "Raider", ".X" = "Raider",
|
||||
":B" = "Burglar", ".B" = "Burglar",
|
||||
":K" = "Jockey", ".K" = "Jockey",
|
||||
":J" = "Bluespace", ".J" = "Bluespace",
|
||||
":Y" = "Hailing", ".Y" = "Hailing",
|
||||
":Q" = "Ninja", ".Q" = "Ninja",
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
author: Geeves
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Added a new gamemode, Jockeys, featuring a new antag, Jockey. A mecha-antag focused gamemode. Minimum two antags, minimum ten players on the server for it to roll."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 8.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 195 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
@@ -132,6 +132,10 @@
|
||||
name = "Burglar Hideout"
|
||||
icon_state = "burglar"
|
||||
|
||||
/area/antag/jockey
|
||||
name = "Jockey Workshop"
|
||||
icon_state = "jockey"
|
||||
|
||||
/area/antag/loner
|
||||
name = "Loner Basement"
|
||||
icon_state = "loner"
|
||||
@@ -224,4 +228,4 @@
|
||||
requires_power = 0
|
||||
sound_env = STANDARD_STATION
|
||||
no_light_control = 1
|
||||
flags = RAD_SHIELDED | SPAWN_ROOF
|
||||
flags = RAD_SHIELDED | SPAWN_ROOF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user