Conflict resolution

This commit is contained in:
Arkatos
2020-02-29 12:20:03 +01:00
43 changed files with 1354 additions and 1349 deletions
+5 -5
View File
@@ -35,8 +35,8 @@
#define VENTCRAWLER_ALWAYS 2
//Bloodcrawling defines
#define BLOODCRAWL 1
#define BLOODCRAWL_EAT 2
#define BLOODCRAWL 1 /// bloodcrawling, see: [/mob/living/var/bloodcrawl]
#define BLOODCRAWL_EAT 2 /// crawling+mob devour
//Mob bio-types flags
#define MOB_ORGANIC 1 << 0
@@ -242,9 +242,9 @@
///The shock doesn't stun.
#define SHOCK_NOSTUN (1 << 3)
#define INCORPOREAL_MOVE_BASIC 1
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
#define INCORPOREAL_MOVE_BASIC 1 /// normal movement, see: [/mob/living/var/incorporeal_move]
#define INCORPOREAL_MOVE_SHADOW 2 /// leaves a trail of shadows
#define INCORPOREAL_MOVE_JAUNT 3 /// is blocked by holy water/salt
//Secbot and ED209 judgement criteria bitflag values
#define JUDGE_EMAGGED (1<<0)
+11 -9
View File
@@ -1,9 +1,8 @@
///Defines for the R&D console, see: [/modules/research/rdconsole][rdconsole]
#define RDCONSOLE_UI_MODE_NORMAL 1
#define RDCONSOLE_UI_MODE_EXPERT 2
#define RDCONSOLE_UI_MODE_LIST 3
//RDSCREEN screens
#define RDSCREEN_MENU 0
#define RDSCREEN_TECHDISK 1
#define RDSCREEN_DESIGNDISK 20
@@ -27,6 +26,7 @@
#define RDSCREEN_NOBREAK "<NO_HTML_BREAK>"
///Sanity check defines for when these devices aren't connected or no disk is inserted
#define RDSCREEN_TEXT_NO_PROTOLATHE "<div><h3>No Protolathe Linked!</h3></div><br>"
#define RDSCREEN_TEXT_NO_IMPRINTER "<div><h3>No Circuit Imprinter Linked!</h3></div><br>"
#define RDSCREEN_TEXT_NO_DECONSTRUCT "<div><h3>No Destructive Analyzer Linked!</h3></div><br>"
@@ -43,12 +43,14 @@
#define RDSCREEN_UI_SNODE_CHECK if(!selected_node) { return RDSCREEN_TEXT_NO_SNODE }
#define RDSCREEN_UI_SDESIGN_CHECK if(!selected_design) { return RDSCREEN_TEXT_NO_SDESIGN }
///Defines for the Protolathe screens, see: [/modules/research/machinery/protolathe][Protolathe]
#define RESEARCH_FABRICATOR_SCREEN_MAIN 1
#define RESEARCH_FABRICATOR_SCREEN_CHEMICALS 2
#define RESEARCH_FABRICATOR_SCREEN_MATERIALS 3
#define RESEARCH_FABRICATOR_SCREEN_SEARCH 4
#define RESEARCH_FABRICATOR_SCREEN_CATEGORYVIEW 5
///Department flags for techwebs. Defines which department can print what from each protolathe so Cargo can't print guns, etc.
#define DEPARTMENTAL_FLAG_SECURITY (1<<0)
#define DEPARTMENTAL_FLAG_MEDICAL (1<<1)
#define DEPARTMENTAL_FLAG_CARGO (1<<2)
@@ -56,28 +58,28 @@
#define DEPARTMENTAL_FLAG_ENGINEERING (1<<4)
#define DEPARTMENTAL_FLAG_SERVICE (1<<5)
#define DEPARTMENTAL_FLAG_ALL (1<<6) //NO THIS DOESN'T ALLOW YOU TO PRINT EVERYTHING, IT'S FOR ALL DEPARTMENTS!
//#define DEPARTMENTAL_FLAG_MINING (1<<7)
//#define DEPARTMENTAL_FLAG_MINING (1<<7) //I swear I'm actually going to use this eventually leave it here
#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN"
#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN" ///For instances where we don't want a design showing up due to it being for debug/sanity purposes
#define RESEARCH_MATERIAL_RECLAMATION_ID "__materials"
//When adding new types, update the list below!
///Techweb names for new point types. Can be used to define specific point values for specific types of research (science, security, engineering, etc.)
#define TECHWEB_POINT_TYPE_GENERIC "General Research"
#define TECHWEB_POINT_TYPE_NANITES "Nanite Research"
#define TECHWEB_POINT_TYPE_DEFAULT TECHWEB_POINT_TYPE_GENERIC
//defined here so people don't forget to change this!
///Associative names for techweb point values, see: [/modules/research/techweb/all_nodes][all_nodes]
#define TECHWEB_POINT_TYPE_LIST_ASSOCIATIVE_NAMES list(\
TECHWEB_POINT_TYPE_GENERIC = "General Research",\
TECHWEB_POINT_TYPE_NANITES = "Nanite Research"\
)
#define TECHWEB_BOMB_POINTCAP 50000 //Adjust as needed; Stops toxins from nullifying RND progression mechanics. Current Value Cap Radius: 100
//research point values for slime extracts
///R&D point value for a maxcap bomb. Can be adjusted if need be. Current Value Cap Radius: 100
#define TECHWEB_BOMB_POINTCAP 50000
///Research point values for slime extracts, see: [/modules/research/xenobiology/xenobio_camera][xenobio_camera]
#define SLIME_RESEARCH_TIER_0 100
#define SLIME_RESEARCH_TIER_1 500
#define SLIME_RESEARCH_TIER_2 1000
+4 -3
View File
@@ -330,9 +330,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
desc = "A Carp Classic brand cigarette. A small label on its side indicates that it does NOT contain carpotoxin."
/obj/item/clothing/mask/cigarette/carp/Initialize()
. = ..()
if(prob(5))
list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/carpotoxin = 3) //they lied
. = ..()
if(!prob(5))
return
reagents?.add_reagent(/datum/reagent/toxin/carpotoxin , 3) // They lied
/obj/item/clothing/mask/cigarette/syndicate
desc = "An unknown brand cigarette."
+6
View File
@@ -315,6 +315,9 @@
name = "bola"
desc = "A restraining device designed to be thrown at the target. Upon connecting with said target, it will wrap around their legs, making it difficult for them to move quickly."
icon_state = "bola"
item_state = "bola"
lefthand_file = 'icons/mob/inhands/weapons/thrown_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/thrown_righthand.dmi'
breakouttime = 35//easy to apply, easy to break out of
gender = NEUTER
var/knockdown = 0
@@ -351,6 +354,7 @@
name = "reinforced bola"
desc = "A strong bola, made with a long steel chain. It looks heavy, enough so that it could trip somebody."
icon_state = "bola_r"
item_state = "bola_r"
breakouttime = 70
knockdown = 35
@@ -358,6 +362,7 @@
name = "energy bola"
desc = "A specialized hard-light bola designed to ensnare fleeing criminals and aid in arrests."
icon_state = "ebola"
item_state = "ebola"
hitsound = 'sound/weapons/taserhit.ogg'
w_class = WEIGHT_CLASS_SMALL
breakouttime = 60
@@ -373,6 +378,7 @@
name = "gonbola"
desc = "Hey, if you have to be hugged in the legs by anything, it might as well be this little guy."
icon_state = "gonbola"
item_state = "bola_r"
breakouttime = 300
slowdown = 0
var/datum/status_effect/gonbolaPacify/effectReference
@@ -244,6 +244,7 @@
name = "\improper Nar'Sien bola"
desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim."
icon_state = "bola_cult"
item_state = "bola_cult"
breakouttime = 60
knockdown = 30
+1 -1
View File
@@ -1,7 +1,7 @@
//These procs handle putting s tuff in your hands
//as they handle all relevant stuff like adding it to the player's screen and updating their overlays.
//Returns the thing we're currently holding
///Returns the thing we're currently holding
/mob/proc/get_active_held_item()
return get_item_for_held_index(active_hand_index)
@@ -1,13 +1,15 @@
///alien immune to tox damage
/mob/living/carbon/alien/getToxLoss()
return 0
/mob/living/carbon/alien/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE) //alien immune to tox damage
return FALSE
//aliens are immune to stamina damage.
/mob/living/carbon/alien/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE)
return
///alien immune to tox damage
/mob/living/carbon/alien/adjustToxLoss(amount, updating_health = TRUE, forced = FALSE)
return FALSE
///aliens are immune to stamina damage.
/mob/living/carbon/alien/adjustStaminaLoss(amount, updating_health = 1, forced = FALSE)
return FALSE
///aliens are immune to stamina damage.
/mob/living/carbon/alien/setStaminaLoss(amount, updating_health = 1)
return
return FALSE
@@ -6,13 +6,13 @@
hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,GLAND_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD)
has_limbs = 1
held_items = list(null, null)
var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know.
var/list/internal_organs_slot= list() //Same as above, but stores "slot ID" - "organ" pairs for easy access.
var/silent = FALSE //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU.
var/dreaming = 0 //How many dream images we have left to send
var/list/internal_organs = list() ///List of [/obj/item/organ] in the mob. They don't go in the contents for some reason I don't want to know.
var/list/internal_organs_slot= list() ///Same as [above][/mob/living/carbon/var/internal_organs], but stores "slot ID" - "organ" pairs for easy access.
var/silent = 0 ///Can't talk. Value goes down every life proc. NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU.
var/dreaming = 0 ///How many dream images we have left to send
var/obj/item/handcuffed = null //Whether or not the mob is handcuffed
var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this.
var/obj/item/handcuffed = null///Whether or not the mob is handcuffed
var/obj/item/legcuffed = null ///Same as handcuffs but for legs. Bear traps use this.
var/disgust = 0
@@ -23,15 +23,15 @@
var/obj/item/tank/internal = null
var/obj/item/clothing/head = null
var/obj/item/clothing/gloves = null //only used by humans
var/obj/item/clothing/shoes = null //only used by humans.
var/obj/item/clothing/glasses/glasses = null //only used by humans.
var/obj/item/clothing/ears = null //only used by humans.
var/obj/item/clothing/gloves = null ///only used by humans
var/obj/item/clothing/shoes = null ///only used by humans.
var/obj/item/clothing/glasses/glasses = null ///only used by humans.
var/obj/item/clothing/ears = null ///only used by humans.
var/datum/dna/dna = null // Carbon
var/datum/mind/last_mind = null //last mind to control this mob, for blood-based cloning
var/datum/dna/dna = null /// Carbon
var/datum/mind/last_mind = null ///last mind to control this mob, for blood-based cloning
var/failed_last_breath = 0 //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks.
var/failed_last_breath = 0 ///This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks.
var/co2overloadtime = null
var/temperature_resistance = T0C+75
@@ -41,13 +41,13 @@
var/rotate_on_lying = 1
var/tinttotal = 0 // Total level of visualy impairing items
var/tinttotal = 0 /// Total level of visualy impairing items
///Gets filled up in [create_bodyparts()][/mob/living/carbon/proc/create_bodyparts]
var/list/bodyparts = list(/obj/item/bodypart/chest, /obj/item/bodypart/head, /obj/item/bodypart/l_arm,
/obj/item/bodypart/r_arm, /obj/item/bodypart/r_leg, /obj/item/bodypart/l_leg)
//Gets filled up in create_bodyparts()
var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems)
var/list/hand_bodyparts = list() ///a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems)
var/icon_render_key = ""
var/static/list/limb_icon_cache = list()
@@ -58,12 +58,12 @@
var/obj/halitem
var/hal_screwyhud = SCREWYHUD_NONE
var/next_hallucination = 0
var/cpr_time = 1 //CPR cooldown.
var/cpr_time = 1 ///CPR cooldown.
var/damageoverlaytemp = 0
var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects
var/stam_regen_start_time = 0 //used to halt stamina regen temporarily
var/stam_paralyzed = FALSE //knocks you down
var/drunkenness = 0 ///Overall drunkenness
var/stam_regen_start_time = 0 ///used to halt stamina regen temporarily
var/stam_paralyzed = FALSE ///knocks you down
/// Protection (insulation) from the heat, Value 0-1 corresponding to the percentage of protection
var/heat_protection = 0 // No heat protection
+37 -23
View File
@@ -113,31 +113,37 @@
return
adjustStaminaLoss(diff, updating_health, forced)
/** adjustOrganLoss
* inputs: slot (organ slot, like ORGAN_SLOT_HEART), amount (damage to be done), and maximum (currently an arbitrarily large number, can be set so as to limit damage)
* outputs:
* description: If an organ exists in the slot requested, and we are capable of taking damage (we don't have GODMODE on), call the damage proc on that organ.
/**
* If an organ exists in the slot requested, and we are capable of taking damage (we don't have [GODMODE] on), call the damage proc on that organ.
*
* Arguments:
* * slot - organ slot, like [ORGAN_SLOT_HEART]
* * amount - damage to be done
* * maximum - currently an arbitrarily large number, can be set so as to limit damage
*/
/mob/living/carbon/adjustOrganLoss(slot, amount, maximum)
var/obj/item/organ/O = getorganslot(slot)
if(O && !(status_flags & GODMODE))
O.applyOrganDamage(amount, maximum)
/** setOrganLoss
* inputs: slot (organ slot, like ORGAN_SLOT_HEART), amount(damage to be set to)
* outputs:
* description: If an organ exists in the slot requested, and we are capable of taking damage (we don't have GODMODE on), call the set damage proc on that organ, which can
* set or clear the failing variable on that organ, making it either cease or start functions again, unlike adjustOrganLoss.
/**
* If an organ exists in the slot requested, and we are capable of taking damage (we don't have [GODMODE] on), call the set damage proc on that organ, which can
* set or clear the failing variable on that organ, making it either cease or start functions again, unlike adjustOrganLoss.
*
* Arguments:
* * slot - organ slot, like [ORGAN_SLOT_HEART]
* * amount - damage to be set to
*/
/mob/living/carbon/setOrganLoss(slot, amount)
var/obj/item/organ/O = getorganslot(slot)
if(O && !(status_flags & GODMODE))
O.setOrganDamage(amount)
/** getOrganLoss
* inputs: slot (organ slot, like ORGAN_SLOT_HEART)
* outputs: organ damage
* description: If an organ exists in the slot requested, return the amount of damage that organ has
/**
* If an organ exists in the slot requested, return the amount of damage that organ has
*
* Arguments:
* * slot - organ slot, like [ORGAN_SLOT_HEART]
*/
/mob/living/carbon/getOrganLoss(slot)
var/obj/item/organ/O = getorganslot(slot)
@@ -146,7 +152,7 @@
////////////////////////////////////////////
//Returns a list of damaged bodyparts
///Returns a list of damaged bodyparts
/mob/living/carbon/proc/get_damaged_bodyparts(brute = FALSE, burn = FALSE, stamina = FALSE, status)
var/list/obj/item/bodypart/parts = list()
for(var/X in bodyparts)
@@ -157,7 +163,7 @@
parts += BP
return parts
//Returns a list of damageable bodyparts
///Returns a list of damageable bodyparts
/mob/living/carbon/proc/get_damageable_bodyparts(status)
var/list/obj/item/bodypart/parts = list()
for(var/X in bodyparts)
@@ -168,9 +174,13 @@
parts += BP
return parts
//Heals ONE bodypart randomly selected from damaged ones.
//It automatically updates damage overlays if necessary
//It automatically updates health status
/**
* Heals ONE bodypart randomly selected from damaged ones.
*
* It automatically updates damage overlays if necessary
*
* It automatically updates health status
*/
/mob/living/carbon/heal_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status)
var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute,burn,stamina,required_status)
if(!parts.len)
@@ -182,9 +192,13 @@
return max(damage_calculator - picked.get_damage(TRUE), 0)
//Damages ONE bodypart randomly selected from damagable ones.
//It automatically updates damage overlays if necessary
//It automatically updates health status
/**
* Damages ONE bodypart randomly selected from damagable ones.
*
* It automatically updates damage overlays if necessary
*
* It automatically updates health status
*/
/mob/living/carbon/take_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status, check_armor = FALSE)
var/list/obj/item/bodypart/parts = get_damageable_bodyparts(required_status)
if(!parts.len)
@@ -193,7 +207,7 @@
if(picked.receive_damage(brute, burn, stamina,check_armor ? run_armor_check(picked, (brute ? "melee" : burn ? "fire" : stamina ? "bullet" : null)) : FALSE))
update_damage_overlays()
//Heal MANY bodyparts, in random order
///Heal MANY bodyparts, in random order
/mob/living/carbon/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE)
var/list/obj/item/bodypart/parts = get_damaged_bodyparts(brute, burn, stamina, required_status)
@@ -218,7 +232,7 @@
if(update)
update_damage_overlays()
// damage MANY bodyparts, in random order
/// damage MANY bodyparts, in random order
/mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status)
if(status_flags & GODMODE)
return //godmode
@@ -1,5 +1,4 @@
/// depending on the species, it will run the corresponding apply_damage code there
/mob/living/carbon/human/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE, spread_damage = FALSE)
// depending on the species, it will run the corresponding apply_damage code there
return dna.species.apply_damage(damage, damagetype, def_zone, blocked, src, forced, spread_damage)
@@ -2,6 +2,7 @@
/datum/species/human/felinid
name = "Felinid"
id = "felinid"
say_mod = "meows"
limbs_id = "human"
mutant_bodyparts = list("ears", "tail_human")
+32 -21
View File
@@ -1,18 +1,24 @@
/*
apply_damage(a,b,c)
args
a:damage - How much damage to take
b:damage_type - What type of damage to take, brute, burn
c:def_zone - Where to take the damage if its brute or burn
Returns
standard 0 if fail
*/
/**
* Applies damage to this mob
*
* Sends [COMSIG_MOB_APPLY_DAMGE]
*
* Arguuments:
* * damage - amount of damage
* * damagetype - one of [BRUTE], [BURN], [TOX], [OXY], [CLONE], [STAMINA]
* * def_zone - zone that is being hit if any
* * blocked - armor value applied
* * forced - bypass hit percentage
* * spread_damage - used in overrides
*
* Returns TRUE if damage applied
*/
/mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE, spread_damage = FALSE)
SEND_SIGNAL(src, COMSIG_MOB_APPLY_DAMGE, damage, damagetype, def_zone)
var/hit_percent = (100-blocked)/100
if(!damage || (!forced && hit_percent <= 0))
return 0
return FALSE
var/damage_amount = forced ? damage : damage * hit_percent
switch(damagetype)
if(BRUTE)
@@ -27,9 +33,10 @@
adjustCloneLoss(damage_amount, forced = forced)
if(STAMINA)
adjustStaminaLoss(damage_amount, forced = forced)
return 1
return TRUE
/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE) //like apply damage except it always uses the damage procs
///like [apply_damage][/mob/living/proc/apply_damage] except it always uses the damage procs
/mob/living/proc/apply_damage_type(damage = 0, damagetype = BRUTE)
switch(damagetype)
if(BRUTE)
return adjustBruteLoss(damage)
@@ -44,6 +51,7 @@
if(STAMINA)
return adjustStaminaLoss(damage)
/// return the damage amount for the type given
/mob/living/proc/get_damage_amount(damagetype = BRUTE)
switch(damagetype)
if(BRUTE)
@@ -59,7 +67,7 @@
if(STAMINA)
return getStaminaLoss()
/// applies multiple damages at once via [/mob/living/proc/apply_damage]
/mob/living/proc/apply_damages(brute = 0, burn = 0, tox = 0, oxy = 0, clone = 0, def_zone = null, blocked = FALSE, stamina = 0, brain = 0)
if(blocked >= 100)
return 0
@@ -80,7 +88,7 @@
return 1
/// applies various common status effects or common hardcoded mob effects
/mob/living/proc/apply_effect(effect = 0,effecttype = EFFECT_STUN, blocked = FALSE)
var/hit_percent = (100-blocked)/100
if(!effect || (hit_percent <= 0))
@@ -112,7 +120,7 @@
jitteriness = max(jitteriness,(effect * hit_percent))
return 1
/// applies multiple effects at once via [/mob/living/proc/apply_effect]
/mob/living/proc/apply_effects(stun = 0, knockdown = 0, unconscious = 0, irradiate = 0, slur = 0, stutter = 0, eyeblur = 0, drowsy = 0, blocked = FALSE, stamina = 0, jitter = 0, paralyze = 0, immobilize = 0)
if(blocked >= 100)
return BULLET_ACT_BLOCK
@@ -240,15 +248,18 @@
/mob/living/proc/setStaminaLoss(amount, updating_health = TRUE, forced = FALSE)
return
// heal ONE external organ, organ gets randomly selected from damaged ones.
/// needs to return amount healed in order to calculate things like tend wounds xp gain
/**
* heal ONE external organ, organ gets randomly selected from damaged ones.
*
* needs to return amount healed in order to calculate things like tend wounds xp gain
*/
/mob/living/proc/heal_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status)
. = (adjustBruteLoss(-brute, FALSE) + adjustFireLoss(-burn, FALSE) + adjustStaminaLoss(-stamina, FALSE)) //zero as argument for no instant health update
if(updating_health)
updatehealth()
update_stamina()
// damage ONE external organ, organ gets randomly selected from damaged ones.
/// damage ONE external organ, organ gets randomly selected from damaged ones.
/mob/living/proc/take_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status, check_armor = FALSE)
adjustBruteLoss(brute, FALSE) //zero as argument for no instant health update
adjustFireLoss(burn, FALSE)
@@ -257,7 +268,7 @@
updatehealth()
update_stamina()
// heal MANY bodyparts, in random order
/// heal MANY bodyparts, in random order
/mob/living/proc/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE)
adjustBruteLoss(-brute, FALSE) //zero as argument for no instant health update
adjustFireLoss(-burn, FALSE)
@@ -266,7 +277,7 @@
updatehealth()
update_stamina()
// damage MANY bodyparts, in random order
/// damage MANY bodyparts, in random order
/mob/living/proc/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status = null)
adjustBruteLoss(brute, FALSE) //zero as argument for no instant health update
adjustFireLoss(burn, FALSE)
@@ -275,7 +286,7 @@
updatehealth()
update_stamina()
//heal up to amount damage, in a given order
///heal up to amount damage, in a given order
/mob/living/proc/heal_ordered_damage(amount, list/damage_types)
. = amount //we'll return the amount of damage healed
for(var/i in damage_types)
+54 -50
View File
@@ -7,92 +7,96 @@
hud_type = /datum/hud/living
var/resize = 1 //Badminnery resize
var/resize = 1 ///Badminnery resize
var/lastattacker = null
var/lastattackerckey = null
//Health and life related vars
var/maxHealth = 100 //Maximum health that should be possible.
var/health = 100 //A mob's health
var/maxHealth = 100 ///Maximum health that should be possible.
var/health = 100 ///A mob's health
//Damage related vars, NOTE: THESE SHOULD ONLY BE MODIFIED BY PROCS
var/bruteloss = 0 //Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage)
var/oxyloss = 0 //Oxygen depravation damage (no air in lungs)
var/toxloss = 0 //Toxic damage caused by being poisoned or radiated
var/fireloss = 0 //Burn damage caused by being way too hot, too cold or burnt.
var/cloneloss = 0 //Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims
var/staminaloss = 0 //Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this.
var/crit_threshold = HEALTH_THRESHOLD_CRIT // when the mob goes from "normal" to crit
var/bruteloss = 0 ///Brutal damage caused by brute force (punching, being clubbed by a toolbox ect... this also accounts for pressure damage)
var/oxyloss = 0 ///Oxygen depravation damage (no air in lungs)
var/toxloss = 0 ///Toxic damage caused by being poisoned or radiated
var/fireloss = 0 ///Burn damage caused by being way too hot, too cold or burnt.
var/cloneloss = 0 ///Damage caused by being cloned or ejected from the cloner early. slimes also deal cloneloss damage to victims
var/staminaloss = 0 ///Stamina damage, or exhaustion. You recover it slowly naturally, and are knocked down if it gets too high. Holodeck and hallucinations deal this.
var/crit_threshold = HEALTH_THRESHOLD_CRIT /// when the mob goes from "normal" to crit
var/mobility_flags = MOBILITY_FLAGS_DEFAULT
var/resting = FALSE
var/lying = 0 //number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!!
var/lying_prev = 0 //last value of lying on update_mobility
var/lying = 0 ///number of degrees. DO NOT USE THIS IN CHECKS. CHECK FOR MOBILITY FLAGS INSTEAD!!
var/lying_prev = 0 ///last value of lying on update_mobility
var/confused = 0 //Makes the mob move in random directions.
var/confused = 0 ///Makes the mob move in random directions.
var/hallucination = 0 //Directly affects how long a mob will hallucinate for
var/hallucination = 0 ///Directly affects how long a mob will hallucinate for
var/last_special = 0 //Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
var/last_special = 0 ///Used by the resist verb, likely used to prevent players from bypassing next_move by logging in/out.
var/timeofdeath = 0
//Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.
var/incorporeal_move = FALSE //FALSE is off, INCORPOREAL_MOVE_BASIC is normal, INCORPOREAL_MOVE_SHADOW is for ninjas
//and INCORPOREAL_MOVE_JAUNT is blocked by holy water/salt
/**
* Allows mobs to move through dense areas without restriction. For instance, in space or out of holder objects.
*
* FALSE is off, [INCORPOREAL_MOVE_BASIC] is normal, [INCORPOREAL_MOVE_SHADOW] is for ninjas
* and [INCORPOREAL_MOVE_JAUNT] is blocked by holy water/salt
*/
var/incorporeal_move = FALSE
var/list/roundstart_quirks = list()
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
var/list/surgeries = list() ///a list of surgery datums. generally empty, they're added when the player wants them.
var/now_pushing = null //used by living/Bump() and living/PushAM() to prevent potential infinite loop.
var/now_pushing = null ///used by [living/Bump()][/mob/living/Bump] and [living/PushAM()][/mob/living/PushAM] to prevent potential infinite loop.
var/cameraFollow = null
var/tod = null // Time of death
var/tod = null /// Time of death
var/on_fire = 0 //The "Are we on fire?" var
var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20
var/on_fire = 0 ///The "Are we on fire?" var
var/fire_stacks = 0 ///Tracks how many stacks of fire we have on, max is usually 20
var/bloodcrawl = 0 //0 No blood crawling, BLOODCRAWL for bloodcrawling, BLOODCRAWL_EAT for crawling+mob devour
var/holder = null //The holder for blood crawling
var/ventcrawler = 0 //0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always
var/limb_destroyer = 0 //1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.
var/bloodcrawl = 0 ///0 No blood crawling, [BLOODCRAWL] for bloodcrawling, [BLOODCRAWL_EAT] for crawling+mob devour
var/holder = null ///The holder for blood crawling
var/ventcrawler = 0 ///0 No vent crawling, 1 vent crawling in the nude, 2 vent crawling always
var/limb_destroyer = 0 ///1 Sets AI behavior that allows mobs to target and dismember limbs with their basic attack.
var/mob_size = MOB_SIZE_HUMAN
var/mob_biotypes = MOB_ORGANIC
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head)
var/metabolism_efficiency = 1 ///more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/has_limbs = 0 ///does the mob have distinct limbs?(arms,legs, chest,head)
var/list/pipes_shown = list()
var/last_played_vent
var/smoke_delay = 0 //used to prevent spam with smoke reagent reaction on mob.
var/smoke_delay = 0 ///used to prevent spam with smoke reagent reaction on mob.
var/bubble_icon = "default" //what icon the mob uses for speechbubbles
var/health_doll_icon //if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi
var/bubble_icon = "default" ///what icon the mob uses for speechbubbles
var/health_doll_icon ///if this exists AND the normal sprite is bigger than 32x32, this is the replacement icon state (because health doll size limitations). the icon will always be screen_gen.dmi
var/last_bumped = 0
var/unique_name = 0 //if a mob's name should be appended with an id when created e.g. Mob (666)
var/numba = 0 //the id a mob gets when it's created
var/unique_name = 0 ///if a mob's name should be appended with an id when created e.g. Mob (666)
var/numba = 0 ///the id a mob gets when it's created
var/list/butcher_results = null //these will be yielded from butchering with a probability chance equal to the butcher item's effectiveness
var/list/guaranteed_butcher_results = null //these will always be yielded from butchering
var/butcher_difficulty = 0 //effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier
var/list/butcher_results = null ///these will be yielded from butchering with a probability chance equal to the butcher item's effectiveness
var/list/guaranteed_butcher_results = null ///these will always be yielded from butchering
var/butcher_difficulty = 0 ///effectiveness prob. is modified negatively by this amount; positive numbers make it more difficult, negative ones make it easier
var/hellbound = 0 //People who've signed infernal contracts are unrevivable.
var/hellbound = 0 ///People who've signed infernal contracts are unrevivable.
var/list/weather_immunities = list()
var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added
var/stun_absorption = null ///converted to a list of stun absorption sources this mob has when one is added
var/blood_volume = 0 //how much blood the mob has
var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override
var/blood_volume = 0 ///how much blood the mob has
var/obj/effect/proc_holder/ranged_ability ///Any ranged ability the mob has, as a click override
var/see_override = 0 //0 for no override, sets see_invisible = see_override in silicon & carbon life process via update_sight()
var/see_override = 0 ///0 for no override, sets see_invisible = see_override in silicon & carbon life process via update_sight()
var/list/status_effects //a list of all status effects the mob has
var/list/status_effects ///a list of all status effects the mob has
var/druggy = 0
//Speech
@@ -105,21 +109,21 @@
var/datum/riding/riding_datum
var/last_words //used for database logging
var/last_words ///used for database logging
var/list/obj/effect/proc_holder/abilities = list()
var/can_be_held = FALSE //whether this can be picked up and held.
var/can_be_held = FALSE ///whether this can be picked up and held.
var/radiation = 0 //If the mob is irradiated.
var/radiation = 0 ///If the mob is irradiated.
var/ventcrawl_layer = PIPING_LAYER_DEFAULT
var/losebreath = 0
//List of active diseases
var/list/diseases = list() // list of all diseases in a mob
var/list/diseases = list() /// list of all diseases in a mob
var/list/disease_resistances = list()
var/slowed_by_drag = TRUE //Whether the mob is slowed down when dragging another prone mob
var/slowed_by_drag = TRUE ///Whether the mob is slowed down when dragging another prone mob
var/list/ownedSoullinks //soullinks we are the owner of
var/list/sharedSoullinks //soullinks we are a/the sharer of
var/list/ownedSoullinks ///soullinks we are the owner of
var/list/sharedSoullinks ///soullinks we are a/the sharer of
+2 -2
View File
@@ -122,7 +122,7 @@
* NB: contains nulls!
*
* held_items[active_hand_index] is the actively held item, but please use
* get_active_held_item() instead, because OOP
* [get_active_held_item()][/mob/proc/get_active_held_item] instead, because OOP
*/
var/list/held_items = list()
@@ -195,7 +195,7 @@
var/memory_throttle_time = 0
var/list/alerts = list() // contains /obj/screen/alert only // On /mob so clientless mobs will throw alerts properly
var/list/alerts = list() /// contains [/obj/screen/alert only] // On /mob so clientless mobs will throw alerts properly
var/list/screens = list()
var/list/client_colours = list()
var/hud_type = /datum/hud
@@ -2,24 +2,20 @@
name = "tesla bolt"
icon_state = "tesla_projectile"
impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser
var/chain
damage = 10 //A worse lasergun
var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
var/zap_range = 3
var/power = 10000
/obj/projectile/energy/tesla/fire(setAngle)
if(firer)
chain = firer.Beam(src, icon_state = "lightning[rand(1, 12)]", time = INFINITY, maxdistance = INFINITY)
..()
/obj/projectile/energy/tesla/on_hit(atom/target)
. = ..()
tesla_zap(target, zap_range, power, zap_flags)
tesla_zap(src, zap_range, power, zap_flags)
qdel(src)
/obj/projectile/energy/tesla/Destroy()
QDEL_NULL(chain)
return ..()
/obj/projectile/energy/tesla/process()
. = ..()
//Many coders have given their blood for this speed
tesla_zap(src, zap_range, power, zap_flags)
/obj/projectile/energy/tesla/revolver
name = "energy orb"
@@ -27,3 +23,4 @@
/obj/projectile/energy/tesla/cannon
name = "tesla orb"
power = 20000
damage = 15 //Mech man big
@@ -11,12 +11,12 @@
throw_speed = 3
throw_range = 6
grind_results = list()
var/Uses = 1 // uses before it goes inert
var/qdel_timer = null // deletion timer, for delayed reactions
var/effectmod
var/list/activate_reagents = list() //Reagents required for activation
var/Uses = 1 ///uses before it goes inert
var/qdel_timer = null ///deletion timer, for delayed reactions
var/effectmod ///Which type of crossbred
var/list/activate_reagents = list() ///Reagents required for activation
var/recurring = FALSE
var/research //Research point value
var/research ///Research point value for slime cores. These are defines stored in [/__DEFINES/research] - the actual values are updated there.
/obj/item/slime_extract/examine(mob/user)
. = ..()
@@ -45,12 +45,24 @@
if(Uses)
grind_results[/datum/reagent/toxin/slimejelly] = 20
//Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds.
/**
* Effect when activated by a Luminescent.
*
* This proc is called whenever a Luminescent consumes a slime extract. Each one is separated into major and minor effects depending on the extract. Cooldown is measured in deciseconds.
*
* * arg1 - The mob absorbing the slime extract.
* * arg2 - The valid species for the absorbtion. Should always be a Luminescent unless something very major has changed.
* * arg3 - Whether or not the activation is major or minor. Major activations have large, complex effects, minor are simple.
*/
/obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type)
to_chat(user, "<span class='warning'>Nothing happened... This slime extract cannot be activated this way.</span>")
return 0
//Core-crossing: Feeding adult slimes extracts to obtain a much more powerful, single extract.
/**
* Core-crossing: Feeding adult slimes extracts to obtain a much more powerful, single extract.
*
* By using a valid core on a living adult slime, then feeding it nine more of the same type, you can mutate it into more useful items. Not every slime type has an implemented core cross.
*/
/obj/item/slime_extract/attack(mob/living/simple_animal/slime/M, mob/user)
if(!isslime(M))
return ..()
@@ -628,6 +640,16 @@
////Slime-derived potions///
/**
* #Slime potions
*
* Feed slimes potions either by hand or using the slime console.
*
* Slime potions either augment the slime's behavior, its extract output, or its intelligence. These all come either from extract effects or cross cores.
* A few of the more powerful ones can modify someone's equipment or gender.
* New ones should probably be accessible only through cross cores as all the normal core types already have uses. Rule of thumb is 'stronger effects go in cross cores'.
*/
/obj/item/slimepotion
name = "slime potion"
desc = "A hard yet gelatinous capsule excreted by a slime, containing mysterious substances."
@@ -1001,6 +1023,8 @@
imp.implant(M, user)
qdel(src)
///Definitions for slime products that don't have anywhere else to go (Floor tiles, blueprints).
/obj/item/stack/tile/bluespace
name = "bluespace floor tile"
singular_name = "floor tile"
@@ -0,0 +1,5 @@
author: "LemonInTheDark"
delete-after: True
changes:
- tweak: "The tesla revolver/cannon's projectiles now arc while in flight."
- balance: "The projectiles now deal light burn damage on hit."
@@ -0,0 +1,4 @@
author: "Farquaar"
delete-after: True
changes:
- tweak: "Felinid speech is now audibly distinct from human speech."
@@ -0,0 +1,4 @@
author: "ArcaneDefence"
delete-after: True
changes:
- bugfix: "The recipe for Carp Classic cigarettes has been brought up to company standards."
@@ -0,0 +1,4 @@
author: "Twaticus"
delete-after: True
changes:
- imageadd: "bola inhand sprites"
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

