Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ЦПСС начало тяжёлое вооружение армии, ведь фронтир начинает молчать #357

21 changes: 21 additions & 0 deletions baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@
#include "code\datums\wires\fabricator.dm"
#include "code\datums\wires\nuclearbomb.dm"
#include "code\datums\wires\particle_accelerator.dm"
#include "code\datums\wires\quantum_pads.dm"
#include "code\datums\wires\radio.dm"
#include "code\datums\wires\robot.dm"
#include "code\datums\wires\shield_generator.dm"
Expand Down Expand Up @@ -1744,6 +1745,7 @@
#include "code\modules\error_handler\error_handler.dm"
#include "code\modules\error_handler\error_reporting.dm"
#include "code\modules\error_handler\error_viewer.dm"
#include "code\modules\events\abominable_infestation.dm"
#include "code\modules\events\apc_damage.dm"
#include "code\modules\events\blob.dm"
#include "code\modules\events\brain_expansion.dm"
Expand Down Expand Up @@ -1980,6 +1982,7 @@
#include "code\modules\mining\mine_turfs.dm"
#include "code\modules\mining\satchel_ore_boxdm.dm"
#include "code\modules\mining\drilling\drill.dm"
#include "code\modules\mining\drilling\drill_upgrades.dm"
#include "code\modules\mining\machinery\_mineral.dm"
#include "code\modules\mining\machinery\mineral_console.dm"
#include "code\modules\mining\machinery\mineral_processor.dm"
Expand All @@ -2006,6 +2009,10 @@
#include "code\modules\mob\grab\grab_datum.dm"
#include "code\modules\mob\grab\grab_object.dm"
#include "code\modules\mob\grab\grab_readme.dm"
#include "code\modules\mob\grab\abnomination\abom_agressive.dm"
#include "code\modules\mob\grab\abnomination\abom_kill.dm"
#include "code\modules\mob\grab\abnomination\abom_passive.dm"
#include "code\modules\mob\grab\abnomination\grab_abom.dm"
#include "code\modules\mob\grab\nab\grab_nab.dm"
#include "code\modules\mob\grab\nab\nab_aggressive.dm"
#include "code\modules\mob\grab\nab\nab_kill.dm"
Expand Down Expand Up @@ -2298,6 +2305,14 @@
#include "code\modules\mob\living\simple_animal\hostile\hivebot\hivebot.dm"
#include "code\modules\mob\living\simple_animal\hostile\hivebot\ranged.dm"
#include "code\modules\mob\living\simple_animal\hostile\hivebot\tank.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\_infestation.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\assembler.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\broodling.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\eviscerator.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\floatfly.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\larva.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\rhino.dm"
#include "code\modules\mob\living\simple_animal\hostile\infestation\spitter.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\exoplanet.dm"
Expand Down Expand Up @@ -2527,6 +2542,7 @@
#include "code\modules\organs\internal\lungs.dm"
#include "code\modules\organs\internal\stomach.dm"
#include "code\modules\organs\internal\voice.dm"
#include "code\modules\organs\internal\species\abomination.dm"
#include "code\modules\organs\internal\species\adherent.dm"
#include "code\modules\organs\internal\species\blueforged.dm"
#include "code\modules\organs\internal\species\borer.dm"
Expand Down Expand Up @@ -2570,6 +2586,7 @@
#include "code\modules\overmap\exoplanets\planet_types\chlorine.dm"
#include "code\modules\overmap\exoplanets\planet_types\desert.dm"
#include "code\modules\overmap\exoplanets\planet_types\grass.dm"
#include "code\modules\overmap\exoplanets\planet_types\infested.dm"
#include "code\modules\overmap\exoplanets\planet_types\shrouded.dm"
#include "code\modules\overmap\exoplanets\planet_types\snow.dm"
#include "code\modules\overmap\exoplanets\planet_types\volcanic.dm"
Expand Down Expand Up @@ -2927,6 +2944,7 @@
#include "code\modules\species\species_hud.dm"
#include "code\modules\species\species_random.dm"
#include "code\modules\species\species_shapeshift.dm"
#include "code\modules\species\outsider\abomination.dm"
#include "code\modules\species\outsider\random.dm"
#include "code\modules\species\outsider\shadow.dm"
#include "code\modules\species\outsider\starlight.dm"
Expand Down Expand Up @@ -3263,10 +3281,13 @@
#include "proxima\code\game\machinery\remote_weapon.dm"
#include "proxima\code\game\machinery\factory\blueprint.dm"
#include "proxima\code\game\machinery\factory\factory.dm"
#include "proxima\code\game\machinery\factory\quantum_pads.dm"
#include "proxima\code\game\machinery\factory\blueprints\generic.dm"
#include "proxima\code\game\objects\effects\particles\snow.dm"
#include "proxima\code\game\objects\items\bouquet.dm"
#include "proxima\code\game\objects\items\circuits_remote.dm"
#include "proxima\code\game\objects\items\containers.dm"
#include "proxima\code\game\objects\items\mgsbox.dm"
#include "proxima\code\game\objects\items\posters.dm"
#include "proxima\code\game\objects\items\remote_weapon_ammo.dm"
#include "proxima\code\game\objects\items\toys.dm"
Expand Down
6 changes: 6 additions & 0 deletions code/__defines/flags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,9 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define TANK_FLAG_FORCED FLAG(1)
#define TANK_FLAG_LEAKING FLAG(2)
#define TANK_FLAG_WIRED FLAG(3)

