Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/PvE-CMSS13/PvE-CMSS13 int…
Browse files Browse the repository at this point in the history
…o 10x28-changes
  • Loading branch information
AmoryBlaine committed Sep 8, 2024
2 parents 3858c66 + 92944b9 commit 0eca330
Show file tree
Hide file tree
Showing 139 changed files with 43,527 additions and 32,898 deletions.
1 change: 1 addition & 0 deletions code/__DEFINES/__game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,7 @@
#define WALL_DEVWALL "devwall"
#define WALL_DEVWALL_R "devwall_r"
#define WALL_HUNTERSHIP "metal"//DMI specific name
#define WALL_AICORE "aiwall"

//Defines for dropship weapon gimbals
#define GIMBAL_LEFT -1
Expand Down
8 changes: 8 additions & 0 deletions code/__DEFINES/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -449,3 +449,11 @@ var/list/default_xeno_onmob_icons = list(
#define MOBILITY_FLAGS_CARBON_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN)
#define MOBILITY_FLAGS_REST_CAPABLE_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN)

/// Sleeps for X and will perform return if A is qdeleted or a dead mob.
#define SLEEP_CHECK_DEATH(X, A) \
sleep(X); \
if(QDELETED(A)) return; \
if(ismob(A)) { \
var/mob/sleep_check_death_mob = A; \
if(sleep_check_death_mob.stat == DEAD) return; \
}
4 changes: 4 additions & 0 deletions code/__DEFINES/shuttles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,7 @@
#define ESCAPE_SHUTTLE_SOUTH_PREFIX "escape_shuttle_s"

#define ESCAPE_SHUTTLE_DOCK_PREFIX "almayer-hangar-escape-shuttle-"

#define MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_ONE "garrow_vehicle_elevator_one"
#define MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_TWO "garrow_vehicle_elevator_two"
#define MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_CARGO "garrow_cargo_elevator"
1 change: 1 addition & 0 deletions code/__DEFINES/sounds.dm
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,4 @@
#define SCAPE_PL_ENG list('sound/soundscape/engamb1.ogg', 'sound/soundscape/engamb2.ogg', 'sound/soundscape/engamb3.ogg', 'sound/soundscape/engamb4.ogg', 'sound/soundscape/engamb5.ogg', 'sound/soundscape/engamb6.ogg', 'sound/soundscape/engamb7.ogg', )
#define SCAPE_PL_HANGAR list('sound/soundscape/hangaramb1.ogg', 'sound/soundscape/hangaramb2.ogg', 'sound/soundscape/hangaramb3.ogg', 'sound/soundscape/hangaramb4.ogg', 'sound/soundscape/hangaramb5.ogg', 'sound/soundscape/hangaramb6.ogg', 'sound/soundscape/hangaramb7.ogg', 'sound/soundscape/hangaramb8.ogg', 'sound/soundscape/hangaramb9.ogg', 'sound/soundscape/hangaramb10.ogg', )
#define SCAPE_PL_ARES list('sound/soundscape/mother.ogg')
#define SCAPE_PL_AICORE list('sound/soundscape/aicore/aicore_beep.ogg', 'sound/soundscape/aicore/aicore_ident.ogg', 'sound/soundscape/aicore/aicore_rumble1.ogg', 'sound/soundscape/aicore/aicore_rumble2.ogg', 'sound/soundscape/aicore/aicore_rumble3.ogg', 'sound/soundscape/aicore/aicore_rumble4.ogg', 'sound/soundscape/aicore/aicore_rumble5.ogg', 'sound/soundscape/aicore/aicore_tone1.ogg', 'sound/soundscape/aicore/aicore_tone2.ogg', 'sound/soundscape/aicore/aicore_tone3.ogg', 'sound/soundscape/aicore/aicore_tone4.ogg', 'sound/soundscape/aicore/aicore_tone5.ogg', 'sound/soundscape/aicore/aicore_tone6.ogg', 'sound/soundscape/aicore/aicore_tone7.ogg', 'sound/soundscape/aicore/aicore_tone8.ogg', 'sound/soundscape/aicore/aicore_tone9.ogg', 'sound/soundscape/aicore/aicore_tone10.ogg', 'sound/soundscape/aicore/aicore_tone11.ogg', 'sound/soundscape/aicore/aicore_tone12.ogg', 'sound/soundscape/aicore/aicore_tone13.ogg', 'sound/soundscape/aicore/aicore_tone14.ogg', 'sound/soundscape/aicore/aicore_tone15.ogg', 'sound/soundscape/aicore/aicore_tone16.ogg', 'sound/soundscape/aicore/aicore_tone17.ogg', 'sound/soundscape/aicore/aicore_tone18.ogg', )
6 changes: 5 additions & 1 deletion code/__DEFINES/xeno.dm
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@
#define XENO_HEALTH_TIER_14 950 * XENO_UNIVERSAL_HPMULT
#define XENO_HEALTH_QUEEN 1000 * XENO_UNIVERSAL_HPMULT
#define XENO_HEALTH_IMMORTAL 1200 * XENO_UNIVERSAL_HPMULT
#define XENO_HEALTH_KING 1500 * XENO_UNIVERSAL_HPMULT

// Plasma bands
#define XENO_NO_PLASMA 0
Expand Down Expand Up @@ -381,6 +382,7 @@
// Armor mods. Use the above defines for some guidance
// In general, +20 armor should be a little more than +20% effective HP, however,
// the higher the Xeno's base armor, the greater the effect.
#define XENO_ARMOR_MOD_TINY 2.5
#define XENO_ARMOR_MOD_VERY_SMALL 5
#define XENO_ARMOR_MOD_SMALL 10
#define XENO_ARMOR_MOD_MED 15
Expand Down Expand Up @@ -614,6 +616,7 @@
#define XENO_SHIELD_SOURCE_GARDENER 8
#define XENO_SHIELD_SOURCE_SHIELD_PILLAR 9
#define XENO_SHIELD_SOURCE_CUMULATIVE_GENERIC 10
#define XENO_SHIELD_SOURCE_KING_BULWARKSPELL 11

//XENO CASTES
#define XENO_CASTE_LARVA "Bloody Larva"
Expand Down Expand Up @@ -643,12 +646,13 @@
#define XENO_CASTE_RAVAGER "Ravager"
#define XENO_T3_CASTES list(XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER)
//special
#define XENO_CASTE_KING "King"
#define XENO_CASTE_QUEEN "Queen"
#define XENO_CASTE_PREDALIEN "Predalien"
#define XENO_CASTE_HELLHOUND "Hellhound"
#define XENO_SPECIAL_CASTES list(XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND)

#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND)
#define ALL_XENO_CASTES list(XENO_CASTE_LARVA, XENO_CASTE_PREDALIEN_LARVA, XENO_CASTE_FACEHUGGER, XENO_CASTE_LESSER_DRONE, XENO_CASTE_DRONE, XENO_CASTE_RUNNER, XENO_CASTE_SENTINEL, XENO_CASTE_DEFENDER, XENO_CASTE_BURROWER, XENO_CASTE_CARRIER, XENO_CASTE_HIVELORD, XENO_CASTE_LURKER, XENO_CASTE_WARRIOR, XENO_CASTE_SPITTER, XENO_CASTE_BOILER, XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER, XENO_CASTE_RAVAGER, XENO_CASTE_QUEEN, XENO_CASTE_PREDALIEN, XENO_CASTE_HELLHOUND, XENO_CASTE_KING)

// Checks if two hives are allied to each other.
// PARAMETERS:
Expand Down
2 changes: 2 additions & 0 deletions code/_globalvars/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,5 @@ GLOBAL_VAR(obfs_x)
GLOBAL_VAR(obfs_y)

GLOBAL_VAR_INIT(ai_xeno_weeding, TRUE)

GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
2 changes: 1 addition & 1 deletion code/controllers/subsystem/item_cleanup.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ var/global/list/item_cleanup_list = list()
SUBSYSTEM_DEF(item_cleanup)
name = "Item Cleanup"
wait = 10 MINUTES //should be adjusted for WO
var/start_processing_time = 35 MINUTES //should be adjusted for WO
var/start_processing_time = INFINITY //should be adjusted for WO
var/percentage_of_garbage_to_delete = 0.5 //should be adjusted for WO
//We keep a separate, private list
//So we don't get instant deletions of items
Expand Down
1 change: 1 addition & 0 deletions code/datums/langchat/langchat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
/mob/living/carbon/xenomorph/hivelord/langchat_height = 64
/mob/living/carbon/xenomorph/defender/langchat_height = 48
/mob/living/carbon/xenomorph/warrior/langchat_height = 48
/mob/living/carbon/xenomorph/king/langchat_height = 64

#define LANGCHAT_LONGEST_TEXT 64
#define LANGCHAT_WIDTH 96
Expand Down
19 changes: 19 additions & 0 deletions code/datums/shuttles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,22 @@

/datum/map_template/shuttle/trijent_elevator/ice_elevator/requisitions
elevator_network = "Requisitions"

/datum/map_template/shuttle/trijent_elevator/golden_arrow
shuttle_id = "unused"

/datum/map_template/shuttle/trijent_elevator/golden_arrow/vehicleone
name = "Vehicle Elevator One"
shuttle_id = MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_ONE
elevator_network = "ArrowVehicleOne"

/datum/map_template/shuttle/trijent_elevator/golden_arrow/vehicletwo
name = "Vehicle Elevator Two"
shuttle_id = MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_TWO
elevator_network = "ArrowVehicleTwo"

/datum/map_template/shuttle/trijent_elevator/golden_arrow/cargo
name = "Cargo Elevator"
elevator_network = "garrow_cargo"
shuttle_id = MOBILE_SHUTTLE_SHIPMAP_ELEVATOR_CARGO
elevator_network = "ArrowCargo"
20 changes: 20 additions & 0 deletions code/datums/xeno_shields/shield_types/king_shield.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/// Shield can be equal to a maximum of percent_maxhealth_damagecap of the receiver's max hp
/datum/xeno_shield/king_shield
duration = 10 SECONDS
decay_amount_per_second = 100
/// The maximum damage multiplier of max health to apply in a hit
var/percent_maxhealth_damagecap = 0.1

/datum/xeno_shield/king_shield/on_hit(damage)
var/relative_damage_cap = linked_xeno.maxHealth * percent_maxhealth_damagecap

if(damage > relative_damage_cap)
damage = relative_damage_cap
return ..(damage)


/datum/xeno_shield/king_shield/on_removal()
. = ..()
if(linked_xeno)
// Remove the shield overlay early
linked_xeno.remove_suit_layer()
9 changes: 6 additions & 3 deletions code/datums/xeno_shields/xeno_shield.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,11 +79,14 @@
xeno_shields += new_shield
new_shield.last_damage_taken = world.time // So we don't insta-delete our shield.

new_shield.decay_amount_per_second = decay_amount_per_second
if(decay_amount_per_second)
new_shield.decay_amount_per_second = decay_amount_per_second
if(duration)
new_shield.duration = duration
new_shield.linked_xeno = src

if(duration > -1)
addtimer(CALLBACK(new_shield, TYPE_PROC_REF(/datum/xeno_shield, begin_decay)), duration)
if(new_shield.duration > -1)
addtimer(CALLBACK(new_shield, TYPE_PROC_REF(/datum/xeno_shield, begin_decay)), new_shield.duration)

overlay_shields()
return new_shield
Expand Down
49 changes: 48 additions & 1 deletion code/game/area/golden_arrow.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
icon_state = "upperengineering"

/area/golden_arrow/briefing
name = "\improper Briefing Area"
name = "\improper Assembly Room"
icon_state = "briefing"

/area/golden_arrow/dorms
Expand Down Expand Up @@ -81,3 +81,50 @@
/area/golden_arrow/platoonarmory
name = "\improper Platoon Armory"
icon_state = "alpha"

/area/golden_arrow/ai_interface
name = "\improper Human AI Interface"
icon_state = "airoom"
soundscape_playlist = SCAPE_PL_AICORE
soundscape_interval = 7

/area/golden_arrow/motor_pool
name = "\improper Motor Pool"
icon_state = "workshop"

/area/golden_arrow/lower_cargo
name = "\improper Lower Cargo Bays"
icon_state = "req"

/area/golden_arrow/supplydrop
name = "\improper Supply Drop Bay"
icon_state = "astronavigation"


/area/golden_arrow/cargo_shuttle
name = "\improper cargo_shuttle"
icon_state = "lifeboat"

/area/golden_arrow/cargo_shuttle/elevator
name = "\improper Cargo Elevator"
unlimited_power = TRUE
requires_power = FALSE

/area/golden_arrow/cargo_shuttle/lower
name = "\improper Cargo Elevator Lower Level"

/area/golden_arrow/cargo_shuttle/upper
name = "\improper Cargo Elevator Upper Level"

/area/golden_arrow/vehicle_shuttle
name = "\improper Vehicle Elevator One"

/area/golden_arrow/vehicle_shuttle/upper
name = "\improper Vehicle Elevator One Upper"

/area/golden_arrow/vehicle_shuttle/two
name = "\improper Vehicle Elevator Two"

/area/golden_arrow/vehicle_shuttle/two/upper
name = "\improper Vehicle Elevator Two Upper"

2 changes: 2 additions & 0 deletions code/game/jobs/role_authority.dm
Original file line number Diff line number Diff line change
Expand Up @@ -796,6 +796,8 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou
M = /mob/living/carbon/xenomorph/predalien
if(XENO_CASTE_HELLHOUND)
M = /mob/living/carbon/xenomorph/hellhound
if(XENO_CASTE_KING)
M = /mob/living/carbon/xenomorph/king
return M


Expand Down
12 changes: 6 additions & 6 deletions code/game/machinery/computer/dropship_weapons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -694,10 +694,10 @@
if(CEILING_GLASS)
is_outside = TRUE
if(!is_outside && !cavebreaker) //cavebreaker doesn't care
to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: target must be visible from high altitude."))
to_chat(weapon_operator, SPAN_WARNING("WARNING: Target obstructed by terrain features."))
return FALSE
if (protected_by_pylon(TURF_PROTECTION_CAS, TU))
to_chat(weapon_operator, SPAN_WARNING("INVALID TARGET: biological-pattern interference with signal."))
to_chat(weapon_operator, SPAN_WARNING("WARNING: Signal garbled, launch aborted."))
return FALSE
if(!DEW.ammo_equipped.can_fire_at(TU, weapon_operator))
return FALSE
Expand Down Expand Up @@ -807,10 +807,10 @@
if (!istype(dropship))
return FALSE
if (!dropship.in_flyby || dropship.mode != SHUTTLE_CALL)
to_chat(user, SPAN_WARNING("Has to be in Fly By mode"))
to_chat(user, SPAN_WARNING("You must be making a flyby!"))
return FALSE
if (dropship.timer && dropship.timeLeft(1) < firemission_envelope.flyoff_period)
to_chat(user, SPAN_WARNING("Not enough time to complete the Fire Mission"))
to_chat(user, SPAN_WARNING("Not enough time on station to complete the firemission."))
return FALSE
var/datum/cas_signal/recorded_loc = firemission_envelope.recorded_loc
var/obj/source = recorded_loc.signal_loc
Expand Down Expand Up @@ -846,7 +846,7 @@
return
if(firemission_envelope.recorded_loc.obstructed_signal())
if(firemission_envelope.user_is_guided(user))
to_chat(user, SPAN_WARNING("Signal Obstructed. You have to go in blind."))
to_chat(user, SPAN_WARNING("Signal obstructed. You have to go in blind."))
return
var/sx = 0
var/sy = 0
Expand All @@ -872,7 +872,7 @@
var/area/laser_area = get_area(shootloc)
if(!istype(laser_area) || CEILING_IS_PROTECTED(laser_area.ceiling, CEILING_PROTECTION_TIER_1))
if(firemission_envelope.user_is_guided(user))
to_chat(user, SPAN_WARNING("Vision Obstructed. You have to go in blind."))
to_chat(user, SPAN_WARNING("Vision obstructed. You have to go in blind."))
firemission_envelope.change_current_loc()
else
firemission_envelope.change_current_loc(shootloc)
Expand Down
15 changes: 15 additions & 0 deletions code/game/machinery/doors/poddoor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@
/obj/structure/machinery/door/airlock,
)