+6 -3
View File
@@ -29,10 +29,13 @@ export const broadcastMessage = (link, msg) => {
}
};
const deserializeObject = obj => {
return JSON.parse(obj, (key, value) => {
const deserializeObject = str => {
return JSON.parse(str, (key, value) => {
if (typeof value === 'object' && value !== null) {
if (value.__error__) {
if (!value.stack) {
return value.string;
}
return retrace(value.stack);
}
if (value.__number__) {
@@ -102,7 +105,7 @@ const setupHttpLink = () => {
body += chunk.toString();
});
req.on('end', () => {
const msg = JSON.parse(body);
const msg = deserializeObject(body);
handleLinkMessage(msg);
res.end();
});
+2 -2
View File
@@ -87,10 +87,10 @@ export const Bepis = props => {
<Grid.Column>
<Section title="Market Data and Analysis">
<Box>
Average technology cost: {data.mean_value}
Average technology cost: {data.mean_value}
</Box>
<Box>
Current chance of Success: Est. {data.success_estimate}%
Current chance of Success: Est. {data.success_estimate}%
</Box>
{data.error_name && (
<Box color="bad">
+1 -1
View File
@@ -73,7 +73,7 @@ class PaintCanvas extends Component {
height={y_size || 300}
{...rest}
onClick={e => this.clickwrapper(e)}>
Canvas failed to render.
Canvas failed to render.
</canvas>
);
}
@@ -55,7 +55,7 @@ export const GravityGenerator = props => {
)}
{charging_state === 2 && (
<Box color="average">
Discharging
Discharging
</Box>
)}
</LabeledList.Item>
+1 -1
View File
@@ -12,7 +12,7 @@ export const HypnoChair = props => {
The Enhanced Interrogation Chamber is designed to induce a deep-rooted
trance trigger into the subject. Once the procedure is complete,
by using the implanted trigger phrase, the authorities are able to
ensure immediate and complete obedience and truthfulness.
ensure immediate and complete obedience and truthfulness.
</Section>
<Section
title="Occupant Information"
@@ -84,7 +84,7 @@ export const LanguageMenu = props => {
)}>
{language.desc}
{' '}
Key: ,{language.key}
Key: ,{language.key}
{' '}
{!!language.shadow && '(gained from mob)'}
{' '}
+1 -1
View File
@@ -154,7 +154,7 @@ export const LaunchpadControl = props => {
inline
bold
mr={1}>
Y:
Y:
</Box>
<NumberInput
value={y}
@@ -15,16 +15,16 @@ export const MiningVendor = props => {
<Section title="User">
{data.user && (
<Box>
Welcome, <b>{data.user.name || "Unknown"}</b>,
Welcome, <b>{data.user.name || "Unknown"}</b>,
{' '}
<b>{data.user.job || "Unemployed"}</b>!
<br />
Your balance is <b>{data.user.points} mining points</b>.
Your balance is <b>{data.user.points} mining points</b>.
</Box>
) || (
<Box color="light-gray">
No registered ID card!<br />
Please contact your local HoP!
No registered ID card!<br />
Please contact your local HoP!
</Box>
)}
</Section>
@@ -109,16 +109,16 @@ export const NaniteRemote = props => {
<Table>
<Table.Row header>
<Table.Cell width="35%">
Name
Name
</Table.Cell>
<Table.Cell width="20%">
Mode
Mode
</Table.Cell>
<Table.Cell collapsing>
Code
Code
</Table.Cell>
<Table.Cell collapsing>
Relay
Relay
</Table.Cell>
</Table.Row>
{saved_settings.map(setting => (
@@ -156,7 +156,7 @@ export const NaniteRemote = props => {
</Table>
) : (
<NoticeBox>
No settings currently saved
No settings currently saved
</NoticeBox>
)}
</Section>
@@ -61,7 +61,7 @@ export const NtosAiRestorer = props => {
fontSize="20px"
color="good"
mt={1}>
RECONSTRUCTION IN PROGRESS
RECONSTRUCTION IN PROGRESS
</Box>
)}
<Button
@@ -4,8 +4,6 @@ import { Button, NoticeBox, Section, Tabs, Input } from '../components';
import { AccessList } from './common/AccessList';
import { map } from 'common/collections';
export const NtosCard = props => {
const { act, data } = useBackend(props);
@@ -23,7 +23,7 @@ export const NtosConfiguration = props => {
inline
bold
mr={1}>
Power Draw: {power_usage}W
Power Draw: {power_usage}W
</Box>
)}>
<LabeledList>
@@ -34,7 +34,7 @@ export const NtosCrewManifest = props => {
{entry.name}
</Table.Cell>
<Table.Cell>
({entry.rank})
({entry.rank})
</Table.Cell>
</Table.Row>
))}
@@ -105,7 +105,7 @@ export const OperatingComputer = props => {
{procedure.alt_chems_needed && (
<Fragment>
<b>
Required Chemicals:
Required Chemicals:
</b>
<br />
{procedure.alt_chems_needed}
+4 -4
View File
@@ -268,7 +268,7 @@ export class RouletteBetTable extends Component {
'Roulette__lowertable--cell',
'Roulette__lowertable--header',
])}>
Last Spun:
Last Spun:
</th>
<th
className={classes([
@@ -276,7 +276,7 @@ export class RouletteBetTable extends Component {
'Roulette__lowertable--cell',
'Roulette__lowertable--header',
])}>
Current Bet:
Current Bet:
</th>
</tr>
<tr>
@@ -362,14 +362,14 @@ export class RouletteBetTable extends Component {
m={1}
fontSize="14px"
textAlign="center">
Swipe an ID card with a connected account to spin!
Swipe an ID card with a connected account to spin!
</Box>
</td>
</tr>
<tr>
<td className="Roulette__lowertable--cell">
<Box inline bold mr={1}>
House Balance:
House Balance:
</Box>
<Box inline>
{data.HouseBalance ? data.HouseBalance + ' cr': "None"}
@@ -44,7 +44,7 @@ export const TransferValve = props => {
</LabeledList.Item>
) : (
<NoticeBox textAlign="center">
Insert Assembly
Insert Assembly
</NoticeBox>
)}
</LabeledList>
@@ -61,7 +61,7 @@ export const TransferValve = props => {
</LabeledList.Item>
) : (
<NoticeBox textAlign="center">
Insert Tank
Insert Tank
</NoticeBox>
)}
</LabeledList>
@@ -78,7 +78,7 @@ export const TransferValve = props => {
</LabeledList.Item>
) : (
<NoticeBox textAlign="center">
Insert Tank
Insert Tank
</NoticeBox>
)}
</LabeledList>
+4 -4
View File
@@ -30,16 +30,16 @@ export const Vending = props => {
<Section title="User">
{data.user && (
<Box>
Welcome, <b>{data.user.name}</b>,
Welcome, <b>{data.user.name}</b>,
{' '}
<b>{data.user.job || "Unemployed"}</b>!
<br />
Your balance is <b>{data.user.cash} credits</b>.
Your balance is <b>{data.user.cash} credits</b>.
</Box>
) || (
<Box color="light-gray">
No registered ID card!<br />
Please contact your local HoP!
No registered ID card!<br />
Please contact your local HoP!
</Box>
)}
</Section>
File diff suppressed because one or more lines are too long
+20 -15
View File
@@ -3,16 +3,21 @@
* SPDX-License-Identifier: GPL-2.0-or-later
*/
@use 'sass:color';
@use 'sass:map';
@use 'sass:math';
@use 'sass:meta';
// Type-casting
// --------------------------------------------------------
// Get a unit-less numeric value
@function num($value) {
@if type-of($value) != number {
@if meta.type-of($value) != number {
@error 'Could not convert `#{$value}` - must be `type-of number`';
@return null;
}
@if unit($value) == '%' {
@if math.unit($value) == '%' {
@return $value / 100%;
}
@return $value / ($value * 0 + 1);
@@ -25,20 +30,20 @@
// Increases perceptual color lightness.
@function lighten($color, $percent) {
$scaled: hsl(
hue($color),
saturation($color),
lightness($color) * (1 + num($percent)));
$mixed: mix(#ffffff, $color, 100% * num($percent));
@return mix($scaled, $mixed, 75%);
color.hue($color),
color.saturation($color),
color.lightness($color) * (1 + num($percent)));
$mixed: color.mix(#ffffff, $color, 100% * num($percent));
@return color.mix($scaled, $mixed, 75%);
}
// Returns the NTSC luminance of `$color` as a float (between 0 and 1).
// 1 is pure white, 0 is pure black.
@function luminance($color) {
$colors: (
'red': red($color),
'green': green($color),
'blue': blue($color)
'red': color.red($color),
'green': color.green($color),
'blue': color.blue($color)
);
@each $name, $value in $colors {
@@ -49,12 +54,12 @@
}
@else {
$value: ($value + .055) / 1.055;
$value: math-pow($value, 2.4);
$value: math.pow($value, 2.4);
}
$colors: map-merge($colors, ($name: $value));
$colors: map.merge($colors, ($name: $value));
}
@return (map-get($colors, 'red') * .2126)
+ (map-get($colors, 'green') * .7152)
+ (map-get($colors, 'blue') * .0722);
@return (map.get($colors, 'red') * .2126)
+ (map.get($colors, 'green') * .7152)
+ (map.get($colors, 'blue') * .0722);
}
+1 -15
View File
@@ -3,16 +3,6 @@ const path = require('path');
const BuildNotifierPlugin = require('webpack-build-notifier');
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
const SASS_FUNCTIONS = {
// Power function polyfill
'math-pow($number, $exp)': (number, exp) => {
const sass = require('sass');
return new sass.types.Number(Math.pow(
number.getValue(),
exp.getValue()));
},
};
module.exports = (env = {}, argv) => {
const config = {
mode: argv.mode === 'production' ? 'production' : 'development',
@@ -85,11 +75,7 @@ module.exports = (env = {}, argv) => {
},
{
loader: 'sass-loader',
options: {
sassOptions: {
functions: SASS_FUNCTIONS,
},
},
options: {},
},
],
},
+1054 -1120
View File
File diff suppressed because it is too large Load Diff