// Sector Flags.
#define OVERMAP_SECTOR_BASE 0x0001 // Whether or not this sector is a starting sector. Z levels contained in this sector are added to station_levels
#define OVERMAP_SECTOR_KNOWN 0x0002 // Makes the sector show up on nav computers
#define OVERMAP_SECTOR_IN_SPACE 0x0004 // If the sector can be accessed by drifting off the map edge
#define OVERMAP_SECTOR_UNTARGETABLE 0x0008 // If the sector is untargetable by missiles
1 change: 1 addition & 0 deletions code/__defines/guns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#define CALIBER_PISTOL_FAST "6mmR"

#define CALIBER_RIFLE "5mmR"
#define CALIBER_CARABINE "6.5mmR"
#define CALIBER_RIFLE_MILITARY "7mmR"
#define CALIBER_ANTIMATERIAL "15mmR"
#define CALIBER_ANTIMATERIAL_SMALL "12mmR" //Порт с инфинити. Калибр КорпоАМР винтовки
Expand Down
14 changes: 12 additions & 2 deletions code/__defines/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#define GRAB_NORMAL "normal"
#define GRAB_NAB "nab"
#define GRAB_NAB_SPECIAL "special nab"
#define GRAB_ABOMINATION "terrifying grab"

// Grab levels.
#define NORM_PASSIVE "normal passive"
Expand All @@ -31,6 +32,10 @@
#define NAB_AGGRESSIVE "nab aggressive"
#define NAB_KILL "nab kill"

#define GRAB_ABOMINATION_PASSIVE "terrifying grab passive"
#define GRAB_ABOMINATION_AGGRESSIVE "terrifying grab aggressive"
#define GRAB_ABOMINATION_KILL "terrifying grab kill"

#define BORGMESON FLAG(0)
#define BORGTHERM FLAG(1)
#define BORGXRAY FLAG(2)
Expand Down Expand Up @@ -222,6 +227,7 @@
#define BP_ANCHOR "anchoring ligament"
#define BP_PHORON "phoron filter"
#define BP_ACETONE "acetone reactor"
#define BP_LARVA "larvae storage"

// Vox bits.
#define BP_HINDTONGUE "hindtongue"
Expand Down Expand Up @@ -378,10 +384,11 @@
#define SPECIES_MONKEY "Monkey"
#define SPECIES_NABBER "giant armoured serpentid"
#define SPECIES_FBP "Full Body Prosthesis" //just for xeno-panel //proxima
#define SPECIES_ABOMINATION "Abomination"