/obj/structure/machinery/door/poddoor/almayer/open
density = FALSE

Expand All @@ -319,6 +320,20 @@
. = ..()
addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, relativewall_neighbours)), 10)

/obj/structure/machinery/door/poddoor/almayer/blended/aicore
icon_state = "aidoor1"
base_icon_state = "aidoor"

/obj/structure/machinery/door/poddoor/almayer/blended/aicore/open
density = FALSE

/obj/structure/machinery/door/poddoor/almayer/blended/white_aicore
icon_state = "w_aidoor1"
base_icon_state = "w_aidoor"

/obj/structure/machinery/door/poddoor/almayer/blended/white_aicore/open
density = FALSE

/obj/structure/machinery/door/poddoor/almayer/locked
unacidable = TRUE

Expand Down
14 changes: 14 additions & 0 deletions code/game/machinery/vending/vending_types.dm
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,20 @@
/obj/item/tape/regulation = 5,
)

/obj/structure/machinery/vending/security/upp
name = "\improper People's Police Equipment Vendor"
desc = "A standard security vendor used by security forces of the UPP."
req_access = list(ACCESS_CIVILIAN_BRIG)
products = list(
/obj/item/handcuffs = 8,
/obj/item/reagent_container/spray/pepper = 4,
/obj/item/device/flashlight = 4,
/obj/item/storage/belt/security/MP/UPP = 4,
/obj/item/device/flash = 5,
/obj/item/storage/box/evidence = 6,
/obj/item/tape/regulation = 5,
)

