Merge remote-tracking branch 'upstream/master'
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -290,6 +290,10 @@
|
||||
#define COMPONENT_INTERRUPT_LIFE_BIOLOGICAL 1 // interrupt biological processes
|
||||
#define COMPONENT_INTERRUPT_LIFE_PHYSICAL 2 // interrupt physical handling
|
||||
|
||||
#define COMSIG_LIVING_BIOLOGICAL_LIFE "biological_life" //from base of mob/living/BiologicalLife() (seconds, times_fired)
|
||||
|
||||
#define COMSIG_LIVING_PHYSICAL_LIFE "physical_life" //from base of mob/living/PhysicalLife() (seconds, times_fired)
|
||||
|
||||
// /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 COMSIG_CARBON_LOSE_WOUND "carbon_lose_wound" //from /datum/wound/proc/remove_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L)
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define TOXIC (1<<11)
|
||||
#define PINEAPPLE (1<<12)
|
||||
#define BREAKFAST (1<<13)
|
||||
#define ANTITOXIC (1<<14)
|
||||
|
||||
#define DRINK_NICE 1
|
||||
#define DRINK_GOOD 2
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
A.AddElement(/datum/element/update_icon_updates_onmob)
|
||||
RegisterSignal(A, COMSIG_ITEM_WORN_OVERLAYS, .proc/apply_worn_overlays)
|
||||
if(suits_with_helmet_typecache[A.type])
|
||||
RegisterSignal(A, COMSIG_SUIT_MADE_HELMET, .proc/register_helmet)
|
||||
RegisterSignal(A, COMSIG_SUIT_MADE_HELMET, .proc/register_helmet) //you better work now you slut
|
||||
else if(_flags & POLYCHROMIC_ACTION && ismob(A)) //in the event mob update icon procs are ever standarized.
|
||||
var/datum/action/polychromic/P = new(A)
|
||||
RegisterSignal(P, COMSIG_ACTION_TRIGGER, .proc/activate_action)
|
||||
@@ -166,6 +166,15 @@
|
||||
examine_list += "<span class='notice'>Alt-click to recolor it.</span>"
|
||||
|
||||
/datum/element/polychromic/proc/register_helmet(atom/source, obj/item/clothing/head/H)
|
||||
if(!isitem(H)) //backup in case if it messes up somehow
|
||||
if(istype(source,/obj/item/clothing/suit/hooded)) //so how come it be like this, where toggleable headslots are named separately (helmet/hood) anyways?
|
||||
var/obj/item/clothing/suit/hooded/sourcesuit = source
|
||||
H = sourcesuit.hood
|
||||
else if(istype(source,/obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/sourcesuit = source
|
||||
H = sourcesuit.helmet
|
||||
else
|
||||
return
|
||||
suit_by_helmet[H] = source
|
||||
helmet_by_suit[source] = H
|
||||
colors_by_atom[H] = colors_by_atom[source]
|
||||
|
||||
@@ -285,6 +285,17 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
beauty_modifier = -0.15
|
||||
texture_layer_icon_state = "runed"
|
||||
|
||||
/datum/material/brass
|
||||
name = "brass"
|
||||
desc = "Tybel gb-Ratvar"
|
||||
color = "#917010"
|
||||
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
|
||||
strength_modifier = 1.3 // Replicant Alloy is very good for skull beatings..
|
||||
sheet_type = /obj/item/stack/tile/brass
|
||||
value_per_unit = 0.75
|
||||
armor_modifiers = list("melee" = 1.4, "bullet" = 1.4, "laser" = 0, "energy" = 0, "bomb" = 1.4, "bio" = 1.2, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5) //But it has.. a few problems that can't easily be compensated for.
|
||||
beauty_modifier = 0.3 //It really beats the cold plain plating of the station, doesn't it?
|
||||
|
||||
/datum/material/bronze
|
||||
name = "bronze"
|
||||
desc = "Clock Cult? Never heard of it."
|
||||
|
||||
@@ -178,9 +178,12 @@
|
||||
table[y1][x1] += 10
|
||||
if(href_list["same_board"]) //Reset the board... kinda
|
||||
if(game_status != MINESWEEPER_GAME_PLAYING)
|
||||
mine_sound = TRUE
|
||||
game_status = MINESWEEPER_GAME_PLAYING
|
||||
if(table[y1][x1] >= 10) //If revealed, become unrevealed!
|
||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
||||
if(mine_sound)
|
||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
||||
mine_sound = FALSE
|
||||
table[y1][x1] -= 10
|
||||
if(table[y1][x1] > 10 && !reset_board)
|
||||
safe_squares_revealed += 1
|
||||
|
||||
@@ -38,3 +38,14 @@
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
drive()
|
||||
|
||||
/obj/machinery/mass_driver/pressure_plate
|
||||
name = "pressure plated mass driver"
|
||||
var/drive_delay = 10
|
||||
|
||||
/obj/machinery/mass_driver/pressure_plate/Crossed(atom/movable/O)
|
||||
. = ..()
|
||||
if(isliving(O))
|
||||
var/mob/living/L = O
|
||||
to_chat(L, "<span class='warning'>You feel something click beneath you!</span>")
|
||||
addtimer(CALLBACK(src, .proc/drive), drive_delay)
|
||||
@@ -636,7 +636,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \
|
||||
null, \
|
||||
new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty), \
|
||||
new/datum/stack_recipe("brass smith's hammer", /obj/item/melee/smith/hammer/ratvar, 6), \
|
||||
new/datum/stack_recipe("brass ingot", /obj/item/ingot/bronze/ratvar, 6, time = 100), \
|
||||
new/datum/stack_recipe("brass ingot", /obj/item/ingot/ratvar, 6, time = 100), \
|
||||
))
|
||||
|
||||
/obj/item/stack/tile/brass
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
if(owner.current.gender == MALE)
|
||||
if(prob(10)) // Gender override
|
||||
bloodsucker_reputation = pick("King of the Damned", "Blood King", "Emperor of Blades", "Sinlord", "God-King")
|
||||
else
|
||||
else if(owner.current.gender == FEMALE)
|
||||
if(prob(10)) // Gender override
|
||||
bloodsucker_reputation = pick("Queen of the Damned", "Blood Queen", "Empress of Blades", "Sinlady", "God-Queen")
|
||||
|
||||
@@ -341,10 +341,12 @@
|
||||
|
||||
//This handles the application of antag huds/special abilities
|
||||
/datum/antagonist/bloodsucker/apply_innate_effects(mob/living/mob_override)
|
||||
RegisterSignal(owner.current,COMSIG_LIVING_BIOLOGICAL_LIFE,.proc/LifeTick)
|
||||
return
|
||||
|
||||
//This handles the removal of antag huds/special abilities
|
||||
/datum/antagonist/bloodsucker/remove_innate_effects(mob/living/mob_override)
|
||||
UnregisterSignal(owner.current,COMSIG_LIVING_BIOLOGICAL_LIFE)
|
||||
return
|
||||
|
||||
//Assign default team and creates one for one of a kind team antagonists
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
B.decoy_override = FALSE
|
||||
remove_changeling_powers()
|
||||
owner.special_role = null
|
||||
owner.current.hud_used?.lingchemdisplay?.invisibility = INVISIBILITY_ABSTRACT
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/changeling/proc/remove_clownmut()
|
||||
@@ -225,6 +226,8 @@
|
||||
else //not dead? no chem/geneticdamage caps.
|
||||
chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), chem_storage)
|
||||
geneticdamage = max(0, geneticdamage-1)
|
||||
owner.current.hud_used?.lingchemdisplay?.invisibility = 0
|
||||
owner.current.hud_used?.lingchemdisplay?.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#dd66dd'>[round(chem_charges)]</font></div>"
|
||||
|
||||
|
||||
/datum/antagonist/changeling/proc/get_dna(dna_owner)
|
||||
@@ -357,10 +360,12 @@
|
||||
B.organ_flags &= ~ORGAN_VITAL
|
||||
B.decoy_override = TRUE
|
||||
update_changeling_icons_added()
|
||||
RegisterSignal(owner.current,COMSIG_LIVING_BIOLOGICAL_LIFE,.proc/regenerate)
|
||||
return
|
||||
|
||||
/datum/antagonist/changeling/remove_innate_effects()
|
||||
update_changeling_icons_removed()
|
||||
UnregisterSignal(owner.current,COMSIG_LIVING_BIOLOGICAL_LIFE)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,9 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
/obj/machinery/syndicatebomb/badmin/clown,
|
||||
/obj/machinery/syndicatebomb/empty,
|
||||
/obj/machinery/syndicatebomb/self_destruct,
|
||||
/obj/machinery/syndicatebomb/training
|
||||
/obj/machinery/syndicatebomb/training,
|
||||
/obj/machinery/gravity_generator,
|
||||
/obj/machinery/gravity_generator/main
|
||||
)))
|
||||
|
||||
//The malf AI action subtype. All malf actions are subtypes of this.
|
||||
|
||||
@@ -331,6 +331,7 @@
|
||||
var/heat = thermal_conductivity*delta_temperature* \
|
||||
(heat_capacity*HEAT_CAPACITY_VACUUM/(heat_capacity+HEAT_CAPACITY_VACUUM))
|
||||
temperature -= heat/heat_capacity
|
||||
temperature = max(temperature,T0C) //otherwise we just sorta get stuck at super cold temps forever
|
||||
|
||||
/turf/open/proc/temperature_share_open_to_solid(turf/sharer)
|
||||
sharer.temperature = air.temperature_share(null, sharer.thermal_conductivity, sharer.temperature, sharer.heat_capacity)
|
||||
@@ -344,3 +345,5 @@
|
||||
|
||||
temperature -= heat/heat_capacity
|
||||
sharer.temperature += heat/sharer.heat_capacity
|
||||
temperature = max(temperature,T0C)
|
||||
sharer.temperature = max(sharer.temperature,T0C)
|
||||
|
||||
@@ -40,6 +40,9 @@
|
||||
/datum/gas_reaction/proc/react(datum/gas_mixture/air, atom/location)
|
||||
return NO_REACTION
|
||||
|
||||
/datum/gas_reaction/proc/test()
|
||||
return list("success" = TRUE)
|
||||
|
||||
/datum/gas_reaction/nobliumsupression
|
||||
priority = INFINITY
|
||||
name = "Hyper-Noblium Reaction Suppression"
|
||||
@@ -70,6 +73,8 @@
|
||||
air.adjust_moles(/datum/gas/water_vapor,-MOLES_GAS_VISIBLE)
|
||||
. = REACTING
|
||||
|
||||
// no test cause it's entirely based on location
|
||||
|
||||
//tritium combustion: combustion of oxygen and tritium (treated as hydrocarbons). creates hotspots. exothermic
|
||||
/datum/gas_reaction/tritfire
|
||||
priority = -1 //fire should ALWAYS be last, but tritium fires happen before plasma fires
|
||||
@@ -126,6 +131,18 @@
|
||||
|
||||
return cached_results["fire"] ? REACTING : NO_REACTION
|
||||
|
||||
/datum/gas_reaction/tritfire/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/tritium,50)
|
||||
G.set_moles(/datum/gas/oxygen,50)
|
||||
G.set_temperature(500)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(!G.reaction_results["fire"])
|
||||
return list("success" = FALSE, "message" = "Trit fires aren't setting fire results correctly!")
|
||||
return ..()
|
||||
|
||||
//plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic
|
||||
/datum/gas_reaction/plasmafire
|
||||
priority = -2 //fire should ALWAYS be last, but plasma fires happen after tritium fires
|
||||
@@ -198,6 +215,28 @@
|
||||
|
||||
return cached_results["fire"] ? REACTING : NO_REACTION
|
||||
|
||||
/datum/gas_reaction/plasmafire/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/plasma,50)
|
||||
G.set_moles(/datum/gas/oxygen,50)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(500)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(!G.reaction_results["fire"])
|
||||
return list("success" = FALSE, "message" = "Plasma fires aren't setting fire results correctly!")
|
||||
if(!G.get_moles(/datum/gas/carbon_dioxide))
|
||||
return list("success" = FALSE, "message" = "Plasma fires aren't making CO2!")
|
||||
G.clear()
|
||||
G.set_moles(/datum/gas/plasma,10)
|
||||
G.set_moles(/datum/gas/oxygen,1000)
|
||||
G.set_temperature(500)
|
||||
result = G.react()
|
||||
if(!G.get_moles(/datum/gas/tritium))
|
||||
return list("success" = FALSE, "message" = "Plasma fires aren't making trit!")
|
||||
return ..()
|
||||
|
||||
//fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again (and again, and again). Again!
|
||||
//Fusion Rework Counter: Please increment this if you make a major overhaul to this system again.
|
||||
//6 reworks
|
||||
@@ -282,6 +321,31 @@
|
||||
air.set_temperature(clamp(((air.return_temperature()*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB,INFINITY))
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/fusion/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/carbon_dioxide,300)
|
||||
G.set_moles(/datum/gas/plasma,1000)
|
||||
G.set_moles(/datum/gas/tritium,100.61)
|
||||
G.set_moles(/datum/gas/nitryl,1)
|
||||
G.set_temperature(15000)
|
||||
G.set_volume(1000)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(abs(G.analyzer_results["fusion"] - 3) > 0.0000001)
|
||||
var/instability = G.analyzer_results["fusion"]
|
||||
return list("success" = FALSE, "message" = "Fusion is not calculating analyzer results correctly, should be 3.000000045, is instead [instability]")
|
||||
if(abs(G.get_moles(/datum/gas/plasma) - 850.616) > 0.5)
|
||||
var/plas = G.get_moles(/datum/gas/plasma)
|
||||
return list("success" = FALSE, "message" = "Fusion is not calculating plasma correctly, should be 850.616, is instead [plas]")
|
||||
if(abs(G.get_moles(/datum/gas/carbon_dioxide) - 1699.384) > 0.5)
|
||||
var/co2 = G.get_moles(/datum/gas/carbon_dioxide)
|
||||
return list("success" = FALSE, "message" = "Fusion is not calculating co2 correctly, should be 1699.384, is instead [co2]")
|
||||
if(abs(G.return_temperature() - 27600) > 200) // calculating this manually sucks dude
|
||||
var/temp = G.return_temperature()
|
||||
return list("success" = FALSE, "message" = "Fusion is not calculating temperature correctly, should be around 27600, is instead [temp]")
|
||||
return ..()
|
||||
|
||||
/datum/gas_reaction/nitrylformation //The formation of nitryl. Endothermic. Requires N2O as a catalyst.
|
||||
priority = 3
|
||||
name = "Nitryl formation"
|
||||
@@ -313,6 +377,20 @@
|
||||
air.set_temperature(max(((temperature*old_heat_capacity - energy_used)/new_heat_capacity),TCMB))
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/nitrylformation/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/oxygen,30)
|
||||
G.set_moles(/datum/gas/nitrogen,30)
|
||||
G.set_moles(/datum/gas/nitrous_oxide,10)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(150000)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(!G.get_moles(/datum/gas/nitryl) < 0.8)
|
||||
return list("success" = FALSE, "message" = "Nitryl isn't being generated correctly!")
|
||||
return ..()
|
||||
|
||||
/datum/gas_reaction/bzformation //Formation of BZ by combining plasma and tritium at low pressures. Exothermic.
|
||||
priority = 4
|
||||
name = "BZ Gas formation"
|
||||
@@ -348,6 +426,19 @@
|
||||
air.set_temperature(max(((temperature*old_heat_capacity + energy_released)/new_heat_capacity),TCMB))
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/bzformation/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/plasma,15)
|
||||
G.set_moles(/datum/gas/nitrous_oxide,15)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(10)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(!G.get_moles(/datum/gas/bz) < 4) // efficiency is 4.0643 and bz generation == efficiency
|
||||
return list("success" = FALSE, "message" = "Nitryl isn't being generated correctly!")
|
||||
return ..()
|
||||
|
||||
/datum/gas_reaction/stimformation //Stimulum formation follows a strange pattern of how effective it will be at a given temperature, having some multiple peaks and some large dropoffs. Exo and endo thermic.
|
||||
priority = 5
|
||||
name = "Stimulum formation"
|
||||
@@ -380,6 +471,23 @@
|
||||
air.set_temperature(max(((air.return_temperature()*old_heat_capacity + stim_energy_change)/new_heat_capacity),TCMB))
|
||||
return REACTING
|
||||
|
||||
/datum/gas_reaction/stimformation/test()
|
||||
//above mentioned "strange pattern" is a basic quintic polynomial, it's fine, can calculate it manually
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/bz,30)
|
||||
G.set_moles(/datum/gas/plasma,1000)
|
||||
G.set_moles(/datum/gas/tritium,1000)
|
||||
G.set_moles(/datum/gas/nitryl,1000)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(12998000) // yeah, really
|
||||
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(!G.get_moles(/datum/gas/stimulum) < 900)
|
||||
return list("success" = FALSE, "message" = "Stimulum isn't being generated correctly!")
|
||||
return ..()
|
||||
|
||||
/datum/gas_reaction/nobliumformation //Hyper-Noblium formation is extrememly endothermic, but requires high temperatures to start. Due to its high mass, hyper-nobelium uses large amounts of nitrogen and tritium. BZ can be used as a catalyst to make it less endothermic.
|
||||
priority = 6
|
||||
name = "Hyper-Noblium condensation"
|
||||
@@ -408,6 +516,19 @@
|
||||
if(new_heat_capacity > MINIMUM_HEAT_CAPACITY)
|
||||
air.set_temperature(max(((air.return_temperature()*old_heat_capacity - energy_taken)/new_heat_capacity),TCMB))
|
||||
|
||||
/datum/gas_reaction/nobliumformation/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/nitrogen,100)
|
||||
G.set_moles(/datum/gas/tritium,500)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(5000000) // yeah, really
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
if(abs(G.thermal_energy() - 23000000000) > 1000000) // god i hate floating points
|
||||
return list("success" = FALSE, "message" = "Hyper-nob formation isn't removing the right amount of heat! Should be 23,000,000,000, is instead [G.thermal_energy()]")
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/gas_reaction/miaster //dry heat sterilization: clears out pathogens in the air
|
||||
priority = -10 //after all the heating from fires etc. is done
|
||||
@@ -433,3 +554,20 @@
|
||||
//Possibly burning a bit of organic matter through maillard reaction, so a *tiny* bit more heat would be understandable
|
||||
air.set_temperature(air.return_temperature() + cleaned_air * 0.002)
|
||||
SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, cleaned_air*MIASMA_RESEARCH_AMOUNT)//Turns out the burning of miasma is kinda interesting to scientists
|
||||
|
||||
/datum/gas_reaction/miaster/test()
|
||||
var/datum/gas_mixture/G = new
|
||||
G.set_moles(/datum/gas/miasma,1)
|
||||
G.set_volume(1000)
|
||||
G.set_temperature(450)
|
||||
var/result = G.react()
|
||||
if(result != REACTING)
|
||||
return list("success" = FALSE, "message" = "Reaction didn't go at all!")
|
||||
G.clear()
|
||||
G.set_moles(/datum/gas/miasma,1)
|
||||
G.set_temperature(450)
|
||||
G.set_moles(/datum/gas/water_vapor,0.5)
|
||||
result = G.react()
|
||||
if(result != NO_REACTION)
|
||||
return list("success" = FALSE, "message" = "Miasma sterilization not stopping due to water vapor correctly!")
|
||||
return ..()
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
var/obj/item/clothing/head/hooded/hood
|
||||
var/hoodtype = /obj/item/clothing/head/hooded/winterhood //so the chaplain hoodie or other hoodies can override this
|
||||
|
||||
/obj/item/clothing/suit/hooded/New()
|
||||
/obj/item/clothing/suit/hooded/Initialize()
|
||||
. = ..()
|
||||
hood = MakeHelmet()
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/hooded/Destroy()
|
||||
. = ..()
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
/obj/item/clothing/suit/hooded/update_icon_state()
|
||||
icon_state = "[initial(icon_state)]"
|
||||
if(ishuman(hood.loc))
|
||||
if(ishuman(hood?.loc))
|
||||
var/mob/living/carbon/human/H = hood.loc
|
||||
if(H.head == hood)
|
||||
icon_state += "_t"
|
||||
@@ -131,8 +131,8 @@
|
||||
|
||||
//Hardsuit toggle code
|
||||
/obj/item/clothing/suit/space/hardsuit/Initialize()
|
||||
helmet = MakeHelmet()
|
||||
. = ..()
|
||||
helmet = MakeHelmet()
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/Destroy()
|
||||
if(helmet)
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lime
|
||||
name = "lime cake slice"
|
||||
@@ -141,7 +141,7 @@
|
||||
icon_state = "limecake_slice"
|
||||
filling_color = "#00FF00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/lemon
|
||||
name = "lemon cake"
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
icon_state = "lime_sc"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "limes" = 5)
|
||||
foodtype = FRUIT
|
||||
foodtype = FRUIT | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/snowcones/lemon
|
||||
name = "lemon snowcone"
|
||||
@@ -191,7 +191,7 @@
|
||||
icon_state = "fruitsalad_sc"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/limejuice = 5, /datum/reagent/consumable/orangejuice = 5)
|
||||
tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5)
|
||||
foodtype = FRUIT
|
||||
foodtype = FRUIT | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/snowcones/pineapple
|
||||
name = "pineapple snowcone"
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins
|
||||
filling_color = "#00800"
|
||||
tastes = list("cobwebs" = 1, "sugar" = 2)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
foodtype = JUNKFOOD | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/tobiko
|
||||
name = "tobiko"
|
||||
@@ -451,7 +451,7 @@
|
||||
var/mutable_appearance/head
|
||||
var/headcolor = rgb(0, 0, 0)
|
||||
tastes = list("candy" = 1)
|
||||
foodtype = JUNKFOOD | SUGAR
|
||||
foodtype = JUNKFOOD | SUGAR | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/lollipop/Initialize()
|
||||
. = ..()
|
||||
@@ -756,4 +756,4 @@
|
||||
bitesize = 2
|
||||
name = "hot-cross bun"
|
||||
desc = "The Cross represents the Assistants that died for your sins."
|
||||
icon_state = "hotcrossbun"
|
||||
icon_state = "hotcrossbun"
|
||||
|
||||
@@ -509,7 +509,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3)
|
||||
cooked_type = null
|
||||
tastes = list("meat" = 2, "dough" = 2, "laziness" = 1)
|
||||
foodtype = GRAIN
|
||||
foodtype = GRAIN | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/dankpocket
|
||||
name = "\improper Dank-pocket"
|
||||
@@ -556,9 +556,11 @@
|
||||
name = "exceptional plump helmet biscuit"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
|
||||
bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
foodtype += ANTITOXIC
|
||||
. = ..()
|
||||
if(fey)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
foodtype += ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cracker
|
||||
name = "cracker"
|
||||
|
||||
@@ -171,8 +171,10 @@
|
||||
name = "exceptional plump pie"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
foodtype += ANTITOXIC
|
||||
if(fey)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
foodtype += ANTITOXIC
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pie/xemeatpie
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket
|
||||
name = "donkpocket pizza slice"
|
||||
@@ -117,7 +117,7 @@
|
||||
icon_state = "donkpocketpizzaslice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizza/dank
|
||||
name = "dank pizza"
|
||||
@@ -127,7 +127,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizzaslice/dank
|
||||
name = "dank pizza slice"
|
||||
@@ -135,7 +135,7 @@
|
||||
icon_state = "dankpizzaslice"
|
||||
filling_color = "#2E8B57"
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1)
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY
|
||||
foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pizza/sassysage
|
||||
name = "sassysage pizza"
|
||||
@@ -187,6 +187,7 @@
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/arnold
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/iron = 10, /datum/reagent/medicine/omnizine = 30)
|
||||
tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2)
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/proc/try_break_off(mob/living/M, mob/living/user) //maybe i give you a pizza maybe i break off your arm
|
||||
var/obj/item/bodypart/l_arm = user.get_bodypart(BODY_ZONE_L_ARM)
|
||||
@@ -244,4 +245,4 @@
|
||||
icon_state = "meatpizzaslice"
|
||||
filling_color = "#A52A2A"
|
||||
tastes = list("cardboard" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2)
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT
|
||||
foodtype = GRAIN | VEGETABLES | DAIRY | MEAT
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
tastes = list("leaves" = 1)
|
||||
foodtype = VEGETABLES
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/herbsalad
|
||||
name = "herb salad"
|
||||
@@ -38,7 +38,7 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1)
|
||||
foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT
|
||||
foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/oatmeal
|
||||
name = "oatmeal"
|
||||
@@ -133,7 +133,7 @@
|
||||
trash = /obj/item/reagent_containers/glass/bowl
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/medicine/earthsblood = 3, /datum/reagent/medicine/omnizine = 5, /datum/reagent/drug/happiness = 2)
|
||||
tastes = list("hope" = 1)
|
||||
foodtype = VEGETABLES
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/salad/gumbo
|
||||
name = "black eyed gumbo"
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
icon_state = "nettlesoup"
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("nettles" = 1)
|
||||
foodtype = VEGETABLES
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/mystery
|
||||
name = "mystery soup"
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5)
|
||||
filling_color = "#F5F5DC"
|
||||
tastes = list("sweetness" = 3, "cake" = 1)
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES
|
||||
foodtype = GRAIN | FRUIT | VEGETABLES | ANTITOXIC
|
||||
custom_price = PRICE_CHEAP
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/energybar
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
seed = /obj/item/seeds/ambrosia/deus
|
||||
name = "ambrosia deus branch"
|
||||
desc = "Eating this makes you feel immortal!"
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
icon_state = "ambrosiadeus"
|
||||
filling_color = "#008B8B"
|
||||
wine_power = 50
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
seed = /obj/item/seeds/cannabis/death
|
||||
name = "death cannabis leaf"
|
||||
desc = "Looks a bit dark. Oh well."
|
||||
foodtype = VEGETABLES | TOXIC
|
||||
icon_state = "blackcannabis"
|
||||
wine_power = 40
|
||||
|
||||
@@ -111,6 +112,7 @@
|
||||
seed = /obj/item/seeds/cannabis/white
|
||||
name = "white cannabis leaf"
|
||||
desc = "It feels smooth and nice to the touch."
|
||||
foodtype = VEGETABLES | ANTITOXIC
|
||||
icon_state = "whitecannabis"
|
||||
wine_power = 10
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
seed = /obj/item/seeds/lime
|
||||
name = "lime"
|
||||
desc = "It's so sour, your face will twist."
|
||||
foodtype = FRUIT | ANTITOXIC
|
||||
icon_state = "lime"
|
||||
filling_color = "#00FF00"
|
||||
juice_results = list(/datum/reagent/consumable/limejuice = 0)
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
if(move_delay_add > 0)
|
||||
move_delay_add = max(0, move_delay_add - rand(1, 2))
|
||||
|
||||
/mob/living/carbon/alien/handle_changeling()
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/handle_fire()//Aliens on fire code
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
var/datum/action/innate/regenerate_limbs/regenerate_limbs
|
||||
var/datum/action/innate/slime_change/slime_change //CIT CHANGE
|
||||
liked_food = TOXIC | MEAT
|
||||
toxic_food = null
|
||||
disliked_food = null
|
||||
toxic_food = ANTITOXIC
|
||||
coldmod = 6 // = 3x cold damage
|
||||
heatmod = 0.5 // = 1/4x heat damage
|
||||
burnmod = 0.5 // = 1/2x generic burn damage
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
/mob/living/carbon/BiologicalLife(seconds, times_fired)
|
||||
//Updates the number of stored chemicals for powers
|
||||
handle_changeling()
|
||||
//Handles the unique mentabolism of bloodsuckers, look at /datum/antagonist/bloodsucker/proc/LifeTick()
|
||||
handle_bloodsucker()
|
||||
//Reagent processing needs to come before breathing, to prevent edge cases.
|
||||
handle_organs()
|
||||
. = ..() // if . is false, we are dead.
|
||||
@@ -410,25 +406,7 @@
|
||||
for(var/thing in all_wounds)
|
||||
var/datum/wound/W = thing
|
||||
if(W.processes) // meh
|
||||
W.handle_process()
|
||||
|
||||
//todo generalize this and move hud out
|
||||
/mob/living/carbon/proc/handle_changeling()
|
||||
if(mind && hud_used && hud_used.lingchemdisplay)
|
||||
var/datum/antagonist/changeling/changeling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(changeling)
|
||||
changeling.regenerate()
|
||||
hud_used.lingchemdisplay.invisibility = 0
|
||||
hud_used.lingchemdisplay.maptext = "<div align='center' valign='middle' style='position:relative; top:0px; left:6px'><font color='#dd66dd'>[round(changeling.chem_charges)]</font></div>"
|
||||
else
|
||||
hud_used.lingchemdisplay.invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
|
||||
/mob/living/carbon/proc/handle_bloodsucker()
|
||||
if(mind && AmBloodsucker(src))
|
||||
var/datum/antagonist/bloodsucker/B = mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
|
||||
B.LifeTick()
|
||||
|
||||
W.handle_process()
|
||||
|
||||
/mob/living/carbon/handle_mutations_and_radiation()
|
||||
if(dna && dna.temporary_mutations.len)
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
* Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
|
||||
*/
|
||||
/mob/living/proc/BiologicalLife(seconds, times_fired)
|
||||
SEND_SIGNAL(src,COMSIG_LIVING_BIOLOGICAL_LIFE, seconds, times_fired)
|
||||
handle_diseases()// DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not.
|
||||
|
||||
handle_wounds()
|
||||
@@ -78,6 +79,7 @@
|
||||
* Returns TRUE or FALSE based on if we were interrupted. This is used by overridden variants to check if they should stop.
|
||||
*/
|
||||
/mob/living/proc/PhysicalLife(seconds, times_fired)
|
||||
SEND_SIGNAL(src,COMSIG_LIVING_PHYSICAL_LIFE, seconds, times_fired)
|
||||
if(digitalinvis)
|
||||
handle_diginvis() //AI becomes unable to see mob
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
for (var/x in 1 to PILL_STYLE_COUNT)
|
||||
var/list/SL = list()
|
||||
SL["id"] = x
|
||||
SL["htmltag"] = assets.icon_tag("pill[x]")
|
||||
SL["class_name"] = assets.icon_class_name("pill[x]")
|
||||
pill_styles += list(SL)
|
||||
|
||||
|
||||
|
||||
@@ -2280,6 +2280,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
quality = RACE_DRINK
|
||||
else
|
||||
C.adjust_disgust(disgust)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/coldscales
|
||||
name = "Coldscales"
|
||||
@@ -2289,7 +2290,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "coldscales"
|
||||
glass_name = "glass of Coldscales"
|
||||
glass_desc = "A soft green drink that looks inviting!"
|
||||
|
||||
species_required = "lizard"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/oil_drum
|
||||
@@ -2301,7 +2301,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "oil_drum"
|
||||
glass_name = "Drum of oil"
|
||||
glass_desc = "A gray can of booze and oil..."
|
||||
|
||||
species_required = "robot"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/nord_king
|
||||
@@ -2312,7 +2311,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "nord_king"
|
||||
glass_name = "Keg of Nord King"
|
||||
glass_desc = "A dripping keg of red mead."
|
||||
|
||||
species_required = "basic"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/velvet_kiss
|
||||
@@ -2324,7 +2322,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "velvet_kiss"
|
||||
glass_name = "glass of Velvet Kiss"
|
||||
glass_desc = "Red and white drink for the upper classes or undead."
|
||||
|
||||
species_required = "undead"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/abduction_fruit
|
||||
@@ -2336,7 +2333,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "abduction_fruit"
|
||||
glass_name = "glass of Abduction Fruit"
|
||||
glass_desc = "Mixed fruits that were never meant to be mixed..."
|
||||
|
||||
species_required = "alien"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/bug_zapper
|
||||
@@ -2348,7 +2344,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "bug_zapper"
|
||||
glass_name = "glass of Bug Zapper"
|
||||
glass_desc = "An odd mix of copper, lemon juice and power meant for non-human consumption."
|
||||
|
||||
species_required = "bug"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/mush_crush
|
||||
@@ -2360,7 +2355,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "mush_crush"
|
||||
glass_name = "glass of Mush Crush"
|
||||
glass_desc = "Popular among people that want to grow their own food rather than drink the soil."
|
||||
|
||||
species_required = "plant"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/darkbrew
|
||||
@@ -2372,7 +2366,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "darkbrew"
|
||||
glass_name = "glass of Darkbrew"
|
||||
glass_desc = "A pitch black drink that's commonly confused with a type of coffee."
|
||||
|
||||
species_required = "shadow"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/hollow_bone
|
||||
@@ -2384,7 +2377,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "hollow_bone"
|
||||
glass_name = "skull of Hollow Bone"
|
||||
glass_desc = "Mixing of milk and bone hurting juice for the enjoyment of rather skinny people."
|
||||
|
||||
species_required = "skeleton"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/frisky_kitty
|
||||
@@ -2396,7 +2388,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "frisky_kitty"
|
||||
glass_name = "cup of Drisky Kitty"
|
||||
glass_desc = "Warm milk and some catnip."
|
||||
|
||||
species_required = "furry"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/jell_wyrm
|
||||
@@ -2408,7 +2399,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "jell_wyrm"
|
||||
glass_name = "glass of Jell Wyrm"
|
||||
glass_desc = "A bubbly drink that is rather inviting to those that don't know who it's meant for."
|
||||
|
||||
species_required = "jelly"
|
||||
|
||||
/datum/reagent/consumable/ethanol/species_drink/laval_spit //Yes Laval
|
||||
@@ -2420,7 +2410,6 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_icon_state = "laval_spit"
|
||||
glass_name = "glass of Laval Spit"
|
||||
glass_desc = "Piping hot drink for those who can stomach the heat of lava."
|
||||
|
||||
species_required = "golem"
|
||||
|
||||
///////////////
|
||||
|
||||
@@ -79,10 +79,9 @@
|
||||
/obj/item/ingot/bronze
|
||||
custom_materials = list(/datum/material/bronze=12000)
|
||||
|
||||
/obj/item/ingot/bronze/ratvar
|
||||
material_flags = MATERIAL_COLOR
|
||||
name = "brass ingnot"
|
||||
desc = "On closer inspection, what appears to be wholly-unsuitable-for-smithing brass is actually more structurally stable bronze. Ratvar must have transformed the brass into bronze. Somehow."
|
||||
/obj/item/ingot/ratvar
|
||||
custom_materials = list(/datum/material/brass=12000)
|
||||
desc = "On closer inspection, what appears to be wholly-unsuitable-for-smithing brass is actually primarily replicant alloy. Nezbere must have switched it while you weren't looking."
|
||||
|
||||
|
||||
/obj/item/smithing/attackby(obj/item/I, mob/user)
|
||||
@@ -382,7 +381,7 @@
|
||||
finalitem = /obj/item/melee/smith/twohand/glaive
|
||||
icon_state = "glaive"
|
||||
|
||||
/obj/item/smithing/glaive/startfinish()
|
||||
/obj/item/smithing/glaivehead/startfinish()
|
||||
var/obj/item/melee/smith/twohand/glaive/finalforreal = new /obj/item/melee/smith/twohand/glaive(src)
|
||||
finalforreal.force += quality
|
||||
finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/datum/unit_test/reactions/Run()
|
||||
for(var/datum/gas_reaction/G in SSair.gas_reactions)
|
||||
var/test_info = G.test()
|
||||
if(!test_info["success"])
|
||||
var/message = test_info["message"]
|
||||
Fail("Gas reaction [G.name] is failing its unit test with the following message: [message]")
|
||||
@@ -20,6 +20,7 @@
|
||||
desc = "A sleek box containing a brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers, and an extra speedloader."
|
||||
item = /obj/item/storage/box/syndie_kit/revolver
|
||||
cost = 13
|
||||
player_minimum = 15
|
||||
surplus = 50
|
||||
exclude_modes = list(/datum/game_mode/nuclear/clown_ops, /datum/game_mode/traitor/internal_affairs)
|
||||
|
||||
|
||||
@@ -50,6 +50,63 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">12 September 2020</h2>
|
||||
<h3 class="author">BlueWildrose updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">The Polychromic winter coat's hoodie will now polychrome, alongside any other new polychromic items with toggleable headwear.</li>
|
||||
<li class="bugfix">Minesweeper will no longer blow up the player's ears when they select "Play on the same board"</li>
|
||||
<li class="rscadd">Slimepeople will find warm donk pockets among other toxin healing items even more repulsive, as they are anti-toxic.</li>
|
||||
<li class="tweak">Slimepeople are now neutral to gross foods.</li>
|
||||
</ul>
|
||||
<h3 class="author">DeltaFire15 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">AIs can no longer qdel() the gravity generator</li>
|
||||
</ul>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="code_imp">Added some unit tests for reactions.</li>
|
||||
<li class="refactor">replaced handle_changeling and handle_bloodsucker with signal registration</li>
|
||||
</ul>
|
||||
<h3 class="author">Sonic121x updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed pill button on chemical press</li>
|
||||
</ul>
|
||||
<h3 class="author">TheObserver-sys updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Brass now has a proper datum. Aspiring Forgetenders rejoice!</li>
|
||||
</ul>
|
||||
<h3 class="author">Trilbyspaceclone updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Race based drinks will no longer stay inside your blood for ever.</li>
|
||||
</ul>
|
||||
<h3 class="author">Tupinambis updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Redid Cogstation atmos pipes to make it less cluttered.</li>
|
||||
<li class="tweak">Removed a few doors from the main hallway to mitigate chokepoint issues</li>
|
||||
<li class="bugfix">All belt hell conveyers are now on by default, so that belt hell actually works.</li>
|
||||
<li class="bugfix">IDs for poddoors and belts and the like. Everything is now properly hooked and should work as expected (except for the pressure triggered mass drivers)</li>
|
||||
<li class="bugfix">addresses most if not all roundstart active turfs.</li>
|
||||
<li class="bugfix">Issue where wires were connected to the SMES improperly, and SMES were not properly precharged, resulting in power failure earlier than intended.</li>
|
||||
<li class="bugfix">various rogue turfs and wirings.</li>
|
||||
<li class="bugfix">security office APC being hooked to maintenance for some reason.</li>
|
||||
<li class="bugfix">TEG is now directly wired to the SMES.</li>
|
||||
<li class="code_imp">adds a subtype of mass drivers that is triggered by things being on it. TODO: Make these mass drivers trigger poddoors, to make belt hell fully functional.</li>
|
||||
</ul>
|
||||
<h3 class="author">lolman360 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">glaives now work again</li>
|
||||
</ul>
|
||||
<h3 class="author">zeroisthebiggay updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">Revolver is now poplocked down to fifteen people.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">11 September 2020</h2>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">Superconducting turfs now can't go below 0 celsius.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">09 September 2020</h2>
|
||||
<h3 class="author">Putnam3145 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -27275,3 +27275,46 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- bugfix: Made superconductivity work for the first time literally ever.
|
||||
timothyteakettle:
|
||||
- bugfix: accents work better
|
||||
2020-09-11:
|
||||
Putnam3145:
|
||||
- balance: Superconducting turfs now can't go below 0 celsius.
|
||||
2020-09-12:
|
||||
BlueWildrose:
|
||||
- bugfix: The Polychromic winter coat's hoodie will now polychrome, alongside any
|
||||
other new polychromic items with toggleable headwear.
|
||||
- bugfix: Minesweeper will no longer blow up the player's ears when they select
|
||||
"Play on the same board"
|
||||
- rscadd: Slimepeople will find warm donk pockets among other toxin healing items
|
||||
even more repulsive, as they are anti-toxic.
|
||||
- tweak: Slimepeople are now neutral to gross foods.
|
||||
DeltaFire15:
|
||||
- balance: AIs can no longer qdel() the gravity generator
|
||||
Putnam3145:
|
||||
- code_imp: Added some unit tests for reactions.
|
||||
- refactor: replaced handle_changeling and handle_bloodsucker with signal registration
|
||||
Sonic121x:
|
||||
- bugfix: Fixed pill button on chemical press
|
||||
TheObserver-sys:
|
||||
- rscadd: Brass now has a proper datum. Aspiring Forgetenders rejoice!
|
||||
Trilbyspaceclone:
|
||||
- bugfix: Race based drinks will no longer stay inside your blood for ever.
|
||||
Tupinambis:
|
||||
- tweak: Redid Cogstation atmos pipes to make it less cluttered.
|
||||
- tweak: Removed a few doors from the main hallway to mitigate chokepoint issues
|
||||
- bugfix: All belt hell conveyers are now on by default, so that belt hell actually
|
||||
works.
|
||||
- bugfix: IDs for poddoors and belts and the like. Everything is now properly hooked
|
||||
and should work as expected (except for the pressure triggered mass drivers)
|
||||
- bugfix: addresses most if not all roundstart active turfs.
|
||||
- bugfix: Issue where wires were connected to the SMES improperly, and SMES were
|
||||
not properly precharged, resulting in power failure earlier than intended.
|
||||
- bugfix: various rogue turfs and wirings.
|
||||
- bugfix: security office APC being hooked to maintenance for some reason.
|
||||
- bugfix: TEG is now directly wired to the SMES.
|
||||
- code_imp: 'adds a subtype of mass drivers that is triggered by things being on
|
||||
it. TODO: Make these mass drivers trigger poddoors, to make belt hell fully
|
||||
functional.'
|
||||
lolman360:
|
||||
- bugfix: glaives now work again
|
||||
zeroisthebiggay:
|
||||
- balance: Revolver is now poplocked down to fifteen people.
|
||||
|
||||
Reference in New Issue
Block a user