#define UNRESTRICTED_SPECIES list(SPECIES_HUMAN, SPECIES_DIONA, SPECIES_IPC, SPECIES_UNATHI, SPECIES_YEOSA, SPECIES_SKRELL, SPECIES_TRITONIAN, SPECIES_SPACER, SPECIES_VATGROWN, SPECIES_GRAVWORLDER, SPECIES_MULE, SPECIES_SHELL)
#define RESTRICTED_SPECIES list(SPECIES_VOX, SPECIES_ALIEN, SPECIES_GOLEM)
#define HUMAN_SPECIES list(SPECIES_HUMAN, SPECIES_VATGROWN, SPECIES_SPACER, SPECIES_GRAVWORLDER, SPECIES_MULE)
#define RESTRICTED_SPECIES list(SPECIES_VOX, SPECIES_ALIEN, SPECIES_GOLEM, SPECIES_ABOMINATION)
#define HUMAN_SPECIES list(SPECIES_HUMAN, SPECIES_VATGROWN, SPECIES_SPACER, SPECIES_GRAVWORLDER, SPECIES_MULE, SPECIES_ABOMINATION)
#define SOUNDED_SPECIES list(SPECIES_HUMAN, SPECIES_VATGROWN, SPECIES_SPACER, SPECIES_TRITONIAN, SPECIES_GRAVWORLDER, SPECIES_MULE, SPECIES_UNATHI, SPECIES_YEOSA, SPECIES_SKRELL, SPECIES_SHELL)

#define SURGERY_CLOSED 0
Expand Down Expand Up @@ -486,3 +493,6 @@
#define DO_INCAPACITATED (-3)

#define FAKE_INVIS_ALPHA_THRESHOLD 127 // If something's alpha var is at or below this number, certain things will pretend it is invisible.


#define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return;
7 changes: 7 additions & 0 deletions code/__defines/overmap.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,10 @@
#define OVERMAP_WEAKNESS_MINING 4
#define OVERMAP_WEAKNESS_EXPLOSIVE 8
#define OVERMAP_WEAKNESS_DROPPOD 16
#define OVERMAP_WEAKNESS_ODST 32

#define TARGET_SHIP 0
#define TARGET_MISSILE 1
#define TARGET_PLANET 2
#define TARGET_PLANETCOORD 4
#define TARGET_POINT 8
24 changes: 24 additions & 0 deletions code/datums/wires/quantum_pads.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/datum/wires/quantumpad
holder_type = /obj/machinery/quantumpad
wire_count = 1
descriptions = list(
new /datum/wire_description(WIRE_TRIGGER, "This wire seems to be activating the teleportation mechanism.")
)

var/const/WIRE_TRIGGER = 1

/datum/wires/quantumpad/proc/trigger()
var/obj/machinery/quantumpad/QP = holder
QP.physical_attack_hand()
return

/datum/wires/quantumpad/UpdatePulsed(index)
switch(index)
if(WIRE_TRIGGER)
trigger()

/datum/wires/quantumpad/CanUse(mob/living/L)
var/obj/machinery/quantumpad/QP = holder
if(QP.panel_open)
return TRUE
return FALSE
4 changes: 4 additions & 0 deletions code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -241,3 +241,7 @@

/atom/movable/proc/get_bullet_impact_effect_type()
return BULLET_IMPACT_NONE

/// Handles special effects of item being removed from "implants" of a mob
/atom/movable/proc/ImplantRemoval(mob/user)
return
7 changes: 0 additions & 7 deletions code/game/objects/items/weapons/implants/implant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,6 @@

return TRUE

/obj/item/implant/proc/removed()
imp_in = null
if(part)
part.implants -= src
part = null
implanted = 0

//Called in surgery when incision is retracted open / ribs are opened - basically before you can take implant out
/obj/item/implant/proc/exposed()
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
START_PROCESSING(SSobj, src)
return TRUE

/obj/item/implant/death_alarm/removed()
/obj/item/implant/death_alarm/ImplantRemoval()
..()
STOP_PROCESSING(SSobj, src)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@
return TRUE

/obj/item/implant/explosive/Destroy()
removed()
ImplantRemoval()
GLOB.listening_objects -= src
return ..()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
to_chat(imp_in, instruction)
addtimer(CALLBACK(src,.proc/activate),3000,(TIMER_UNIQUE|TIMER_OVERRIDE))

