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

The main CWC PR #1709

Merged
merged 51 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
92988ab
restricted warps
wraith-54321 Apr 21, 2024
0acd292
anchoring crystals fix
wraith-54321 Apr 22, 2024
95a6a2b
in uplink
wraith-54321 Apr 22, 2024
5b893a2
windows
wraith-54321 Apr 23, 2024
80f76e3
atm lootboxes
wraith-54321 Apr 23, 2024
a9f2aaf
note
wraith-54321 Apr 23, 2024
729ba9d
vitality fix
wraith-54321 Apr 24, 2024
f1f4110
bit more
wraith-54321 Apr 24, 2024
36c0517
make them members count
wraith-54321 Apr 24, 2024
3d6b96d
walls
wraith-54321 Apr 24, 2024
bfeaf2a
Update kindle.dm
wraith-54321 Apr 25, 2024
af043e2
oop
wraith-54321 Apr 25, 2024
a15537f
Update antag_datum.dm
wraith-54321 Apr 26, 2024
5dd8dc5
atm fix
wraith-54321 Apr 28, 2024
f6bebc3
I am such a big smart
wraith-54321 Apr 28, 2024
192b184
Flesh Spiders Regenerate + QoL (#78704)
Jacquerel Oct 11, 2023
1b11c15
Headslug Eggs Work Again + More Consistent Timing (#80916)
IndieanaJones Jan 13, 2024
75a2d65
fix
wraith-54321 Apr 29, 2024
ae65749
forbearance refactor
wraith-54321 May 1, 2024
3a034bb
minor fix
wraith-54321 May 1, 2024
932a6f7
e
wraith-54321 May 1, 2024
05ac9c0
pain
wraith-54321 May 9, 2024
11ab289
Update whirring_convergence.dm
wraith-54321 May 26, 2024
1ddac43
ghost eminence good
wraith-54321 May 26, 2024
5dde1c1
Merge remote-tracking branch 'upstream/master' into oh-ok
wraith-54321 May 26, 2024
4f262c6
guess ill deal with this later
wraith-54321 May 26, 2024
6de4fcd
Update tgstation.dme
wraith-54321 May 26, 2024
1057cf6
im dumb
wraith-54321 May 26, 2024
53f433e
so much stuff
wraith-54321 Jun 3, 2024
0b004be
a lot more stuff
wraith-54321 Jun 3, 2024
4ac2d41
lets commit before it becomes too annoying
wraith-54321 Jun 4, 2024
9693f00
eh
wraith-54321 Jun 4, 2024
49dd047
Merge remote-tracking branch 'upstream/master' into oh-ok
wraith-54321 Jun 4, 2024
ea6196e
not quite finished
wraith-54321 Jun 17, 2024
69c1912
no debug
wraith-54321 Jun 17, 2024
990470e
Update tgstation.dme
wraith-54321 Jun 17, 2024
4fec593
nukes duplicate
wraith-54321 Jun 18, 2024
066f172
fix
wraith-54321 Jun 19, 2024
7b076b8
eh
wraith-54321 Jun 23, 2024
a7dec7c
Merge remote-tracking branch 'upstream/master' into oh-ok
wraith-54321 Jun 23, 2024
89cb047
grrgfrs
wraith-54321 Jun 27, 2024
9bc4a14
Merge remote-tracking branch 'upstream/master' into oh-ok
wraith-54321 Jun 27, 2024
ee988c9
compile
wraith-54321 Jun 30, 2024
c8a766b
oh
wraith-54321 Jul 1, 2024
3e321da
oooohh
wraith-54321 Jul 1, 2024
997e30c
Merge remote-tracking branch 'upstream/master' into oh-ok
wraith-54321 Jul 1, 2024
7727a80
oops
wraith-54321 Jul 1, 2024
8fd317b
things
wraith-54321 Jul 4, 2024
0fe2dd5
ready?
wraith-54321 Jul 4, 2024
bddfd02
Update skewer.dm
wraith-54321 Jul 4, 2024
ca06ba0
Update burning.dm
wraith-54321 Jul 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#define COMSIG_ON_CARBON_SLIP "carbon_slip"
// /mob/living/carbon physiology signals
#define COMSIG_CARBON_GAIN_WOUND "carbon_gain_wound" //from /datum/wound/proc/apply_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L)
#define COMPONENT_STOP_WOUND (1<<0) //monkestation edit
#define COMSIG_CARBON_LOSE_WOUND "carbon_lose_wound" //from /datum/wound/proc/remove_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L)
/// Called after limb AND victim has been unset
#define COMSIG_CARBON_POST_LOSE_WOUND "carbon_post_lose_wound" //from /datum/wound/proc/remove_wound() (/datum/wound/lost_wound, /obj/item/bodypart/part, ignore_limb, replaced)
Expand Down
6 changes: 6 additions & 0 deletions code/__DEFINES/~monkestation/clock_cult.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,9 @@

///max damage taken per hit by "important" clock structures
#define MAX_IMPORTANT_CLOCK_DAMAGE 30

///how many anchoring crystals need to be active before the ark can open
#define ANCHORING_CRYSTALS_TO_SUMMON 2

///the map path of the reebe map
#define REEBE_MAP_PATH "_maps/~monkestation/templates/reebe.dmm"
3 changes: 3 additions & 0 deletions code/__DEFINES/~monkestation/market.dm
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
#define MARKET_PROCESS (1<<0)
#define MARKET_AUCTION (1<<1)

///How much does it cost to buy a lootbox
#define LOOTBOX_COST 5000
2 changes: 1 addition & 1 deletion code/game/objects/effects/spiderwebs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@
return TRUE
if(!isliving(mover))
return
if(isspider(mover.pulledby))
if(!isnull(mover.pulledby) && isspider(mover.pulledby))
return TRUE
balloon_alert(mover, "stuck in web!")
return FALSE
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/melee/baton.dm
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@
playsound(src, on_sound, 50, TRUE)
return COMPONENT_NO_DEFAULT_MESSAGE

//monkestation removal start
//monkestation removal start, moved to \antagonists\contractor\items in the modular folder
/*/obj/item/melee/baton/telescopic/contractor_baton
name = "contractor baton"
desc = "A compact, specialised baton assigned to Syndicate contractors. Applies light electrical shocks to targets."
Expand Down
3 changes: 2 additions & 1 deletion code/modules/antagonists/_common/antag_datum.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ GLOBAL_LIST_EMPTY(antagonists)
/// The typepath for the outfit to show in the preview for the preferences menu.
var/preview_outfit
/// Flags for antags to turn on or off and check!
var/antag_flags = NONE /// If true, this antagonist can assign themself a new objective
var/antag_flags = NONE
/// If true, this antagonist can assign themself a new objective
var/can_assign_self_objectives = FALSE
/// Default to fill in when entering a custom objective.
var/default_custom_objective = "Cause chaos on the space station."
Expand Down
18 changes: 13 additions & 5 deletions code/modules/antagonists/changeling/headslug_eggs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,21 @@
desc = "Twitching and disgusting."
/// The mind of the original changeling that gave forth to the headslug mob.
var/datum/mind/origin
/// Tracks how long the egg has been growing.
var/time = 0
/// When we're expected to hatch.
var/hatch_time = 0
/// When this egg last got removed from a body. If -1, the egg hasn't been removed from a body.
var/removal_time = -1

/obj/item/organ/internal/body_egg/changeling_egg/Insert(mob/living/carbon/egg_owner, special = FALSE, drop_if_replaced = TRUE) //monkestation edit: movement_flags = DELETE_IF_REPLACED)
. = ..()
hatch_time = world.time + (removal_time == -1 ? EGG_INCUBATION_TIME : (hatch_time - removal_time))

/obj/item/organ/internal/body_egg/changeling_egg/Remove(mob/living/carbon/egg_owner, special, movement_flags)
. = ..()
removal_time = world.time

/obj/item/organ/internal/body_egg/changeling_egg/egg_process(seconds_per_tick, times_fired)
// Changeling eggs grow in dead people
time += seconds_per_tick * 10
if(time >= EGG_INCUBATION_TIME)
if(owner && hatch_time <= world.time)
pop()

/// Once the egg is fully grown, we gib the host and spawn a monkey (with the changeling's player controlling it). Very descriptive proc name.
Expand Down
22 changes: 21 additions & 1 deletion code/modules/antagonists/spiders/spiders.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

/datum/antagonist/spider/on_gain()
forge_objectives(directive)
. = ..()
return ..()

/datum/antagonist/spider/greet()
. = ..()
Expand All @@ -35,3 +35,23 @@
var/datum/objective/spider/objective = new(directive)
objective.owner = owner
objectives += objective

/// Subtype for flesh spiders who don't have a queen
/datum/antagonist/spider/flesh
name = "Flesh Spider"

/datum/antagonist/spider/flesh/forge_objectives()
var/datum/objective/custom/destroy = new()
destroy.owner = owner
destroy.explanation_text = "Wreak havoc and consume living flesh."
objectives += destroy

var/datum/objective/survive/dont_die = new()
dont_die.owner = owner
objectives += dont_die

/datum/antagonist/spider/flesh/greet()
. = ..()
to_chat(owner, span_boldwarning("An abomination of flesh set upon the station by changelings, \
you are aggressive to all living beings outside of your species and know no loyalties... even to your creator. \
<br>Your malleable flesh quickly regenerates if you can avoid taking damage for a few seconds."))
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
/**
* Spider-esque mob summoned by changelings. Exclusively player-controlled.
* An independent hit-and-run antagonist which can make webs and heals itself if left undamaged for a few seconds.
* Not a spider subtype because it keeps getting hit by unrelated balance changes intended for the Giant Spiders gamemode.
*/
/mob/living/basic/flesh_spider
name = "flesh spider"
desc = "A odd fleshy creature in the shape of a spider. Its eyes are pitch black and soulless."
icon = 'icons/mob/simple/arachnoid.dmi'
icon_state = "flesh"
icon_living = "flesh"
icon_dead = "flesh_dead"
mob_biotypes = MOB_ORGANIC|MOB_BUG
speak_emote = list("chitters")
response_help_continuous = "pets"
response_help_simple = "pet"
response_disarm_continuous = "gently pushes aside"
response_disarm_simple = "gently push aside"
damage_coeff = list(BRUTE = 1, BURN = 1.25, TOX = 1, CLONE = 1, STAMINA = 1, OXY = 1)
basic_mob_flags = FLAMMABLE_MOB
status_flags = NONE
speed = -0.1
maxHealth = 90
health = 90
melee_damage_lower = 15
melee_damage_upper = 20
obj_damage = 30
melee_attack_cooldown = CLICK_CD_MELEE
attack_verb_continuous = "bites"
attack_verb_simple = "bite"
attack_sound = 'sound/weapons/bite.ogg'
attack_vis_effect = ATTACK_EFFECT_BITE
unsuitable_cold_damage = 4
unsuitable_heat_damage = 4
// combat_mode = TRUE //monkestation removal
faction = list() // No allies but yourself
pass_flags = PASSTABLE
unique_name = TRUE
lighting_cutoff_red = 22
lighting_cutoff_green = 5
lighting_cutoff_blue = 5
butcher_results = list(/obj/item/food/meat/slab/spider = 2, /obj/item/food/spiderleg = 8)
ai_controller = /datum/ai_controller/basic_controller/giant_spider

/mob/living/basic/flesh_spider/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_WEB_SURFER, INNATE_TRAIT)
AddElement(/datum/element/cliff_walking)
AddElement(/datum/element/footstep, FOOTSTEP_MOB_CLAW)
AddElement(/datum/element/venomous, /datum/reagent/toxin/hunterspider, 5)
AddElement(/datum/element/web_walker, /datum/movespeed_modifier/fast_web)
AddElement(/datum/element/nerfed_pulling, GLOB.typecache_general_bad_things_to_easily_move)
AddElement(/datum/element/prevent_attacking_of_types, GLOB.typecache_general_bad_hostile_attack_targets, "this tastes awful!")
AddComponent(\
/datum/component/blood_walk,\
blood_type = /obj/effect/decal/cleanable/blood/bubblegum,\
blood_spawn_chance = 5,\
)
AddComponent(\
/datum/component/regenerator,\
regeneration_delay = 4 SECONDS,\
health_per_second = maxHealth / 6,\
outline_colour = COLOR_PINK,\
)

var/datum/action/cooldown/mob_cooldown/lay_web/webbing = new(src)
webbing.webbing_time *= 0.7
webbing.Grant(src)
ai_controller?.set_blackboard_key(BB_SPIDER_WEB_ACTION, webbing)

var/datum/action/cooldown/mob_cooldown/lay_web/web_spikes/spikes_web = new(src)
spikes_web.Grant(src)

var/datum/action/cooldown/mob_cooldown/lay_web/sticky_web/web_sticky = new(src)
web_sticky.Grant(src)
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@
/// Just to be super-duper safe to the player, we do return TRUE if all goes well and read that value in check_and_implant() to be nice to the player.
/mob/living/basic/headslug/proc/infect(mob/living/carbon/victim)
var/obj/item/organ/internal/body_egg/changeling_egg/egg = new(victim)
egg.Insert(victim)

egg.origin = mind

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -468,54 +468,6 @@
menu_description = "Weaker version of the nurse spider, specializing in healing their brethren and placing webbings very swiftly, but has very low amount of health and deals low damage."
ai_controller = /datum/ai_controller/basic_controller/giant_spider/weak

/**
* ### Flesh Spider
*
* A subtype of giant spider which only occurs from changelings.
* Has the base stats of a hunter, but they can heal themselves and spin webs faster.
* They also occasionally leave puddles of blood when they walk around. Flavorful!
*/
/mob/living/basic/spider/giant/hunter/flesh
name = "flesh spider"
desc = "A odd fleshy creature in the shape of a spider. Its eyes are pitch black and soulless."
icon = 'icons/mob/simple/arachnoid.dmi'
icon_state = "flesh"
icon_living = "flesh"
icon_dead = "flesh_dead"
web_speed = 0.7
maxHealth = 90
health = 90
menu_description = "Self-sufficient spider variant capable of healing themselves and producing webbbing fast."

/mob/living/basic/spider/giant/hunter/flesh/Initialize(mapload)
. = ..()
AddComponent(/datum/component/blood_walk, \
blood_type = /obj/effect/decal/cleanable/blood/bubblegum, \
blood_spawn_chance = 5)
// It might be easier and more fitting to just replace this with Regenerator
AddComponent(/datum/component/healing_touch,\
heal_brute = 45,\
heal_burn = 45,\
interaction_key = DOAFTER_SOURCE_SPIDER,\
valid_targets_typecache = typecacheof(list(/mob/living/basic/spider/giant/hunter/flesh)),\
extra_checks = CALLBACK(src, PROC_REF(can_mend)),\
action_text = "%SOURCE% begins mending themselves...",\
complete_text = "%SOURCE%'s wounds mend together.",\
)

var/datum/action/cooldown/mob_cooldown/lay_web/web_spikes/spikes_web = new(src)
spikes_web.Grant(src)

var/datum/action/cooldown/mob_cooldown/lay_web/sticky_web/web_sticky = new(src)
web_sticky.Grant(src)

/// Prevent you from healing other flesh spiders, or healing when on fire
/mob/living/basic/spider/giant/hunter/flesh/proc/can_mend(mob/living/source, mob/living/target)
if (on_fire)
balloon_alert(src, "on fire!")
return FALSE
return TRUE

/**
* ### Viper Spider (Wizard)
*
Expand Down
36 changes: 24 additions & 12 deletions code/modules/mob_spawn/ghost_roles/spider_roles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@
color = rgb(148, 0, 211)

/obj/structure/spider/eggcluster/bloody
icon = 'icons/mob/simple/meteor_heart.dmi'
icon_state = "eggs"
name = "bloody egg cluster"
color = rgb(255, 0, 0)

/obj/structure/spider/eggcluster/midwife
name = "midwife egg cluster"
Expand Down Expand Up @@ -72,6 +73,8 @@
var/cluster_type = /obj/structure/spider/eggcluster
/// Physical structure housing the spawner
var/obj/structure/spider/eggcluster/egg
/// Which antag datum do we grant?
var/granted_datum = /datum/antagonist/spider
/// The types of spiders that the spawner can produce
var/list/potentialspawns = list(
/mob/living/basic/spider/growing/spiderling/nurse,
Expand Down Expand Up @@ -122,10 +125,11 @@

/obj/effect/mob_spawn/ghost_role/spider/special(mob/living/basic/spider/spawned_mob, mob/mob_possessor)
. = ..()
spawned_mob.directive = directive
if (isspider(spawned_mob))
spawned_mob.directive = directive
egg.spawner = null
QDEL_NULL(egg)
var/datum/antagonist/spider/spider_antag = new(directive)
var/datum/antagonist/spider/spider_antag = new granted_datum(directive)
spawned_mob.mind.add_antag_datum(spider_antag)

/obj/effect/mob_spawn/ghost_role/spider/enriched
Expand All @@ -141,14 +145,17 @@

/obj/effect/mob_spawn/ghost_role/spider/bloody
name = "bloody egg cluster"
color = rgb(255, 0, 0)
you_are_text = "You are a bloody spider."
icon = 'icons/mob/simple/meteor_heart.dmi'
icon_state = "eggs"
you_are_text = "You are a flesh spider."
flavour_text = "An abomination of nature set upon the station by changelings. Your only goal is to kill, terrorize, and survive."
directive = "You are the spawn of a vicious changeling. You have no ambitions except to wreak havoc and ensure your own survival. You are aggressive to all living beings outside of your species, including changelings."
faction = list()
directive = null
cluster_type = /obj/structure/spider/eggcluster/bloody
potentialspawns = list(
/mob/living/basic/spider/giant/hunter/flesh,
/mob/living/basic/flesh_spider,
)
granted_datum = /datum/antagonist/spider/flesh

/obj/effect/mob_spawn/ghost_role/spider/midwife
name = "midwife egg cluster"
Expand All @@ -170,6 +177,14 @@
* * newname - If set, renames the mob to this name
*/
/obj/effect/mob_spawn/ghost_role/spider/create(mob/user, newname)
var/chosen_spider = length(potentialspawns) > 1 ? get_radial_choice(user) : potentialspawns[1]
if(QDELETED(src) || QDELETED(user) || isnull(chosen_spider))
return FALSE
mob_type = chosen_spider
return ..()

/// Pick a spider type from a radial menu
/obj/effect/mob_spawn/ghost_role/spider/proc/get_radial_choice(mob/user)
var/list/spider_list = list()
var/list/display_spiders = list()
for(var/choice in potentialspawns)
Expand All @@ -191,9 +206,6 @@

display_spiders[initial(spider.name)] = option
sort_list(display_spiders)

var/chosen_spider = show_radial_menu(user, egg, display_spiders, radius = 38)
chosen_spider = spider_list[chosen_spider]
if(QDELETED(src) || QDELETED(user) || !chosen_spider)
return FALSE
mob_type = chosen_spider
return ..()
return spider_list[chosen_spider]
1 change: 1 addition & 0 deletions code/modules/shuttle/supply.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/machinery/teleport/station,
/obj/narsie,
/obj/projectile/beam/wormhole,
/obj/ratvar, //monkestation edit
/obj/structure/blob,
/obj/structure/checkoutmachine,
/obj/structure/disposalpipe,
Expand Down
20 changes: 0 additions & 20 deletions monkestation/code/datums/random_engines/boxstation.dm

This file was deleted.

12 changes: 10 additions & 2 deletions monkestation/code/game/objects/items/stickers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,18 @@
/obj/item/storage/box/monkestation_stickers
name = "Box of Ook Certified Stickers"
desc = "Signed off on by the duke himself!"

///How many stickers do we fill this box with
var/sticker_count = 30
///List of sticker types we are restricted to picking from, if any
var/list/allowed_sticker_types

/obj/item/storage/box/monkestation_stickers/PopulateContents()
var/list/subtypes_list = subtypesof(/obj/item/sticker/monkestation)
for(var/i = 1 to sticker_count)
var/obj/item/sticker/sticker_type = pick(subtypesof(/obj/item/sticker/monkestation))
var/obj/item/sticker/sticker_type = pick(allowed_sticker_types || subtypes_list)
new sticker_type(src)

/obj/item/storage/box/monkestation_stickers/bad_time
name = "Box of Uncertified Leak Stickers"
desc = "NOT signed off on by NT."
allowed_sticker_types = list(/obj/item/sticker/monkestation/bad_times)
Loading
Loading