Skip to content

Commit

Permalink
Movie APC Mk2 (#178)
Browse files Browse the repository at this point in the history
Co-authored-by: AndroBetel <[email protected]>
  • Loading branch information
DexterDude and AndroBetel committed Mar 27, 2024
1 parent 11c2ec6 commit 2a6f1d8
Show file tree
Hide file tree
Showing 16 changed files with 299 additions and 178 deletions.
2 changes: 1 addition & 1 deletion code/datums/skills/uscm.dm
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ COMMAND STAFF
SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED,
SKILL_MEDICAL = SKILL_MEDICAL_MEDIC,
SKILL_POLICE = SKILL_POLICE_FLASH,
SKILL_VEHICLE = SKILL_VEHICLE_SMALL,
SKILL_VEHICLE = SKILL_VEHICLE_LARGE,
SKILL_JTAC = SKILL_JTAC_EXPERT,
SKILL_INTEL = SKILL_INTEL_TRAINED,
SKILL_SURGERY = SKILL_SURGERY_NOVICE,
Expand Down
21 changes: 21 additions & 0 deletions code/game/objects/structures/gun_rack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,24 @@
max_stored = 6
initial_stored = 6
allowed_type = /obj/item/weapon/gun/rifle/type71

/obj/structure/gun_rack/apc
name = "APC ammo compartment"
icon_state = "frontal"
desc = "Uhoh. You shouldn't be seeing this."

/obj/structure/gun_rack/apc/frontal
name = "frontal cannon ammo storage compartment"
icon_state = "frontal"
desc = "A small compartment that stores ammunition for the APC's 'Bleihagel RE-RE700 Frontal Cannon'."
max_stored = 2
initial_stored = 0
allowed_type = /obj/item/ammo_magazine/hardpoint/m56_cupola/frontal_cannon

/obj/structure/gun_rack/apc/boyars
name = "dual cannon ammo storage compartment"
icon_state = "boyars"
desc = "A small compartment that stores ammunition for the APC's 'PARS-159 Boyars Dualcannon'."
max_stored = 2
initial_stored = 0
allowed_type = /obj/item/ammo_magazine/hardpoint/boyars_dualcannon
17 changes: 17 additions & 0 deletions code/game/objects/structures/tables_racks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,23 @@
icon_state = "clothtable"
table_prefix = "cloth"

/obj/structure/surface/table/reinforced/toc
name = "operations table"
desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
icon_state = "tocWtable"
table_prefix = "toc"

/obj/structure/surface/table/reinforced/toc/update_icon()
return

/obj/structure/surface/table/reinforced/toc/west
desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
icon_state = "tocWtable"

/obj/structure/surface/table/reinforced/toc/east
desc = "A square metal surface resting on its fat metal bottom. You can't flip something that doesn't have legs."
icon_state = "tocEtable"

/*
* Racks
*/
Expand Down
5 changes: 5 additions & 0 deletions code/modules/almayer/machinery.dm
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,11 @@
minimap_type = MINIMAP_FLAG_PMC
faction = FACTION_PMC

/obj/structure/machinery/prop/almayer/CICmap/toc
name = "tactical map screen"
desc = "A screen on the TOC computer displaying the tactical map."
icon_state = "toc_map"

//Nonpower using props

/obj/structure/prop/almayer
Expand Down
8 changes: 8 additions & 0 deletions code/modules/cm_marines/overwatch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -906,6 +906,14 @@
/obj/structure/machinery/computer/overwatch/freelance
faction = FACTION_FREELANCER

/obj/structure/machinery/computer/overwatch/toc
name = "TOC Overwatch Console"
desc = "The Tactical Operations Center overwatch console. Many different screens make up the display."
icon = 'icons/obj/structures/machinery/toc.dmi'
icon_state = "toc"
bound_width = 64
bound_height = 32

/obj/structure/supply_drop
name = "Supply Drop Pad"
desc = "Place a crate on here to allow bridge Overwatch officers to drop them on people's heads."
Expand Down
8 changes: 8 additions & 0 deletions code/modules/shuttle/computers/dropship_computer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -500,3 +500,11 @@
icon_state = "shuttle"
is_remote = TRUE
needs_power = TRUE

/obj/structure/machinery/computer/shuttle/dropship/flight/toc
name = "midway control screen"
desc = "A screen on the TOC computer for controlling the dropship linked to it."
icon = 'icons/obj/structures/machinery/computer.dmi'
icon_state = "toc_shuttle"
shuttleId = DROPSHIP_MIDWAY
is_remote = TRUE
37 changes: 37 additions & 0 deletions code/modules/vehicles/interior/interactable/seats.dm
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@
desc = "A sturdy chair with a brace that lowers over your body. Prevents being flung around in vehicle during crash being injured as a result. Fasten your seatbelts, kids! Fix with welding tool in case of damage."
icon = 'icons/obj/vehicles/interiors/general.dmi'
icon_state = "vehicle_seat"
buckling_sound = 'sound/effects/metal_close.ogg'
var/image/chairbar = null
var/broken = FALSE
buildstackamount = 0
Expand Down Expand Up @@ -442,3 +443,39 @@
break_seat()
if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY)
break_seat()

