From f6988a2a1c903a7021ea8c3b26080ded445c4154 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Fri, 5 Apr 2019 18:42:22 -0500 Subject: [PATCH 01/18] Adds DNA to semen puddles Consistency's sake, I guess. --- .../code/modules/reagents/reagents/cit_reagents.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index ae77fbcfc0..e46174b5a9 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -36,6 +36,10 @@ /obj/effect/decal/cleanable/semen/New() ..() dir = pick(1,2,4,8) + add_blood_DNA(list("Non-human DNA" = "A+")) + +/obj/effect/decal/cleanable/semen/replace_decal(obj/effect/decal/cleanable/semen/S) + S.add_blood_DNA(return_blood_DNA()) /datum/reagent/consumable/femcum name = "Female Ejaculate" From a90ccc89e418f16c61f3d0e1bf628f8aa05650ba Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 7 Apr 2019 18:29:52 -0500 Subject: [PATCH 02/18] Fixes human tails and ears defaulting to none in save files --- code/modules/client/preferences.dm | 4 ---- code/modules/client/preferences_savefile.dm | 12 ++++-------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d6bfc49628..942fc3c620 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1455,10 +1455,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["mam_body_markings"] = "Plain" if("tail_lizard" in pref_species.default_features) features["tail_lizard"] = "Smooth" - if("mam_tail" in pref_species.default_features) - features["mam_tail"] = "None" - if("mam_ears" in pref_species.default_features) - features["mam_ears"] = "None" if(pref_species.id == "felinid") features["mam_tail"] = "Cat" features["mam_ears"] = "Cat" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 9e19ab65a2..9404b92ab2 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -260,12 +260,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_lizard_body_markings"] >> features["body_markings"] S["feature_lizard_legs"] >> features["legs"] S["feature_moth_wings"] >> features["moth_wings"] - if(!CONFIG_GET(flag/join_with_mutant_humans)) - features["tail_human"] = "none" - features["ears"] = "none" - else - S["feature_human_tail"] >> features["tail_human"] - S["feature_human_ears"] >> features["ears"] + S["feature_human_tail"] >> features["tail_human"] + S["feature_human_ears"] >> features["ears"] //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) @@ -388,10 +384,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc)) features["mcolor"] = sanitize_hexcolor(features["mcolor"], 3, 0) features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], GLOB.tails_list_lizard) - features["tail_human"] = sanitize_inlist(features["tail_human"], GLOB.tails_list_human, "None") + features["tail_human"] = sanitize_inlist(features["tail_human"], GLOB.tails_list_human) features["snout"] = sanitize_inlist(features["snout"], GLOB.snouts_list) features["horns"] = sanitize_inlist(features["horns"], GLOB.horns_list) - features["ears"] = sanitize_inlist(features["ears"], GLOB.ears_list, "None") + features["ears"] = sanitize_inlist(features["ears"], GLOB.ears_list) features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) From e6ea9f8ae72d8173f6f0cf1e4f3a1178d516ca9c Mon Sep 17 00:00:00 2001 From: Poojawa Date: Sun, 7 Apr 2019 18:44:41 -0500 Subject: [PATCH 03/18] Let's make sure these don't get overriden either because wtf --- code/modules/client/preferences_savefile.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 9404b92ab2..b6210d94b8 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -391,8 +391,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) - features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") - features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") + features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) + features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) job_civilian_high = sanitize_integer(job_civilian_high, 0, 65535, initial(job_civilian_high)) From 5434c207818d13ecaa1ecb6b1a1de557d0086a4a Mon Sep 17 00:00:00 2001 From: Cyprian Date: Tue, 9 Apr 2019 17:09:07 +0200 Subject: [PATCH 04/18] Changing the ripley --- code/game/mecha/working/ripley.dm | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 629de2f697..4d2e113749 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -2,14 +2,14 @@ desc = "Autonomous Power Loader Unit. This newer model is refitted with powerful armour against the dangers of planetary mining." name = "\improper APLU \"Ripley\"" icon_state = "ripley" - step_in = 4 //Move speed, lower is faster. - var/fast_pressure_step_in = 2 //step_in while in normal pressure conditions - var/slow_pressure_step_in = 4 //step_in while in better pressure conditions + step_in = 3 //Move speed, lower is faster. + var/fast_pressure_step_in = 2 + var/slow_pressure_step_in = 3 max_temperature = 20000 max_integrity = 200 - lights_power = 7 + lights_power = 8 deflect_chance = 15 - armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) + armor = list("melee" = 30, "bullet" = 15, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) max_equip = 6 wreckage = /obj/structure/mecha_wreckage/ripley var/list/cargo = new @@ -64,6 +64,9 @@ desc = "Autonomous Power Loader Unit. This model is refitted with additional thermal protection." name = "\improper APLU \"Firefighter\"" icon_state = "firefighter" + step_in = 4 + fast_pressure_step_in = 2 + slow_pressure_step_in = 4 max_temperature = 65000 max_integrity = 250 resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF @@ -191,4 +194,4 @@ cargo -= O else if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded. - to_chat(user, "You fail to push [O] out of [src]!") + to_chat(user, "You fail to push [O] out of [src]!") \ No newline at end of file From 69ba76f16f98b09ed7fd6d6717140b1aa12c118e Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 9 Apr 2019 19:12:59 -0400 Subject: [PATCH 05/18] *vzdokh --- code/modules/paperwork/paper.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index b1f001222b..d6d0a3dc4f 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -134,7 +134,7 @@ var/locid = 0 var/laststart = 1 var/textindex = 1 - while(1) //I know this can cause infinite loops and fuck up the whole server, but the if(istart==0) should be safe as fuck + while(locid < 15) //hey whoever decided a while(1) was a good idea here, i hate you var/istart = 0 if(links) istart = findtext(info_links, "", laststart) @@ -198,7 +198,7 @@ // Count the fields var/laststart = 1 - while(1) + while(fields < 15) var/i = findtext(t, "", laststart) if(i == 0) break @@ -210,7 +210,7 @@ /obj/item/paper/proc/reload_fields() // Useful if you made the paper programicly and want to include fields. Also runs updateinfolinks() for you. fields = 0 var/laststart = 1 - while(1) + while(fields < 15) var/i = findtext(info, "", laststart) if(i == 0) break From 13bb5802a303993ed96523b39b3f7131947091dd Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 9 Apr 2019 18:32:03 -0500 Subject: [PATCH 06/18] Automatic changelog generation for PR #8229 [ci skip] --- html/changelogs/AutoChangeLog-pr-8229.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8229.yml diff --git a/html/changelogs/AutoChangeLog-pr-8229.yml b/html/changelogs/AutoChangeLog-pr-8229.yml new file mode 100644 index 0000000000..c22f1dab3d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8229.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - bugfix: "Hopefully fixed paper crash 2: electric boogaloo" From 30dbc57e7514645e409008b723cdc4c5e2d79d33 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 11 Apr 2019 06:55:57 -0500 Subject: [PATCH 07/18] Labcoats carry mk II hypos, kits hold more --- code/modules/clothing/suits/labcoat.dm | 23 ++++++++++++++++++- .../game/objects/items/storage/firstaid.dm | 20 ++++++++-------- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index a598bd0959..6576f0e55b 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -5,7 +5,28 @@ item_state = "labcoat" blood_overlay_type = "coat" body_parts_covered = CHEST|ARMS - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + allowed = list( + /obj/item/analyzer, + /obj/item/stack/medical, + /obj/item/dnainjector, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/syringe, + /obj/item/reagent_containers/hypospray, + /obj/item/hypospray/mkii, + /obj/item/healthanalyzer, + /obj/item/flashlight/pen, + /obj/item/reagent_containers/glass/bottle, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/pill, + /obj/item/storage/pill_bottle, + /obj/item/paper, + /obj/item/melee/classic_baton/telescopic, + /obj/item/soap, + /obj/item/sensor_device, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman + ) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 50, "acid" = 50) togglename = "buttons" species_exception = list(/datum/species/golem) diff --git a/modular_citadel/code/game/objects/items/storage/firstaid.dm b/modular_citadel/code/game/objects/items/storage/firstaid.dm index 6ddf3963dd..6ff1bfbe2c 100755 --- a/modular_citadel/code/game/objects/items/storage/firstaid.dm +++ b/modular_citadel/code/game/objects/items/storage/firstaid.dm @@ -23,14 +23,14 @@ /obj/item/storage/firstaid/o2 icon_state = "oxy" - + /obj/item/storage/firstaid/radbgone icon_state = "rad" - + /obj/item/storage/firstaid/radbgone/Initialize(mapload) . = ..() icon_state = pick("[initial(icon_state)]","[initial(icon_state)]2","[initial(icon_state)]3","[initial(icon_state)]4") - + /obj/item/storage/firstaid/tactical icon_state = "tactical" @@ -50,10 +50,10 @@ /obj/item/storage/hypospraykit/ComponentInitialize() . = ..() GET_COMPONENT(STR, /datum/component/storage) - STR.max_w_class = WEIGHT_CLASS_SMALL - STR.max_combined_w_class = 5 - STR.max_items = 5 - STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + STR.max_items = 12 + STR.can_hold = typecacheof(list( + /obj/item/hypospray/mkii, + /obj/item/reagent_containers/glass/bottle/vial)) /obj/item/storage/hypospraykit/regular icon_state = "firstaid-mini" @@ -136,10 +136,10 @@ /obj/item/storage/hypospraykit/cmo/ComponentInitialize() . = ..() GET_COMPONENT(STR, /datum/component/storage) - STR.max_w_class = WEIGHT_CLASS_SMALL - STR.max_combined_w_class = 6 STR.max_items = 6 - STR.cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + STR.can_hold = typecacheof(list( + /obj/item/hypospray/mkii, + /obj/item/reagent_containers/glass/bottle/vial)) /obj/item/storage/hypospraykit/cmo/PopulateContents() if(empty) From 45b8889562c3c6ec915c62f5bd653ed49c6d33bc Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 11 Apr 2019 07:13:19 -0500 Subject: [PATCH 08/18] Devourable mobs are digestible again --- .../hostile/megafauna/dragon_vore.dm | 2 -- .../simple_animal/simplemob_vore_values.dm | 23 ++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm index 7e69298b69..71c393b592 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm @@ -8,8 +8,6 @@ var/obj/belly/megafauna/dragon/maw/maw = new(src) var/obj/belly/megafauna/dragon/gullet/gullet = new(src) var/obj/belly/megafauna/dragon/gut/gut = new(src) -// for(var/obj/belly/X in list(maw, gullet, gut)) -// vore_organs[X.name] = X // Connect 'stomachs' together maw.transferlocation = gullet gullet.transferlocation = gut diff --git a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm b/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm index ed1268a354..c958d690eb 100644 --- a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm +++ b/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm @@ -1,65 +1,80 @@ /mob/living/simple_animal/pet/cat devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/crab devourable = TRUE + digestible = TRUE /mob/living/simple_animal/pet/dog devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/hostile/retaliate/goat devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/cow devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/chick devourable = TRUE + digestible = TRUE /mob/living/simple_animal/chicken devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/pet/fox - devourable = TRUE no_vore = FALSE /mob/living/simple_animal/hostile/lizard devourable = TRUE + digestible = TRUE /mob/living/simple_animal/mouse devourable = TRUE + digestible = TRUE /mob/living/simple_animal/pet/penguin no_vore = TRUE /mob/living/simple_animal/pet devourable = TRUE + digestible = TRUE /mob/living/simple_animal/sloth devourable = TRUE + digestible = TRUE /mob/living/simple_animal/hostile/alien devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/hostile/bear devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/hostile/poison/giant_spider devourable = TRUE + digestible = TRUE /mob/living/simple_animal/hostile/retaliate/poison/snake devourable = TRUE + digestible = TRUE no_vore = FALSE //oh yes my pretty. - + /mob/living/simple_animal/hostile/gorilla devourable = TRUE + digestible = TRUE no_vore = FALSE /mob/living/simple_animal/hostile/megafauna/dragon @@ -80,6 +95,8 @@ /mob/living/carbon/monkey devourable = TRUE - + digestible = TRUE + /mob/living/simple_animal/hostile/carp devourable = TRUE + digestible = TRUE From 4dcbaa8c8074d8efb652b58ea17d59888080b503 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 11 Apr 2019 11:15:25 -0500 Subject: [PATCH 09/18] Refractors simple mob vore code, enables vore mobs also just removes the mistake that was hunger sounds. --- .../mob/living/carbon/human/species.dm | 10 - .../living/simple_animal/hostile/hostile.dm | 10 +- .../hostile/megafauna/dragon_vore.dm | 2 +- .../hostile/megafauna/megafauna.dm | 2 +- .../living/simple_animal/simple_animal_vr.dm | 116 +++++---- .../simple_animal/simplemob_vore_values.dm | 227 ++++++++++-------- .../code/modules/vore/eating/living_vr.dm | 48 ---- .../modules/vore/eating/simple_animal_vr.dm | 44 ---- .../code/modules/vore/eating/vore_vr.dm | 7 +- .../code/modules/vore/eating/vorepanel_vr.dm | 11 - tgstation.dme | 1 - 11 files changed, 211 insertions(+), 267 deletions(-) delete mode 100644 modular_citadel/code/modules/vore/eating/simple_animal_vr.dm diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1e83517977..ca4f230905 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1142,16 +1142,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.add_trait(TRAIT_FAT, OBESITY) H.update_inv_w_uniform() H.update_inv_wear_suit() - - /* - if(H.noisy && H.nutrition <= NUTRITION_LEVEL_STARVING) - if(prob(10)) - playsound(get_turf(H),"hunger_sounds",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - - else if(H.noisy && H.nutrition <= NUTRITION_LEVEL_HUNGRY) - if(prob(10)) - playsound(get_turf(H),"hunger_sounds",15,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - */ // nutrition decrease and satiety if (H.nutrition > 0 && H.stat != DEAD && !H.has_trait(TRAIT_NOHUNGER)) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 941ba0ec69..ec858fdff5 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -345,7 +345,15 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() in_melee = TRUE - return target.attack_animal(src) + if(isliving(target)) + var/mob/living/L = target + if(L.Adjacent(src) && vore_active && L.devourable) // aggressive check to ensure vore attacks can be made + if(prob(voracious_chance)) + vore_attack(src,L,src) + else + return L.attack_animal(src) + else + return target.attack_animal(src) /mob/living/simple_animal/hostile/proc/Aggro() vision_range = aggro_vision_range diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm index 71c393b592..26f146b952 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm @@ -47,6 +47,6 @@ vore_sound = "Tauric Swallow" desc = "With a rush of burning ichor greeting you, you're introduced to the Drake's stomach. Wrinkled walls greedily grind against you, acidic slimes working into your body as you become fuel and nutriton for a superior predator. All that's left is your body's willingness to resist your destiny." digest_mode = DM_DRAGON - digest_burn = 5 + digest_burn = 2 swallow_time = 100 // costs extra time to eat directly to here escapechance = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 92ac07b1a0..a07e46a289 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -85,7 +85,7 @@ OpenFire() if(L.Adjacent(src) && (L.stat != CONSCIOUS)) if(vore_active && L.devourable == TRUE) - dragon_feeding(src,L) + vore_attack(src,L,src) LoseTarget() else devour(L) diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index 41c7971533..afb1b88d3b 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -1,21 +1,29 @@ +#define VORACIOUS_CHANCE 40 +#define VORE_SWALLOW_TIME 50 + /mob/living/simple_animal - // List of targets excluded (for now) from being eaten by this mob. - var/list/prey_exclusions = list() - devourable = FALSE //insurance because who knows. - digestable = TRUE //I mean, if it's devourable it should also be digestible - var/vore_active = FALSE // If vore behavior is enabled for this mob + //Specific vore behaviors + var/vore_active = FALSE // If vore behavior is enabled for this mob + var/isPredator = FALSE //Are they capable of performing and pre-defined vore actions for their species? + var/swallowTime = VORE_SWALLOW_TIME //How long it takes to eat Human and other Simple_animal prey in 1/10 of a second. The default is 5 seconds. + var/list/prey_excludes = list() //For excluding people from being eaten. + var/voracious_chance = VORACIOUS_CHANCE //Mob AI Engagement probability when rolling between regular melee strike and a vore attempt, default 40% - var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB) - var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted - var/vore_escape_chance = 25 // Chance of resisting out of mob - var/vore_absorb_chance = 0 // chance of absorbtion by mob + // Vore belly interactions + // Most mobs are only going to have the one gut. Multi-gut set ups should refer to Ash Drake's dragon_vore.dm for set up. - var/vore_stomach_name // The name for the first belly if not "stomach" - var/vore_stomach_flavor // The flavortext for the first belly if not the default - - var/vore_fullness = 0 // How "full" the belly is (controls icons) - var/list/living_mobs = list() + var/vore_default_sound = "Gulp" // Default vore sound + var/vore_default_release = "Splatter" // Default release sound + var/vore_wetness = TRUE // Default for a wet belly + var/vore_default_mode = DM_DIGEST // Default bellymode (DM_DIGEST, DM_HOLD, DM_ABSORB) + var/vore_digest_chance = VORACIOUS_CHANCE // Chance to switch to digest mode if resisted, default 40% + var/vore_escape_chance = VORACIOUS_CHANCE // Chance of resisting out of mob, default 40% + var/vore_absorb_chance = 0 // chance of absorbtion by mob, default 0% + var/vore_stomach_name // The name for the first belly if not "stomach" + var/vore_stomach_flavor // The flavortext for the first belly if not the default + //Icon Memes + var/vore_fullness = 0 // How "full" the belly is (controls icons) // Release belly contents before being gc'd! /mob/living/simple_animal/Destroy() @@ -34,35 +42,19 @@ vore_fullness = new_fullness -/* -/mob/living/simple_animal/proc/swallow_check() - for(var/I in vore_organs) - var/obj/belly/B = vore_organs[I] - if(vore_active) - update_fullness() - if(!vore_fullness) - // Nothing - return - else - addtimer(CALLBACK(src, .proc/swallow_mob), B.swallow_time) - -/mob/living/simple_animal/proc/swallow_mob() - for(var/I in vore_organs) - var/obj/belly/B = vore_organs[I] - for(var/mob/living/M in B.contents) - B.transfer_contents(M, transferlocation) -*/ - /mob/living/simple_animal/death() release_vore_contents(silent = TRUE) . = ..() // Simple animals have only one belly. This creates it (if it isn't already set up) -/mob/living/simple_animal/proc/init_belly() +/mob/living/simple_animal/init_vore() + vore_init = TRUE if(vore_organs.len) return if(no_vore) //If it can't vore, let's not give it a stomach. return + if(vore_active && !IsAdvancedToolUser()) //vore active, but doesn't have thumbs to grab people with. + verbs |= /mob/living/simple_animal/proc/animal_nom var/obj/belly/B = new /obj/belly(src) vore_selected = B @@ -70,6 +62,9 @@ B.name = vore_stomach_name ? vore_stomach_name : "stomach" B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]." B.digest_mode = vore_default_mode + B.vore_sound = vore_default_sound + B.release_sound = vore_default_release + B.is_wet = vore_wetness B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance B.digestchance = vore_digest_chance @@ -97,21 +92,42 @@ "The juices pooling beneath you sizzle against your sore skin.", "The churning walls slowly pulverize you into meaty nutrients.", "The stomach glorps and gurgles as it tries to work you into slop.") -/* B.emote_lists[DM_ITEMWEAK] = list( - "The burning acids eat away at your form.", - "The muscular stomach flesh grinds harshly against you.", - "The caustic air stings your chest when you try to breathe.", - "The slimy guts squeeze inward to help the digestive juices soften you up.", - "The onslaught against your body doesn't seem to be letting up; you're food now.", - "The predator's body ripples and crushes against you as digestive enzymes pull you apart.", - "The juices pooling beneath you sizzle against your sore skin.", - "The churning walls slowly pulverize you into meaty nutrients.", - "The stomach glorps and gurgles as it tries to work you into slop.")*/ -//Grab = Nomf -/* -/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity) - . = ..() +// +// Simple proc for animals to have their digestion toggled on/off externally +// +/mob/living/simple_animal/verb/toggle_digestion() + set name = "Toggle Animal's Digestion" + set desc = "Enables digestion on this mob for 20 minutes." + set category = "Object" + set src in oview(1) - if(a_intent == I_GRAB && isliving(A) && !has_hands) - animal_nom(A)*/ \ No newline at end of file + var/datum/belly/B = vore_organs[vore_selected] + if(faction != usr.faction) + to_chat(usr,"This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.") + return + if(B.digest_mode == "Hold") + var/confirm = alert(usr, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will disable itself after 20 minutes.", "Enabling [name]'s Digestion", "Enable", "Cancel") + if(confirm == "Enable") + B.digest_mode = "Digest" + sleep(20 MINUTES) //12000=20 minutes + B.digest_mode = "Hold" + else + var/confirm = alert(usr, "This mob is currently set to digest all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", "Disable", "Cancel") + if(confirm == "Disable") + B.digest_mode = "Hold" + +// +// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs. +// +/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in oview(1)) + set name = "Animal Nom" + set category = "Vore" + set desc = "Since you can't grab, you get a verb!" + + if (stat != CONSCIOUS) + return + if (T.devourable == FALSE) + to_chat(usr, "You can't eat this!") + return + return vore_attack(usr,T,usr) diff --git a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm b/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm index c958d690eb..0daf68f6c1 100644 --- a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm +++ b/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm @@ -1,102 +1,141 @@ -/mob/living/simple_animal/pet/cat - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/crab - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/pet/dog - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/hostile/retaliate/goat - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/cow - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/chick - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/chicken - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/pet/fox - no_vore = FALSE - -/mob/living/simple_animal/hostile/lizard - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/mouse - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/pet/penguin - no_vore = TRUE - -/mob/living/simple_animal/pet - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/sloth - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/hostile/alien - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/hostile/bear - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/hostile/poison/giant_spider - devourable = TRUE - digestible = TRUE - -/mob/living/simple_animal/hostile/retaliate/poison/snake - devourable = TRUE - digestible = TRUE - no_vore = FALSE //oh yes my pretty. - -/mob/living/simple_animal/hostile/gorilla - devourable = TRUE - digestible = TRUE - no_vore = FALSE - -/mob/living/simple_animal/hostile/megafauna/dragon - no_vore = FALSE - -/mob/living/simple_animal/hostile/asteroid/goliath - no_vore = FALSE - -/mob/living/simple_animal/parrot - devourable = TRUE - no_vore = FALSE - -/mob/living/simple_animal - no_vore = TRUE - +//CARBON MOBS /mob/living/carbon/alien devourable = TRUE + digestable = TRUE + feeding = TRUE /mob/living/carbon/monkey devourable = TRUE - digestible = TRUE + digestable = TRUE + feeding = TRUE + + +/* + REFER TO code/modules/mob/living/simple_animal/simple_animal_vr.dm for Var information! +*/ + + +//NUETRAL MOBS +/mob/living/simple_animal/crab + devourable = TRUE + digestable = TRUE + feeding = TRUE + +/mob/living/simple_animal/cow + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/chick + devourable = TRUE + digestable = TRUE + +/mob/living/simple_animal/chicken + devourable = TRUE + digestable = TRUE + +/mob/living/simple_animal/mouse + devourable = TRUE + digestable = TRUE + +//STATION PETS +/mob/living/simple_animal/pet + devourable = TRUE + digestable = TRUE + feeding = TRUE + +/mob/living/simple_animal/pet/fox + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/pet/cat + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/pet/dog + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/sloth + devourable = TRUE + digestable = TRUE + feeding = TRUE + +/mob/living/simple_animal/parrot + devourable = TRUE + digestable = TRUE + +//HOSTILE MOBS +/mob/living/simple_animal/hostile/retaliate/goat + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_stomach_flavor = "You find yourself squeezed into the hollow of the goat, the smell of oats and hay thick in the tight space, all of which grinds in on you. Harmless for now..." + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/lizard + devourable = TRUE + digestable = TRUE + +/mob/living/simple_animal/hostile/alien + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/bear + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/poison/giant_spider + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/retaliate/poison/snake + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/gorilla + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD + +/mob/living/simple_animal/hostile/asteroid/goliath + devourable = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD /mob/living/simple_animal/hostile/carp devourable = TRUE - digestible = TRUE + digestable = TRUE + feeding = TRUE + vore_active = TRUE + isPredator = TRUE + vore_default_mode = DM_HOLD diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index cb194ddc65..b1d2a46ff2 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -9,7 +9,6 @@ var/vore_taste = null // What the character tastes like var/no_vore = FALSE // If the character/mob can vore. var/openpanel = 0 // Is the vore panel open? - var/noisy = FALSE // tummies are rumbly? var/absorbed = FALSE //are we absorbed? var/next_preyloop var/vore_init = FALSE //Has this mob's vore been initialized yet? @@ -140,51 +139,6 @@ var/belly = input("Choose Belly") in pred.vore_organs return perform_the_nom(user, prey, pred, belly) -//Dragon noms need to be faster -/mob/living/proc/dragon_feeding(var/mob/living/user, var/mob/living/prey) - var/belly = user.vore_selected - return perform_dragon(user, prey, user, belly) - -/mob/living/proc/perform_dragon(var/mob/living/user, var/mob/living/prey, var/mob/living/pred, var/obj/belly/belly, swallow_time = 20) - //Sanity - if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs)) - testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.") - return FALSE - - if(istype(pred, /mob/living/simple_animal/hostile/megafauna/dragon)) - if(isliving(prey) && !prey.Adjacent(pred)) - return FALSE - - // The belly selected at the time of noms - var/attempt_msg = "ERROR: Vore message couldn't be created. Notify a dev. (at)" - var/success_msg = "ERROR: Vore message couldn't be created. Notify a dev. (sc)" - - // Prepare messages - if(user == pred) //Feeding someone to yourself - attempt_msg = text("[] starts to [] [] into their []!",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name)) - success_msg = text("[] manages to [] [] into their []!",pred,lowertext(belly.vore_verb),prey,lowertext(belly.name)) - - if(!prey.Adjacent(user)) // let's doublecheck for sanity's sake. - return FALSE - - // Announce that we start the attempt! - user.visible_message(attempt_msg) - - if(!do_mob(src, user, swallow_time)) - return FALSE // Prey escaped (or user disabled) before timer expired. - - // If we got this far, nom successful! Announce it! - user.visible_message(success_msg) - playsound(get_turf(user), "[belly.vore_sound]",75,0,-6,0) - - // Actually shove prey into the belly. - belly.nom_mob(prey, user) - if (pred == user) - message_admins("[key_name(pred)] ate [key_name(prey)].") - pred.log_message("[key_name(pred)] ate [key_name(prey)].", LOG_ATTACK) - prey.log_message("[key_name(prey)] was eaten by [key_name(pred)].", LOG_ATTACK) - return TRUE - // // Master vore proc that actually does vore procedures // @@ -391,7 +345,6 @@ P.digestable = src.digestable P.devourable = src.devourable P.feeding = src.feeding - P.noisy = src.noisy P.vore_taste = src.vore_taste var/list/serialized = list() @@ -417,7 +370,6 @@ digestable = P.digestable devourable = P.devourable feeding = P.feeding - noisy = P.noisy vore_taste = P.vore_taste release_vore_contents(silent = TRUE) diff --git a/modular_citadel/code/modules/vore/eating/simple_animal_vr.dm b/modular_citadel/code/modules/vore/eating/simple_animal_vr.dm deleted file mode 100644 index a93eb2fcf4..0000000000 --- a/modular_citadel/code/modules/vore/eating/simple_animal_vr.dm +++ /dev/null @@ -1,44 +0,0 @@ -///////////////////// Simple Animal ///////////////////// -/mob/living/simple_animal - var/isPredator = FALSE //Are they capable of performing and pre-defined vore actions for their species? - var/swallowTime = 5 SECONDS //How long it takes to eat its prey in 1/10 of a second. The default is 5 seconds. - var/list/prey_excludes = list() //For excluding people from being eaten. - -// -// Simple proc for animals to have their digestion toggled on/off externally -// -/mob/living/simple_animal/verb/toggle_digestion() - set name = "Toggle Animal's Digestion" - set desc = "Enables digestion on this mob for 20 minutes." - set category = "Object" - set src in oview(1) - - var/datum/belly/B = vore_organs[vore_selected] - if(faction != usr.faction) - to_chat(usr,"This predator isn't friendly, and doesn't give a shit about your opinions of it digesting you.") - return - if(B.digest_mode == "Hold") - var/confirm = alert(usr, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will disable itself after 20 minutes.", "Enabling [name]'s Digestion", "Enable", "Cancel") - if(confirm == "Enable") - B.digest_mode = "Digest" - sleep(20 MINUTES) //12000=20 minutes - B.digest_mode = "Hold" - else - var/confirm = alert(usr, "This mob is currently set to digest all stomach contents. Do you want to disable this?", "Disabling [name]'s Digestion", "Disable", "Cancel") - if(confirm == "Disable") - B.digest_mode = "Hold" - -// -// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs. -// -/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in oview(1)) - set name = "Animal Nom" - set category = "Vore" - set desc = "Since you can't grab, you get a verb!" - - if (stat != CONSCIOUS) - return - if (T.devourable == FALSE) - to_chat(usr, "You can't eat this!") - return - return feed_grabbed_to_self(src,T) \ No newline at end of file diff --git a/modular_citadel/code/modules/vore/eating/vore_vr.dm b/modular_citadel/code/modules/vore/eating/vore_vr.dm index 64435619ae..dc813d70aa 100644 --- a/modular_citadel/code/modules/vore/eating/vore_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vore_vr.dm @@ -28,7 +28,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE // The datum type bolted onto normal preferences datums for storing Vore stuff // -#define VORE_VERSION 3 +#define VORE_VERSION 4 GLOBAL_LIST_EMPTY(vore_preferences_datums) @@ -41,7 +41,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) var/devourable = FALSE var/feeding = FALSE // var/allowmobvore = TRUE - var/noisy = FALSE var/list/belly_prefs = list() var/vore_taste = "nothing in particular" // var/can_be_drop_prey = FALSE @@ -108,7 +107,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) digestable = json_from_file["digestable"] devourable = json_from_file["devourable"] feeding = json_from_file["feeding"] - noisy = json_from_file["noisy"] vore_taste = json_from_file["vore_taste"] belly_prefs = json_from_file["belly_prefs"] @@ -119,8 +117,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) devourable = FALSE if(isnull(feeding)) feeding = FALSE - if(isnull(noisy)) - noisy = FALSE if(isnull(belly_prefs)) belly_prefs = list() @@ -136,7 +132,6 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums) "digestable" = digestable, "devourable" = devourable, "feeding" = feeding, - "noisy" = noisy, "vore_taste" = vore_taste, "belly_prefs" = belly_prefs, ) diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 4238ae4a7b..2ac2628d1f 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -229,7 +229,6 @@ dat += "
Delete Belly" dat += "Set Flavor" - dat += "Toggle Hunger Noises" dat += "
" @@ -730,15 +729,5 @@ if(user.client.prefs_vr) user.client.prefs_vr.feeding = user.feeding - if(href_list["togglenoisy"]) - var/choice = alert(user, "Toggle audible hunger noises. Currently: [user.noisy ? "Enabled" : "Disabled"]", "", "Enable audible hunger", "Cancel", "Disable audible hunger") - switch(choice) - if("Cancel") - return 0 - if("Enable audible hunger") - user.noisy = TRUE - if("Disable audible hunger") - user.noisy = FALSE - //Refresh when interacted with, returning 1 makes vore_look.Topic update return 1 \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 1cdc8cb21a..5b4c4eabe5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2986,7 +2986,6 @@ #include "modular_citadel\code\modules\vore\eating\bellymodes_vr.dm" #include "modular_citadel\code\modules\vore\eating\digest_act_vr.dm" #include "modular_citadel\code\modules\vore\eating\living_vr.dm" -#include "modular_citadel\code\modules\vore\eating\simple_animal_vr.dm" #include "modular_citadel\code\modules\vore\eating\vore_vr.dm" #include "modular_citadel\code\modules\vore\eating\voreitems.dm" #include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm" From 8520c91a98b070ccd15bdf06c068aa2c17ae2e93 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 11 Apr 2019 14:05:40 -0500 Subject: [PATCH 10/18] Pref Window Alignment + cycled backgrounds from Virgo --- code/modules/client/preferences.dm | 9 +++++++++ .../mob/dead/new_player/preferences_setup.dm | 3 ++- code/modules/mob/living/carbon/human/dummy.dm | 1 + interface/skin.dmf | 14 +++++++------- modular_citadel/icons/ui/backgrounds.dmi | Bin 0 -> 2780 bytes modular_citadel/interface/skin.dmf | 17 +++++++++-------- 6 files changed, 28 insertions(+), 16 deletions(-) create mode 100644 modular_citadel/icons/ui/backgrounds.dmi diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d6bfc49628..4f91cb016f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -127,6 +127,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/action_buttons_screen_locs = list() + //backgrounds + var/mutable_appearance/character_background + var/icon/bgstate = "steel" + var/list/bgstate_options = list("000", "midgrey", "FFF", "white", "steel", "techmaint", "dark", "plating", "reinforced") + /datum/preferences/New(client/C) parent = C @@ -266,6 +271,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Species:[pref_species.id]
" dat += "Random Body
" dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
" + dat += "
Cycle background:[bgstate]
" var/use_skintones = pref_species.use_skintones if(use_skintones) @@ -1412,6 +1418,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("previous_facehair_style") facial_hair_style = previous_list_item(facial_hair_style, GLOB.facial_hair_styles_list) + if("cycle_bg") + bgstate = next_list_item(bgstate, bgstate_options) + if("underwear") var/new_underwear if(gender == MALE) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 6b67ada775..fc879ed7a8 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -25,7 +25,6 @@ // var/wide_icon = FALSE //CITDEL THINGS // if(features["taur"] != "None") // wide_icon = TRUE - if(job_engsec_high) switch(job_engsec_high) if(AI_JF) @@ -37,6 +36,8 @@ // Set up the dummy for its photoshoot var/mob/living/carbon/human/dummy/mannequin = generate_or_wait_for_human_dummy(DUMMY_HUMAN_SLOT_PREFERENCES) + mannequin.cut_overlays() + mannequin.add_overlay(mutable_appearance('modular_citadel/icons/ui/backgrounds.dmi', bgstate, layer = SPACE_LAYER)) copy_to(mannequin) // Determine what job is marked as 'High' priority, and dress them up as such. diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index beb183e842..3406d29b3a 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -2,6 +2,7 @@ /mob/living/carbon/human/dummy real_name = "Test Dummy" status_flags = GODMODE|CANPUSH + mouse_drag_pointer = MOUSE_INACTIVE_POINTER var/in_use = FALSE INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy) diff --git a/interface/skin.dmf b/interface/skin.dmf index 65f4a22664..5f8e1ad125 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -272,7 +272,7 @@ window "statwindow" elem "preferences_window" type = MAIN pos = 372,0 - size = 1120x1000 + size = 1280x1000 anchor1 = none anchor2 = none background-color = none @@ -281,17 +281,17 @@ window "statwindow" statusbar = false elem "preferences_browser" type = BROWSER - pos = -8,-8 - size = 896x1008 + pos = 0,0 + size = 960x1000 anchor1 = 0,0 - anchor2 = 90,100 + anchor2 = 75,100 background-color = none saved-params = "" elem "character_preview_map" type = MAP - pos = 887,0 - size = 313x1000 - anchor1 = 90,0 + pos = 960,0 + size = 320x1000 + anchor1 = 75,0 anchor2 = 100,100 right-click = true saved-params = "zoom;letterbox;zoom-mode" diff --git a/modular_citadel/icons/ui/backgrounds.dmi b/modular_citadel/icons/ui/backgrounds.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7e061d6ba04433f8cc47b9a9745252d3269d9156 GIT binary patch literal 2780 zcmbtWc~nz(7XGCHf`Uod7n88aP6(B<8Bj=pLR2symPJ7k*<=wB0%CzDU`ObPML;YX zpvWeR>O`F{cs9CpRb^xASWj$D=RA{B_$ytAt@;-BO@a%EiEoC zuBxi4qobp%tE;7@rLL~7r>7?`FR!AaqN%A#BoZ+gjK049fddCfBoZ2pwzjsmu&_Ak zdfMigJ=LCe#L^0aAOqt=QBPA-E}(; z9USUDP+-C=(KLDSB<`XD-WzBAMC1Zi2GJf{h<;{QUYGZX?QS?R;9)K9aS!*M>~vzR zaun}Mz?Z=yw3JJWLe{hJJ?Rq z0+sMLPwzhV5L@EQ*x!*lUxekk_Rjik{h%azb9?Csc|LskmvRKk2K_jP}Jle`;u~ap=8Xz1BQ?A~QM!Hbk-O^W|>IOz6XQQ@rTlaR(uPTW}3p zBhV^{#dTQ)b}Vj9E=SWs&oGi!Fg4S=_`>NA%5SNWxn*z2?`Ln!pi9Efhyh094B9rvF5|e$rBWhir&S+>v!m2Lt)G#s-Uh(KHazS!Qm)S&M?dD!87$tI}1}^ z(!q!E#`hG|(Xj;7+mX3#98<6CT|6B~+)~c8r0T^Hi#??y@iQp(NW&N({Ho6SNF+*Ir72d=KbY$j8-#Z*>&2xf8#N+r zIM;NCyGlAr*Ae=JN3)m4C&sn!&T@!)=#}$X#W4lu{N>bWUOUGcq6;y-F!xG_J_W8; z)9amnm#$(jA&k1>7YAP@gk%>sII8@VTFv&O7@4AQ()il4aiU*kZZmooM1XbK*Lwvz z0I)UOU!Ab`;kDOY_v?`7hAF7qrlDhp9UG^v#9nJl_HN}E29J7Jrd|1oOo zK;P0amP_}_@H(n&{I>ICE=6eWJGg~gH^g@l-EP=j!~*Kz7BU^tuarwb+z30kix`tL zcoUzn*hCvG!-G}SoIYipe3J()zz~`yKyXq1NYQ5&xgwhHDz}l$KuW>Fap;6?MY(79 z?Sv(at9GBRp+6SUErE@WgLnkXIB4w?Y!9wwESvK!lp93PVfrVK3mL+~qe`@Y zT!H>v;nyu;Zbmx>9mgrPYfz=q8YUlVkL=R1dA7=+Q}f$Ql342H z54U#blRR(_uH{*ep}{O}`(O;?X|q9+_miO8D3Wc}kV$Gi3e#HNJ6{mtz|v!;_DKXU z8iYwPO*8kf5ZF-}GF9Y~WRCLF43(NquRfCGWyx)$GfaXxWE!TsTKn$qo*c#YkRN>q zqAvQC=2TVFK|_rr?sumr-~P!Rz1mscH$a^k*(<0@WQg+IqU9)O?cOV%zjV{`b#AY} zIW7eykf3Lb+
|oyv@TzT39((&t0YxyrMf2AsnhpTp~- z`*yxc-T132?nke&z7^X5GcfKR^o?|ypDvXrny_oy6(}lDd9`TQliz1DpkzO^5#srK2w6WLY%Sr2F(t?UJjvqnSrRYKO2AvxqLBbU056WHipvu z*#zypOkNkBN5F=s0)z1vOaSs@-9Z>H@)-{gwgQ0H448xI!Hd8cY{B&4As7F=5LRJ& ze}nW3AS7r#PKMj!$lYk`V6)jLMm9S-FyEMXipzOZwO(w-YVBa(zkkWZWYPPGm0Vj>RX!fDef@>K0ldG!O}GQrkO5GINl3sYi^46U zx+++Htjl#jW#v+ux$GSQjG8bTTXu)zrsxqc*chxqt%#omQsH2aw95bRwiMDrDu0y@ z7xnMp4-zv3>#*peKfFIjJ{*BXQO&&wB3Q@*OK3VPW+{a{}o2)tXRn@ zqwuQ|tZGp(AtdKvDpZcyN zR#8~QDP%E=&>Ca;8|aKrM Date: Thu, 11 Apr 2019 15:07:45 -0400 Subject: [PATCH 11/18] Update chem_dispenser.dm --- code/modules/reagents/chemistry/machinery/chem_dispenser.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 7339f850d8..cfdb047d1c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -62,7 +62,7 @@ ) var/list/upgrade_reagents3 = list( - "glycerol", + "saltpetre", "mine_salve", "toxin" ) From 3304875e38951a0ea5204fdd73c1d77eb3b80439 Mon Sep 17 00:00:00 2001 From: Poojawa Date: Thu, 11 Apr 2019 14:36:41 -0500 Subject: [PATCH 12/18] Buffs defib users by making them stop pulling automatically --- code/game/objects/items/defib.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index ba0aa36634..034363be7d 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -411,6 +411,8 @@ to_chat(user, "[src] are recharging!") return + user.stop_pulling() //User has hands full, and we don't care about anyone else pulling on it, their problem. CLEAR!! + if(user.a_intent == INTENT_DISARM) do_disarm(M, user) return From 690183b14f185afbe4a5f44bf239e3a56da41622 Mon Sep 17 00:00:00 2001 From: Trilbyspaceclone <30435998+Trilbyspaceclone@users.noreply.github.com> Date: Thu, 11 Apr 2019 16:08:42 -0400 Subject: [PATCH 13/18] Update chem_dispenser.dm --- code/modules/reagents/chemistry/machinery/chem_dispenser.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index cfdb047d1c..10282e5e0a 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -62,7 +62,6 @@ ) var/list/upgrade_reagents3 = list( - "saltpetre", "mine_salve", "toxin" ) From d45a58aed9d04c34d1f75bf40c81e666a977f506 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 13 Apr 2019 02:20:07 -0500 Subject: [PATCH 14/18] Automatic changelog generation for PR #8231 [ci skip] --- html/changelogs/AutoChangeLog-pr-8231.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8231.yml diff --git a/html/changelogs/AutoChangeLog-pr-8231.yml b/html/changelogs/AutoChangeLog-pr-8231.yml new file mode 100644 index 0000000000..f71ec3fd52 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8231.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - tweak: "hypospray kits hold 12 now, but only vials and sprays themselves" + - bugfix: "labcoats can carry MK II hyposprays on them now." From dcc302908c573a3e391a14010dbfc1b2816c6b08 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 13 Apr 2019 02:20:43 -0500 Subject: [PATCH 15/18] Automatic changelog generation for PR #8235 [ci skip] --- html/changelogs/AutoChangeLog-pr-8235.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8235.yml diff --git a/html/changelogs/AutoChangeLog-pr-8235.yml b/html/changelogs/AutoChangeLog-pr-8235.yml new file mode 100644 index 0000000000..ab5aef0b8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8235.yml @@ -0,0 +1,4 @@ +author: "Poojawa" +delete-after: True +changes: + - balance: "Defib users automatically stop pulling when they attempt to perform a defib shock" From 3f93a5e022dd50cffbea011a8b689e5eea85a52a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 13 Apr 2019 02:21:44 -0500 Subject: [PATCH 16/18] Automatic changelog generation for PR #8232 [ci skip] --- html/changelogs/AutoChangeLog-pr-8232.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8232.yml diff --git a/html/changelogs/AutoChangeLog-pr-8232.yml b/html/changelogs/AutoChangeLog-pr-8232.yml new file mode 100644 index 0000000000..00d319dfe5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8232.yml @@ -0,0 +1,6 @@ +author: "Poojawa" +delete-after: True +changes: + - rscadd: "Vore Mobs are a thing now, not just ash drakes" + - rscdel: "Removed hunger sound stuff. never taking requests from Coolgat3 ever again. +refractor: Simple Mobs use the same system regular human mobs do, itjustworks.png" From dd85f6aac3e0ccbee15c25e84c92a7f1bb781f35 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 13 Apr 2019 02:22:12 -0500 Subject: [PATCH 17/18] Automatic changelog generation for PR #8228 [ci skip] --- html/changelogs/AutoChangeLog-pr-8228.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8228.yml diff --git a/html/changelogs/AutoChangeLog-pr-8228.yml b/html/changelogs/AutoChangeLog-pr-8228.yml new file mode 100644 index 0000000000..bcfae35a3c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8228.yml @@ -0,0 +1,4 @@ +author: "Coolgat3" +delete-after: True +changes: + - tweak: "Raised the ripley's movement speed and lights range by 1, also lowered its armor to compensate." From df40dcf5531b1ad177b9a197d3890a7d7dc54974 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 13 Apr 2019 16:44:52 -0500 Subject: [PATCH 18/18] Automatic changelog generation for PR #8233 [ci skip] --- html/changelogs/AutoChangeLog-pr-8233.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-8233.yml diff --git a/html/changelogs/AutoChangeLog-pr-8233.yml b/html/changelogs/AutoChangeLog-pr-8233.yml new file mode 100644 index 0000000000..d9d827df4b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8233.yml @@ -0,0 +1,5 @@ +author: "Poojawa" +delete-after: True +changes: + - tweak: "Character Window settings unsnowflaked and normalized. I have no fucking clue how to make them work with taurs still tho, sorry." + - imageadd: "added rotating background images for better clarity and contrast than just SOLID FUCKING BLACK. Images from Virgo/Polaris/Eris"