/obj/item/implant/imprinting/removed()
/obj/item/implant/imprinting/ImplantRemoval()
if(brainwashing && !malfunction)
to_chat(imp_in,"<span class='warning'>A wave of nausea comes over you.</span><br><span class='good'>You are no longer so sure of those beliefs you've had...</span>")
..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
return TRUE

/obj/item/implant/translator/Destroy()
removed()
ImplantRemoval()
GLOB.listening_objects -= src
return ..()

Expand Down
3 changes: 3 additions & 0 deletions code/game/objects/objs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -204,3 +204,6 @@
*/
/obj/proc/is_safe_to_step(mob/living/L)
return TRUE

/obj/proc/get_additional_speed_decrease()
return between(0, src.w_class, ITEM_SIZE_GARGANTUAN) / 5
16 changes: 16 additions & 0 deletions code/game/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,22 @@ var/global/const/FALLOFF_SOUNDS = 0.5

sound_to(src, S)

/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, falloff, is_global = FALSE, ignore_pressure = FALSE)
for(var/m in GLOB.player_list)
if(ismob(m) && !isnewplayer(m))
var/mob/M = m
M.playsound_local(get_turf(M), soundin, volume, vary, frequency, falloff, is_global, ignore_pressure)

/proc/sound_to_playing_players_on_level(soundin, volume = 100, vary = FALSE, frequency = 0, falloff, is_global = FALSE, ignore_pressure = FALSE, zlevel)
for(var/m in GLOB.player_list)
if(ismob(m) && !isnewplayer(m))
var/mob/M = m
if(!islist(zlevel))
zlevel = list(zlevel)
if((M.loc.z in zlevel) && M.client)
M.playsound_local(get_turf(M), soundin, volume, vary, frequency, falloff, is_global, ignore_pressure)


/client/proc/playtitlemusic()
if (get_preference_value(/datum/client_preference/play_lobby_music) == GLOB.PREF_YES)
sound_to(src, GLOB.using_map.lobby_track.get_sound())
Expand Down
5 changes: 5 additions & 0 deletions code/game/turfs/flooring/flooring.dm
Original file line number Diff line number Diff line change
Expand Up @@ -402,3 +402,8 @@
wall_smooth = SMOOTH_NONE
space_smooth = SMOOTH_NONE
height = -FLUID_OVER_MOB_HEAD * 2

/decl/flooring/flesh/infested
name = "pulsating flesh"
desc = "Disgusting flooring made out of flesh, bone, eyes, and various other human bits and pieces."
color = "#94404e"
10 changes: 10 additions & 0 deletions code/modules/ai/ai_holder_communication.dm
Original file line number Diff line number Diff line change
Expand Up @@ -109,15 +109,25 @@
switch(pick(comm_types))
if (COMM_SAY)
holder.ISay(pick(holder.say_list.speak))
PlayMobSound(holder.say_list.speak_sounds)
if (COMM_AUDIBLE_EMOTE)
holder.audible_emote(pick(holder.say_list.emote_hear))
PlayMobSound(holder.say_list.emote_hear_sounds)
if (COMM_VISUAL_EMOTE)
holder.visible_emote(pick(holder.say_list.emote_see))
PlayMobSound(holder.say_list.emote_see_sounds)

#undef COMM_SAY
#undef COMM_AUDIBLE_EMOTE
#undef COMM_VISUAL_EMOTE

// Simply plays a sound chosen out of a list
/datum/ai_holder/proc/PlayMobSound(list/potential_sounds)
if(LAZYLEN(potential_sounds))
var/result = pickweight(holder.say_list.emote_see_sounds)
if(result != null)
playsound(holder, result, 50, 1)

// Handles the holder hearing a mob's say()
// Does nothing by default, override this proc for special behavior.
/datum/ai_holder/proc/on_hear_say(mob/living/speaker, message)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/ai/ai_holder_targeting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
var/atom/movable/preferred_target = null// If set, and if given the chance, we will always prefer to target this over other options.
var/turf/target_last_seen_turf = null // Where the mob last observed the target being, used if the target disappears but the mob wants to keep fighting.

