Merge branch 'master' into more-ashwalker-woes

This commit is contained in:
Putnam3145
2021-10-18 04:35:57 -07:00
committed by GitHub
275 changed files with 21641 additions and 18315 deletions
@@ -109,7 +109,7 @@
/datum/achievement_data/ui_data(mob/user)
var/ret_data = list() // screw standards (qustinnus you must rename src.data ok)
ret_data["categories"] = list("Bosses", "Misc", "Mafia", "Scores")
ret_data["categories"] = list("Bosses", "Jobs", "Misc", "Mafia", "Scores")
ret_data["achievements"] = list()
ret_data["user_key"] = user.ckey
+2 -2
View File
@@ -2,7 +2,7 @@
///Name of the achievement, If null it won't show up in the achievement browser. (Handy for inheritance trees)
var/name
var/desc = "You did it."
///Found in UI_Icons/Achievements
///Found in ui_icons/achievements
var/icon = "default"
var/category = "Normal"
@@ -78,7 +78,7 @@
/datum/award/achievement/on_unlock(mob/user)
. = ..()
to_chat(user, "<span class='greenannounce'><B>Achievement unlocked: [name]!</B></span>")
to_chat(user, span_greenannounce("<B>Achievement unlocked: [name]!</B>"))
///Scores are for leaderboarded things, such as killcount of a specific boss
/datum/award/score
@@ -12,7 +12,7 @@
name = "Boss Killer"
desc = "You've come a long ways from asking how to switch hands."
database_id = "Boss Killer"
// icon = "firstboss"
icon = "firstboss"
/datum/award/achievement/boss/blood_miner_kill
name = "Blood-Drunk Miner Killer"
@@ -0,0 +1,34 @@
/datum/award/achievement/jobs
category = "Jobs"
icon = "basemisc"
//chemistry
/datum/award/achievement/jobs/chemistry_tut
name = "Perfect chemistry blossom"
desc = "Passed the chemistry tutorial with perfect purity!"
database_id = MEDAL_CHEM_TUT
icon = "chem_tut"
//all of service! hip hip!
/datum/award/achievement/jobs/service_bad
name = "Centcom Grade: Shitty Service"
desc = "Well, you at least tried. How about trying harder?"
database_id = MEDAL_BAD_SERVICE
icon = "chem_tut"
/datum/award/achievement/jobs/service_okay
name = "Centcom Grade: Acceptable Service"
desc = "Well, it'll do! You and your department did just fine."
database_id = MEDAL_OKAY_SERVICE
icon = "chem_tut"
/datum/award/achievement/jobs/service_good
name = "Centcom Grade: Exemplary Service"
desc = "Centcom is very impressed with your department!"
database_id = MEDAL_GOOD_SERVICE
icon = "chem_tut"
//civilian achievies! while not recognized by the code, it is recognized by our hearts
+14
View File
@@ -0,0 +1,14 @@
//chef
/datum/award/score/chef_tourist_score
name = "Tourists Served as Chef Highscore"
desc = "Your highscore on serving tourist bots as chef."
database_id = CHEF_TOURISTS_SERVED
//bartender
/datum/award/score/bartender_tourist_score
name = "Tourists Served as Bartender Highscore"
desc = "Your highscore on serving tourist bots as bartender."
database_id = BARTENDER_TOURISTS_SERVED
+17 -5
View File
@@ -154,8 +154,20 @@
database_id = MEDAL_TOOLBOX_SOUL
icon = "toolbox_soul"
/datum/award/achievement/misc/chemistry_tut
name = "Perfect chemistry blossom"
desc = "Passed the chemistry tutorial with perfect purity!"
database_id = MEDAL_CHEM_TUT
icon = "chem_tut"
/datum/award/achievement/misc/hot_damn
name = "Hot Damn!"
desc = "Sometimes you need to make some noise to make a point."
database_id = MEDAL_HOT_DAMN
icon = "hotdamn"
/datum/award/achievement/misc/cayenne_disk
name = "Very Important Piscis"
desc = "You can rest well now."
database_id = MEDAL_CAYENNE_DISK
icon = "cayenne_disk"
/datum/award/achievement/misc/tram_surfer
name = "Tram Surfer"
desc = "Lights out, guerilla radio!"
database_id = MEDAL_TRAM_SURFER
icon = "tram_surfer"
+6
View File
@@ -9,3 +9,9 @@
name = "Maintenance Pills Consumed"
desc = "Wait why?"
database_id = MAINTENANCE_PILL_SCORE
///How high of a score on the Intento did we get?
/datum/award/score/intento_score
name = "Intento Score"
desc = "A blast from the future?"
database_id = INTENTO_SCORE
+5
View File
@@ -16,6 +16,9 @@
/datum/atmosphere/New()
generate_gas_string()
/datum/atmosphere/proc/check_for_sanity(datum/gas_mixture/mix)
return
/datum/atmosphere/proc/generate_gas_string()
var/list/spicy_gas = restricted_gases.Copy()
var/target_pressure = rand(minimum_pressure, maximum_pressure)
@@ -52,6 +55,8 @@
gasmix.adjust_moles(gastype, -moles_to_remove)
gasmix.set_moles(gastype, FLOOR(gasmix.get_moles(gastype), 0.1))
check_for_sanity(gasmix)
// Now finally lets make that string
var/list/gas_string_builder = list()
for(var/id in gasmix.get_gases())
+7 -1
View File
@@ -20,9 +20,15 @@
minimum_pressure = HAZARD_LOW_PRESSURE + 10
maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
minimum_temp = BODYTEMP_COLD_DAMAGE_LIMIT + 1
minimum_temp = 270
maximum_temp = 320
/datum/atmosphere/lavaland/check_for_sanity(datum/gas_mixture/mix)
var/datum/breathing_class/o2_class = GLOB.gas_data.breathing_classes[BREATH_OXY]
while(o2_class.get_effective_pp(mix) < 10)
mix.adjust_moles(GAS_CO2, -0.5)
mix.adjust_moles(GAS_O2, 0.5)
/datum/atmosphere/icemoon
id = ICEMOON_DEFAULT_ATMOS
+10 -4
View File
@@ -83,13 +83,19 @@
return
if(HAS_TRAIT(owner, TRAIT_FEARLESS))
return
var/matches = FALSE
var/mainsource
for(var/word in trigger_words)
var/regex/reg = regex("(\\b|\\A)[REGEX_QUOTE(word)]'?s*(\\b|\\Z)", "i")
var/regex/reg = regex("(\\b|\\A)[REGEX_QUOTE(word)]'?s*(\\b|\\Z)", "ig")
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='phobia'>$1</span>")
break
hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], "<span class='phobia'>$0</span>")
matches = TRUE
mainsource = word
if(matches)
addtimer(CALLBACK(src, .proc/freak_out, null, mainsource), 10) //to react AFTER the chat message
/datum/brain_trauma/mild/phobia/handle_speech(datum/source, list/speech_args)
if(HAS_TRAIT(owner, TRAIT_FEARLESS))
@@ -93,7 +93,6 @@
/datum/crafting_recipe/quiver
name = "Quiver"
always_availible = FALSE
result = /obj/item/storage/belt/quiver
time = 80
reqs = list(/obj/item/stack/sheet/leather = 3,
@@ -104,19 +103,18 @@
name = "Bone Bow"
result = /obj/item/gun/ballistic/bow/ashen
time = 120 // 80+120 = 200
always_availible = FALSE
reqs = list(/obj/item/stack/sheet/bone = 8,
/obj/item/stack/sheet/sinew = 4)
category = CAT_PRIMAL
/datum/crafting_recipe/bow_tablet
/*/datum/crafting_recipe/bow_tablet
name = "Sandstone Bow Making Manual"
result = /obj/item/book/granter/crafting_recipe/bone_bow
time = 200 //Scribing // don't care
always_availible = FALSE
reqs = list(/obj/item/stack/rods = 1,
/obj/item/stack/sheet/mineral/sandstone = 4)
category = CAT_PRIMAL
category = CAT_PRIMAL*/
/datum/crafting_recipe/rib
name = "Collosal Rib"
@@ -154,3 +152,158 @@
/obj/item/shovel/spade = 1)
result = /obj/item/shovel/serrated
category = CAT_PRIMAL
/datum/crafting_recipe/bone_screwdriver
name = "Bone Screwdriver"
result = /obj/item/screwdriver/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_crowbar
name = "Bone Crowbar"
result = /obj/item/crowbar/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_cutters
name = "Bone Wirecutters"
result = /obj/item/wirecutters/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_wrench
name = "Bone Wrench"
result = /obj/item/wrench/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/necropolis_welding
name = "Necropolis Welding Torch"
result = /obj/item/weldingtool/experimental/ashwalker
time = 120
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 2,
/obj/item/organ/regenerative_core = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/tribalbelt
name = "Hunter's Belt"
result = /obj/item/storage/belt/mining/primitive
time = 80
reqs = list(/obj/item/stack/sheet/sinew = 4)
category = CAT_PRIMAL
/datum/crafting_recipe/goliath_gloves
name = "Goliath Gloves"
result = /obj/item/clothing/gloves/tackler/combat/goliath
time = 80
reqs = list(/obj/item/stack/sheet/sinew = 2,
/obj/item/stack/sheet/animalhide/goliath_hide = 2,
/obj/item/stack/sheet/cloth = 2,
/obj/item/stack/sheet/leather = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/goliath_drapes
name = "Goliath Drapes"
result = /obj/item/surgical_drapes/goliath
time = 80
reqs = list(/obj/item/stack/sheet/sinew = 1,
/obj/item/stack/sheet/animalhide/goliath_hide = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/diamond_scalpel
name = "Diamond Scalpel"
result = /obj/item/scalpel/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1,
/obj/item/stack/sheet/mineral/diamond = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_retractor
name = "Bone Retractor"
result = /obj/item/retractor/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/diamond_bonesaw
name = "Diamond Bonesaw"
result = /obj/item/circular_saw/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1,
/obj/item/organ/regenerative_core = 1,
/obj/item/stack/sheet/mineral/diamond = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/femurstat
name = "Bone Hemostat"
result = /obj/item/hemostat/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_bonesetter
name = "Bone Bonersetter"
result = /obj/item/bonesetter/bone
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/coretery
name = "Necropolis Cautery"
result = /obj/item/cautery/ashwalker
time = 80
reqs = list(/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/animalhide/goliath_hide = 1,
/obj/item/organ/regenerative_core = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_spade
name = "Bone Spade"
result = /obj/item/shovel/spade/bone
time = 80
reqs = list(/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_hatchet
name = "Bone Hatchet"
result = /obj/item/hatchet/bone
time = 80
reqs = list(/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_cultivator
name = "Bone Cultivator"
result = /obj/item/cultivator/bone
time = 80
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bone_glaive
name = "Necropolis Glaive"
result = /obj/item/kinetic_crusher/glaive/bone
time = 120
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/mineral/wood = 4,
/obj/item/stack/sheet/sinew = 4,
/obj/item/organ/regenerative_core = 2,
/obj/item/stack/sheet/mineral/diamond = 2,
/obj/item/stack/sheet/animalhide/goliath_hide = 2,
/obj/item/stack/sheet/leather = 2)
category = CAT_PRIMAL
@@ -335,7 +335,6 @@
name = "Bone Arrow"
result = /obj/item/ammo_casing/caseless/arrow/bone
time = 5
always_availible = FALSE
reqs = list(/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/sinew = 1,
/obj/item/ammo_casing/caseless/arrow/ash = 1)
@@ -347,7 +346,6 @@
result = /obj/item/ammo_casing/caseless/arrow/ash
tools = list(TOOL_WELDER)
time = 10 // 1.5 seconds minimum per actually worthwhile arrow excluding interface lag
always_availible = FALSE
reqs = list(/obj/item/ammo_casing/caseless/arrow/wood = 1)
category = CAT_WEAPONRY
subcategory = CAT_AMMO
+3
View File
@@ -206,6 +206,9 @@ GLOBAL_LIST_EMPTY(uplinks)
return data
/datum/component/uplink/ui_act(action, params)
. = ..()
if(.)
return
if(!active)
return
switch(action)
+2
View File
@@ -71,6 +71,8 @@
///What character we spawned in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not
var/mob/original_character
/// A lazy list of statuses to add next to this mind in the traitor panel
var/list/special_statuses
/datum/mind/New(var/key)
skill_holder = new(src)
+7
View File
@@ -0,0 +1,7 @@
/// This should match the interface of /client wherever necessary.
/datum/client_interface
/// Player preferences datum for the client
var/datum/preferences/prefs
/// The view of the client, similar to /client/var/view.
var/view = "15x15"
+6
View File
@@ -331,6 +331,12 @@
name = "Space Diner"
description = "Come, traveler of the bluespace planes. Sit, enjoy a drink and take one of the fair maidens for a night. The exit is the way you came in, via that teleporter thingy, but do remember to stay safe."
/datum/map_template/ruin/space/suspicious
id = "helterskelter"
suffix = "skelter.dmm"
name = "Helter Skelter"
description = "You're looking mighty suspicious. Why don't you go and take a seat over in that driver?"
//Space ruins for the station z
/datum/map_template/ruin/spacenearstation
prefix = "_maps/RandomRuins/SpaceRuinsStation/"
+3
View File
@@ -194,6 +194,9 @@
C.adjustStaminaLoss(max(0, stamdmg_per_ds * diff)) //if you really want to try to stamcrit someone with a taser alone, you can, but it'll take time and good timing.
last_tick = world.time
/datum/status_effect/electrode/no_damage
stamdmg_per_ds = 0
/datum/status_effect/electrode/no_combat_mode
id = "tased_strong"
movespeed_mod = /datum/movespeed_modifier/status_effect/tased/no_combat_mode
@@ -18,7 +18,7 @@
area_type = /area
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
/area/ai_monitored/turret_protected/ai, /area/commons/storage/emergency/starboard, /area/commons/storage/emergency/port, /area/shuttle)
/area/ai_monitored/turret_protected/ai, /area/commons/storage/emergency/starboard, /area/commons/storage/emergency/port, /area/shuttle, /area/ruin/lavaland)
target_trait = ZTRAIT_STATION
immunity_type = "rad"