/obj/structure/machinery/vending/sea
name = "\improper SeaTech"
desc = "An equipment vendor designed to save lives"
Expand Down
16 changes: 16 additions & 0 deletions code/game/objects/effects/effect_system/smoke.dm
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,22 @@

// XENO SMOKES

/obj/effect/particle_effect/smoke/king
opacity = FALSE
color = "#000000"
icon = 'icons/effects/effects.dmi'
icon_state = "sparks"
anchored = TRUE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
layer = BELOW_OBJ_LAYER
time_to_live = 5
spread_speed = 1
pixel_x = 0
pixel_y = 0

/datum/effect_system/smoke_spread/king_doom
smoke_type = /obj/effect/particle_effect/smoke/king

/datum/effect_system/smoke_spread/xeno_acid
smoke_type = /obj/effect/particle_effect/smoke/xeno_burn

Expand Down
13 changes: 13 additions & 0 deletions code/game/objects/effects/temporary_visuals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,19 @@
. = ..()
deltimer(timerid)

//-----------------------------------------
//HEAVY IMPACT
//-----------------------------------------

/obj/effect/temp_visual/heavy_impact
icon = 'icons/effects/heavyimpact.dmi'
icon_state = "heavyimpact"
duration = 1.3 SECONDS

/obj/effect/temp_visual/heavyimpact/Initialize(mapload)
. = ..()
flick("heavyimpact", src)

/obj/effect/temp_visual/dir_setting
randomdir = FALSE

Expand Down
7 changes: 6 additions & 1 deletion code/game/objects/items/devices/motion_detector.dm
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,10 @@

range_bounds.set_shape(cur_turf.x, cur_turf.y, detector_range * 2)

var/list/ping_receivers = list()
for(var/mob/living/carbon/human/humans in range(1, human_user))
ping_receivers += humans

var/list/ping_candidates = SSquadtree.players_in_range(range_bounds, cur_turf.z, QTREE_EXCLUDE_OBSERVER | QTREE_SCAN_MOBS)

for(var/A in ping_candidates)
Expand All @@ -230,7 +234,8 @@
apply_debuff(M)
ping_count++
if(human_user)
show_blip(human_user, M)
for(var/mob/living/carbon/human/show_ping_to as anything in ping_receivers)
show_blip(show_ping_to, M)

for(var/mob/hologram/holo as anything in GLOB.hologram_list)
if(!holo.motion_sensed)
Expand Down
Loading

0 comments on commit 0eca330

Please sign in to comment.