var/vision_range = 7 // How far the targeting system will look for things to kill. Note that values higher than 7 are 'offscreen' and might be unsporting.
var/vision_range = 8 // How far the targeting system will look for things to kill. Note that values higher than 7 are 'offscreen' and might be unsporting.
var/respect_alpha = TRUE // If true, mobs with a sufficently low alpha will be treated as invisible.
var/alpha_vision_threshold = FAKE_INVIS_ALPHA_THRESHOLD // Targets with an alpha less or equal to this will be considered invisible. Requires above var to be true.

Expand Down
5 changes: 5 additions & 0 deletions code/modules/ai/say_list.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@
var/list/say_stand_down = list() // When the threatened thing goes away.
var/list/say_escalate = list() // When the threatened thing doesn't go away.

// Lists belows are ASSOCIATIVE lists! Sound = Chance. If null is in there - it will not play sound when prompted
var/list/speak_sounds = list() // Sounds that can be played when anything from speak list is said
var/list/emote_hear_sounds = list() // Sounds that can be played when anything from emote_hear is performed
var/list/emote_see_sounds = list() // Sounds that can be played when anything from emote_see is performed

var/threaten_sound = null // Sound file played when the mob's AI calls threaten_target() for the first time.
var/stand_down_sound = null // Sound file played when the mob's AI loses sight of the threatened target.

Expand Down
26 changes: 26 additions & 0 deletions code/modules/events/abominable_infestation.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/datum/event/abominable_infestation
announceWhen = 30
var/spawncount = 1

/datum/event/abominable_infestation/setup()
announceWhen = rand(announceWhen, announceWhen + 30)
spawncount = rand(2 * severity, 4 * severity)

/datum/event/abominable_infestation/announce()
GLOB.using_map.unidentified_lifesigns_announcement()

/datum/event/abominable_infestation/start()
var/list/vents = list()
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in SSmachines.machinery)
if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in affecting_z))
if(temp_vent.network.normal_members.len > 50)
vents += temp_vent

while((spawncount >= 1) && LAZYLEN(vents))
var/obj/vent = pick(vents)
if(prob(33))
new /mob/living/simple_animal/hostile/infestation/larva/implant/implanter(get_turf(vent))
else
new /mob/living/simple_animal/hostile/infestation/larva(get_turf(vent))
vents -= vent
spawncount--
5 changes: 4 additions & 1 deletion code/modules/events/event_container.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#define ASSIGNMENT_MEDICAL "Medical"
#define ASSIGNMENT_SCIENTIST "Scientist"
#define ASSIGNMENT_SECURITY "Security"
#define ASSIGNMENT_EXPLORATION "Exploration"
#define ASSIGNMENT_PSYCHIATRIST "Psychiatrist"

var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT_LEVEL_MODERATE = "Moderate", EVENT_LEVEL_MAJOR = "Major", EVENT_LEVEL_EXO = "Exoplanet")
Expand Down Expand Up @@ -182,7 +183,8 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
severity = EVENT_LEVEL_MAJOR
available_events = list(
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 40), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_SECURITY = 20, ASSIGNMENT_EXPLORATION = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Abominable Infestation", /datum/event/abominable_infestation,0, list(ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_SECURITY = 20, ASSIGNMENT_EXPLORATION = 15), 1),
new /datum/event_meta/no_overmap(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 5), 1),
new /datum/event_meta/no_overmap(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 0, list(ASSIGNMENT_ENGINEER = 15), 1),
Expand All @@ -208,4 +210,5 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
#undef ASSIGNMENT_MEDICAL
#undef ASSIGNMENT_SCIENTIST
#undef ASSIGNMENT_SECURITY
#undef ASSIGNMENT_EXPLORATION
#undef ASSIGNMENT_PSYCHIATRIST
4 changes: 4 additions & 0 deletions code/modules/fabrication/designs/general/designs_arms_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -138,3 +138,7 @@
/datum/fabricator_recipe/arms_ammo/hidden/rifleinternalclip
name = "ammunition (rifle internal clip)"
path = /obj/item/ammo_magazine/iclipr

/datum/fabricator_recipe/arms_ammo/hidden/carabinemagazine
name = "ammunition (spec.ops carabine magazine)"
path = /obj/item/ammo_magazine/carabine_rifle
Loading
Loading