Merge branch 'master' into more-ashwalker-woes
This commit is contained in:
@@ -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,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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -206,6 +206,9 @@ GLOBAL_LIST_EMPTY(uplinks)
|
||||
return data
|
||||
|
||||
/datum/component/uplink/ui_act(action, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(!active)
|
||||
return
|
||||
switch(action)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
@@ -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/"
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user