/obj/structure/bed/chair/vehicle/toc
name = "overwatch chair"
desc = "A sturdy chair with a brace that lowers over the body. Prevents being flung around in vehicle during a crash and being injured as a result. Fasten your seatbelts, kids! Fix with welding tool in case of damage."
icon_state = "armor_chair"
can_rotate = TRUE

/obj/structure/bed/chair/vehicle/toc/afterbuckle(mob/M)
if(buckled_mob)
if(buckled_mob != M)
return
icon_state = initial(icon_state) + "_buckled"
overlays += chairbar

if(buckle_offset_x != 0)
mob_old_x = M.pixel_x
M.pixel_x = buckle_offset_x
if(buckle_offset_y != 0)
mob_old_y = M.pixel_y
M.pixel_y = buckle_offset_y

ADD_TRAIT(buckled_mob, TRAIT_UNDENSE, BUCKLED_TRAIT)
else
icon_state = initial(icon_state)
overlays -= chairbar

if(buckle_offset_x != 0)
M.pixel_x = mob_old_x
mob_old_x = 0
if(buckle_offset_y != 0)
M.pixel_y = mob_old_y
mob_old_y = 0

REMOVE_TRAIT(M, TRAIT_UNDENSE, BUCKLED_TRAIT)

handle_rotation()
41 changes: 8 additions & 33 deletions code/modules/vehicles/interior/interactable/vehicle_locker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
unslashable = TRUE
indestructible = TRUE

var/list/role_restriction = list(JOB_CREWMAN, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN)

var/obj/item/storage/internal/container

/obj/structure/vehicle_locker/Initialize()
Expand All @@ -34,7 +32,8 @@
/obj/item/storage/pouch,
/obj/item/device/motiondetector,
/obj/item/ammo_magazine/hardpoint,
/obj/item/tool/weldpack
/obj/item/tool/weldpack,
/obj/item/ammo_box/magazine
)
flags_atom |= USES_HEARING

Expand All @@ -47,10 +46,6 @@
if (!ishuman(H) || H.is_mob_restrained())
return

if(!role_restriction.Find(H.job))
to_chat(H, SPAN_WARNING("You cannot access \the [name]."))
return

empty(get_turf(H), H)

//regular storage's empty() proc doesn't work due to checks, so imitate it
Expand Down Expand Up @@ -80,10 +75,6 @@
if(user.get_active_hand())
return ..()

if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return TRUE

if(Adjacent(user))
container.open(user)
return TRUE
Expand All @@ -98,9 +89,6 @@
return
if(user.is_mob_incapacitated())
return
if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return
if (container.handle_mousedrop(user, over_object))
..(over_object)

Expand All @@ -111,9 +99,6 @@
return
if(!istype(user))
return
if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return
return container.attackby(W, user)

/obj/structure/vehicle_locker/emp_act(severity)
Expand Down Expand Up @@ -141,11 +126,16 @@
icon = 'icons/obj/vehicles/interiors/tank.dmi'
icon_state = "locker"

/obj/structure/vehicle_locker/movie
name = "storage compartment"
desc = "A wide storage unit to allow it's users to store a wide variety of objects, from equipment to weapons and their ammo. Very versatile."
icon = 'icons/obj/vehicles/interiors/movie.dmi'
icon_state = "locker"

/obj/structure/vehicle_locker/med
name = "wall-mounted surgery kit storage"
desc = "A small locker that securely stores a full surgical kit. ID-locked to surgeons."
icon_state = "locker_med"
role_restriction = list(JOB_CMO, JOB_DOCTOR, JOB_RESEARCHER, JOB_SYNTH, JOB_WO_CMO, JOB_WO_DOCTOR, JOB_WO_RESEARCHER, JOB_SEA, JOB_CLF_MEDIC, "Colonial Doctor", "Sorokyne Strata Doctor", JOB_SYNTH, JOB_WO_SYNTH)

var/has_tray = TRUE

Expand Down Expand Up @@ -197,9 +187,6 @@
return
if(!istype(user))
return
if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return
if(istype(W, /obj/item/storage/surgical_tray))
add_tray(user, W)
return
Expand All @@ -215,10 +202,6 @@
if(user.get_active_hand())
return ..()

if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return TRUE

if(!has_tray)
to_chat(user, SPAN_WARNING("\The [name] doesn't have a surgical tray installed!"))
return TRUE
Expand All @@ -233,9 +216,6 @@
return
if(user.is_mob_incapacitated())
return
if(!role_restriction.Find(user.job))
to_chat(user, SPAN_WARNING("You cannot access \the [name]."))
return
if(!has_tray)
to_chat(user, SPAN_WARNING("\The [name] doesn't have a surgical tray installed!"))
return
Expand All @@ -256,10 +236,6 @@
if(H.is_mob_incapacitated())
return

if(!role_restriction.Find(H.job))
to_chat(H, SPAN_WARNING("You cannot access \the [name]."))
return

remove_tray(H)

/obj/structure/vehicle_locker/med/proc/remove_tray(mob/living/carbon/human/H)
Expand Down Expand Up @@ -303,4 +279,3 @@
has_tray = TRUE
update_icon()
H.visible_message(SPAN_NOTICE("[H] installs \the [tray] into \the [src]."), SPAN_NOTICE("You install \the [tray] into \the [src]."))

28 changes: 28 additions & 0 deletions code/modules/vehicles/interior/interior_landmarks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,28 @@

qdel(src)

/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/movie
name = "movie apc seat spawner"
var/buckling_y = 0

/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/movie/on_load(datum/interior/I)
var/obj/structure/bed/chair/comfy/vehicle/driver/S = new(loc)

S.icon = icon
S.icon_state = icon_state
S.layer = layer
S.vehicle = I.exterior
S.required_skill = S.vehicle.required_skill
S.setDir(dir)
S.alpha = alpha
S.update_icon()
S.handle_rotation()
S.pixel_x = pixel_x
S.pixel_y = pixel_y
S.buckling_y = buckling_y

qdel(src)

/obj/effect/landmark/interior/spawn/vehicle_support_gunner_seat
name = "1st support gunner's seat spawner"
icon = 'icons/obj/vehicles/interiors/general.dmi'
Expand Down Expand Up @@ -215,6 +237,10 @@
icon_state = "wall_phone"
color = "yellow"

/obj/effect/landmark/interior/spawn/telephone/toc
icon = 'icons/obj/vehicles/interiors/movie.dmi'
icon_state = "wall_phone"

/obj/effect/landmark/interior/spawn/telephone/on_load(datum/interior/I)
var/obj/structure/phone_base/phone = new(loc)

Expand Down Expand Up @@ -246,6 +272,7 @@
R.layer = layer
R.pixel_x = pixel_x
R.pixel_y = pixel_y
R.density = density
R.vehicle = I.exterior
R.setDir(dir)
R.update_icon()
Expand All @@ -268,6 +295,7 @@
V.pixel_x = pixel_x
V.pixel_y = pixel_y
V.alpha = alpha
V.layer = layer
V.update_icon()

qdel(src)
Expand Down
Binary file modified icons/obj/structures/gun_racks.dmi
Binary file not shown.
Binary file modified icons/obj/structures/machinery/computer.dmi
Binary file not shown.
Binary file added icons/obj/structures/machinery/toc.dmi
Binary file not shown.
Binary file modified icons/obj/structures/tables.dmi
Binary file not shown.
Binary file modified icons/obj/vehicles/interiors/apc.dmi
Binary file not shown.
Binary file added icons/obj/vehicles/interiors/movie.dmi
Binary file not shown.
Loading

0 comments on commit 2a6f1d8

Please sign in to comment.