Merge branch 'master' into development

# Conflicts:
#	html/changelogs/.all_changelog.yml
#	maps/aurora/aurora-4_mainlevel.dmm
#	maps/aurora/aurora-7_roof.dmm
This commit is contained in:
skull132
2018-10-07 01:33:20 +03:00
50 changed files with 6490 additions and 6249 deletions
+4
View File
@@ -66,6 +66,10 @@ var/list/admin_ranks = list() //list of all ranks with associated rights
C.holder = null
admins.Cut()
// Clears admins from the world config.
for (var/A in world.GetConfig("admin"))
world.SetConfig("APP/admin", A, null)
if(config.admin_legacy_system)
load_admin_ranks()
+1
View File
@@ -431,6 +431,7 @@ var/list/admin_verbs_cciaa = list(
admin_verbs_spawn,
debug_verbs
)
add_aooc_if_necessary()
/client/proc/hide_most_verbs()//Allows you to keep some functionality while hiding some verbs
set name = "Adminverbs - Hide Most"
+3
View File
@@ -33,6 +33,9 @@ var/list/admin_datums = list()
rights = initial_rights
admin_datums[ckey] = src
if (rights & R_DEBUG)
world.SetConfig("APP/admin", ckey, "role=admin")
/datum/admins/proc/associate(client/C)
if(istype(C))
owner = C
+1 -1
View File
@@ -21,7 +21,7 @@
if (istype(src.loc,/obj/item/device/assembly_holder))
if (istype(src.loc.loc, /obj/structure/reagent_dispensers/fueltank/))
var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc
if (tank && tank.modded)
if (tank && tank.is_leaking)
tank.ex_act(3.0)
spark(src, 4, cardinal)
+1 -1
View File
@@ -32,7 +32,7 @@
power_add = BATTLE_MONSTERS_POWER_UPGRADE
power_mul = 1.25
description = "%NAME is feared upon by most lesser beings, and with good reason. A single stroke of their %WEAPON_AND is known to destroy the very souls of those unlucky enough to even witness it's power over %ELEMENT_AND."
special_effects = "Absolute Power: %NAME cannot be attacked by monsters with a base attack rating less than <b>2000</b>."
special_effects = "Absolute Power: %NAME cannot be attacked by monsters with 4 or lower stars."
rarity = 0.5
rarity_score = 1
+4 -5
View File
@@ -74,7 +74,7 @@
user.visible_message(\
span("notice","\The [user] combines two decks together."),\
span("notice","You combine too decks together.")\
span("notice","You combine two decks together.")\
)
qdel(C)
@@ -150,12 +150,12 @@
if(icon_state != "hand")
user.visible_message(\
span("notice","\The [usr] begins searching through \the [src]..."),\
span("notice","You begin searching through your deck..")\
span("notice","You begin searching through your deck...")\
)
if(!do_after(user, 40, act_target = src))
if(!do_after(user, 5 + stored_card_names.len, act_target = src))
user.visible_message(\
span("notice","\The [usr] stops and thinks better of it."),\
span("notice","You top and think better of it.")\
span("notice","You stop and think better of it.")\
)
return
@@ -187,4 +187,3 @@
if(href_list["selection"])
take_specific_card(usr, href_list["selection"])
BrowseDeck(usr)
@@ -192,7 +192,7 @@
pants["blue track pants"] = /obj/item/clothing/under/pants/track/blue
pants["green track pants"] = /obj/item/clothing/under/pants/track/green
pants["white track pants"] = /obj/item/clothing/under/pants/track/white
pants["red track pants"] = /obj/item/clothing/under/pants/track/blue
pants["red track pants"] = /obj/item/clothing/under/pants/track/red
pants["camo pants"] = /obj/item/clothing/under/pants/camo
pants["athletic shorts, black"] = /obj/item/clothing/under/shorts
pants["athletic shorts, red"] = /obj/item/clothing/under/shorts/red
+2 -7
View File
@@ -202,10 +202,5 @@
icon_state = "fingerlessgloves"
item_state = "fingerlessgloves"
fingerprint_chance = 100
/obj/item/clothing/gloves/fingerless/attackby(obj/item/weapon/W, mob/user)
if(iswirecutter(W) || istype(W, /obj/item/weapon/scalpel))
user << "<span class='notice'>What do you plan to snip?</span>" //Nope
return
..()
clipped = 1
species_restricted = list("exclude","Golem","Vaurca Breeder","Vaurca Warform")
@@ -10,7 +10,7 @@
)
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0.3
species_restricted = list("Human", "Vaurca", "Machine", "Heavy Machine")
species_restricted = list("Human", "Vaurca", "Machine", "Heavy Machine", "Zeng-Hu Mobility Frame", "Bishop Accessory Frame")
camera_networks = list(NETWORK_MERCENARY)
light_overlay = "helmet_light_green" //todo: species-specific light overlays
brightness_on = 6
@@ -30,4 +30,4 @@
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs)
siemens_coefficient = 0.3
species_restricted = list("Human", "Skrell", "Vaurca", "Machine", "Heavy Machine")
species_restricted = list("Human", "Skrell", "Vaurca", "Machine", "Heavy Machine", "Zeng-Hu Mobility Frame", "Bishop Accessory Frame")
@@ -10,7 +10,7 @@
siemens_coefficient = 0.4
//Species-specific stuff.
species_restricted = list("Human", "Machine")
species_restricted = list("Human", "Machine", "Bishop Accessory Frame")
sprite_sheets_refit = list(
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
"Tajara" = 'icons/mob/species/tajaran/helmet.dmi',
@@ -38,7 +38,7 @@
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
siemens_coefficient = 0.4
species_restricted = list("Human", "Skrell", "Machine")
species_restricted = list("Human", "Skrell", "Machine", "Bishop Accessory Frame")
sprite_sheets_refit = list(
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Tajara" = 'icons/mob/species/tajaran/suit.dmi',
@@ -11,7 +11,7 @@
armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60)
siemens_coefficient = 0.3
wizard_garb = 1
species_restricted = list("Human", "Machine", "Heavy Machine", "Skeleton")
species_restricted = list("Human", "Machine", "Heavy Machine", "Skeleton", "Zeng-Hu Mobility Frame", "Bishop Accessory Frame")
/obj/item/clothing/head/helmet/space/void/wizard/equipped(var/mob/living/user)
if(!user.is_wizard())
@@ -47,7 +47,7 @@
siemens_coefficient = 0.3
wizard_garb = 1
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/teleportation_scroll,/obj/item/weapon/scrying,/obj/item/weapon/spellbook,/obj/item/device/soulstone,/obj/item/weapon/material/knife/ritual)
species_restricted = list("Human", "Skrell", "Machine", "Heavy Machine", "Skeleton")
species_restricted = list("Human", "Skrell", "Machine", "Heavy Machine", "Skeleton", "Zeng-Hu Mobility Frame", "Bishop Accessory Frame")
/obj/item/clothing/suit/space/void/wizard/equipped(var/mob/living/user)
if(!user.is_wizard())
+18 -1
View File
@@ -2374,7 +2374,7 @@ obj/item/clothing/suit/storage/hooded/fluff/make_poncho //Raincoat Poncho - M.A.
can_nap = 0
/obj/item/clothing/suit/storage/toggle/fluff/talon_coat //Embroidered Coat - Talon Hatfield - dronztheWolf
/obj/item/clothing/suit/storage/toggle/fluff/talon_coat //Embroidered Coat - Talon Hatfield - dronzthewolf
name = "embroidered coat"
desc = " Martian long coat, made to fend off dust storms and other unpleasantries. This one has a few patches sewn into it depicting: A Solarian flag, a Batallion number, and a large sun."
icon = 'icons/obj/custom_items/talon_coat.dmi'
@@ -2382,4 +2382,21 @@ obj/item/clothing/suit/storage/hooded/fluff/make_poncho //Raincoat Poncho - M.A.
item_state = "talon_coat"
icon_open = "talon_coat_open"
icon_closed = "talon_coat"
contained_sprite = TRUE
/obj/item/weapon/storage/backpack/cloak/fluff/ryn_cloak //Security Tunnel Cloak - Za'Akaix'Ryn Zo'ra - jamchop23334
name = "security tunnel cloak"
desc = "A blue, tailor-made tunnel cloak with paltry storage options. The fabric is smoother and less abrasive than regular tunnel cloaks, though it looks difficult to wear."
icon = 'icons/obj/custom_items/ryn_clothing.dmi'
icon_state = "ryn_cloak"
item_state = "ryn_cloak"
contained_sprite = TRUE
/obj/item/clothing/head/fluff/ryn_hood //Security Tunnel Hood - Za'Akaix'Ryn Zo'ra - jamchop23334
name = "security tunnel hood"
desc = "A silky smooth blue hood, though its more of a headwrap. You're having a hard time wrapping your head around how to wear this."
icon = 'icons/obj/custom_items/ryn_clothing.dmi'
icon_state = "ryn_hood"
item_state = "ryn_hood"
contained_sprite = TRUE
+5 -5
View File
@@ -68,13 +68,13 @@ log transactions
break
/obj/machinery/atm/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
if(emagged)
return
//short out the machine, shoot sparks, spew money!
emagged = 1
spark(src, 5, alldirs)
spawn_money(rand(100,500),src.loc)
spawn_money(rand(2000,5000),src.loc)
//we don't want to grief people by locking their id in an emagged ATM
release_held_id(user)
@@ -85,7 +85,7 @@ log transactions
/obj/machinery/atm/attackby(obj/item/I as obj, mob/user as mob)
if(istype(I, /obj/item/weapon/card))
if(emagged > 0)
if(emagged)
//prevent inserting id into an emagged ATM
user << "<span class='warning'>\icon[src] CARD READER ERROR. This system has been compromised!</span>"
return
@@ -135,7 +135,7 @@ log transactions
dat += "For all your monetary needs!<br>"
dat += "<i>This terminal is</i> [machine_id]. <i>Report this code when contacting IT Support</i><br/>"
if(emagged > 0)
if(emagged)
dat += "Card: <span style='color: red;'>LOCKED</span><br><br><span style='color: red;'>Unauthorized terminal access detected! This ATM has been locked. Please contact IT Support.</span>"
else
dat += "Card: <a href='?src=\ref[src];choice=insert_card'>[held_card ? held_card.name : "------"]</a><br><br>"
@@ -428,7 +428,7 @@ log transactions
if("insert_card")
if(!held_card)
//this might happen if the user had the browser window open when somebody emagged it
if(emagged > 0)
if(emagged)
usr << "<span class='warning'>\icon[src] The ATM card reader rejected your ID because this machine has been sabotaged!</span>"
else
var/obj/item/I = usr.get_active_hand()
+3
View File
@@ -266,6 +266,9 @@
qdel(src)
/mob/living/bot/secbot/ed209/RangedAttack(var/atom/A)
if(!(target in view(7, src)))
walk_to(src, target, 6, move_to_delay)
return
if(last_shot + shot_delay > world.time)
src << "You are not ready to fire yet!"
return
+1
View File
@@ -80,6 +80,7 @@
/mob/living/bot/secbot/turn_off()
..()
walk_to(src, src, 0, move_to_delay)
target = null
frustration = 0
mode = SECBOT_IDLE
+30 -39
View File
@@ -8,8 +8,8 @@
#define NYMPH_ABSORB_NUTRITION 650
#define NYMPH_ABSORB_DEAD_FACTOR 0.3
#define REGROW_FOOD_REQ 100
#define REGROW_ENERGY_REQ 40
#define REGROW_FOOD_REQ 150
#define REGROW_ENERGY_REQ 60
#define LANGUAGE_POINTS_TO_LEARN 3 //The number of samples of a language required to learn it
@@ -118,12 +118,9 @@ var/list/diona_banned_languages = list(
//Most medicines don't work on diona, but physical treatment for external wounds helps a little,
//and some alternative things that are toxic to other life, such as radium and mutagen, will benefit diona
/mob/living/carbon/proc/diona_handle_regeneration(var/datum/dionastats/DS)
if ((DS.stored_energy < 1 && !total_radiation)) //we need energy or radiation to heal
if ((DS.stored_energy < 1 && !total_radiation)) //we need energy or total_radiation to heal
return FALSE
var/radiation = max(total_radiation, 0)
var/value //A little variable we'll reuse to optimise
var/CL //Cached loss, to save on repeatedly recalculating it
var/HF = DS.healing_factor //I don't know if fetching a variable from an object repeatedly is slow, but this seems safe
@@ -134,10 +131,10 @@ var/list/diona_banned_languages = list(
if (getHalLoss() > 0)
CL = getHalLoss()
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF)
adjustHalLoss(value*-3,1) //Halloss heals more quickly
radiation -= value
total_radiation -= value
CL = getHalLoss()
value = min(CL, DS.stored_energy, 1*HF)
@@ -151,10 +148,10 @@ var/list/diona_banned_languages = list(
CL = getBruteLoss()
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF)
adjustBruteLoss(value*-1)
radiation -= value
total_radiation -= value
CL = getBruteLoss() //After adjusting it, recalculate for the lighthealing
value = min(CL, DS.stored_energy, 1*HF)
@@ -163,10 +160,10 @@ var/list/diona_banned_languages = list(
CL = getFireLoss()
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF)
adjustFireLoss(value*-1)
radiation -= value
total_radiation -= value
CL = getFireLoss()
value = min(CL, DS.stored_energy, 1*HF)
@@ -175,10 +172,10 @@ var/list/diona_banned_languages = list(
CL = stunned
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF)
stunned -= value
radiation -= value
total_radiation -= value
CL = stunned
value = min(CL, DS.stored_energy, 1*HF)
@@ -188,10 +185,10 @@ var/list/diona_banned_languages = list(
CL = weakened
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF)
weakened -= value
radiation -= value
total_radiation -= value
CL = weakened
value = min(CL, DS.stored_energy, 1*HF)
@@ -202,10 +199,10 @@ var/list/diona_banned_languages = list(
if (life_tick % LIFETICK_INTERVAL_LESS == 0)
CL = getToxLoss()
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF*LIFETICK_INTERVAL_LESS)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF*LIFETICK_INTERVAL_LESS)
adjustToxLoss(value*-1)
radiation -= value
total_radiation -= value
CL = getToxLoss()
value = min(CL, DS.stored_energy, 1*HF*LIFETICK_INTERVAL_LESS)
@@ -215,10 +212,10 @@ var/list/diona_banned_languages = list(
CL = getCloneLoss()
if (CL > 0)
if (radiation > 0)
value = min(CL, radiation, 2*HF*LIFETICK_INTERVAL_LESS)
if (total_radiation > 0)
value = min(CL, total_radiation, 2*HF*LIFETICK_INTERVAL_LESS)
adjustCloneLoss(value/-2.5) //Genetic damage, should diona ever suffer it, heals much more slowly.
radiation -= value //Most likely the only time they'll cloneloss is escaping from being partially devoured
total_radiation -= value //Most likely the only time they'll cloneloss is escaping from being partially devoured
CL = getCloneLoss()
value = min(CL, DS.stored_energy, 1*HF*LIFETICK_INTERVAL_LESS)
@@ -229,21 +226,15 @@ var/list/diona_banned_languages = list(
updatehealth()
return FALSE
// A little inter-proc communication.
// We need the continued radiation count for the sake of actually working.
return max(radiation, 0)
// Continuation of the Diona regen proc, but for human specific actions.
/mob/living/carbon/human/diona_handle_regeneration(var/datum/dionastats/DS)
. = ..()
..()
// We cancel with regening organ, as it's meant to stop all other regenerative
// processes. Just pray to shit the timers don't implode.
if (!. || DS.regening_organ)
if ((!total_radiation && !DS.healing_factor && !DS.stored_energy) || DS.regening_organ)
return FALSE
var/radiation = .
//Next up, healing any damage to internal organs.
//Diona really only have one critical organ, the light receptor node in the head.
//If badly damaged, the light receptor reduces the effectiveness of incoming light
@@ -253,10 +244,10 @@ var/list/diona_banned_languages = list(
for (var/obj/item/organ/O in bad_internal_organs)
var/CL = O.damage
var/value
if (radiation > 0)
value = min(CL, radiation, 2 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
if(total_radiation > 0)
value = min(CL, total_radiation, 2 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
O.damage += value/-1.5
radiation -= value
total_radiation -= value
CL = getCloneLoss()
value = min(CL, DS.stored_energy, 1 * DS.healing_factor * LIFETICK_INTERVAL_LESS)
@@ -426,7 +417,7 @@ var/list/diona_banned_languages = list(
var/HP = 1 //HP = health-percentage
if (DS.LMS == 4)
if (HP < 0.6)
to_chat(src, "<span class='danger'>The darkness burns. Your nymphs decay and wilt You are in mortal danger!</span>")
to_chat(src, "<span class='danger'>The darkness burns. Your nymphs decay and wilt. You are in mortal danger!</span>")
DS.LMS = 5
else if (DS.LMS == 5)
@@ -7,22 +7,35 @@
var/skipears = 0
var/skipeyes = 0
var/skipface = 0
var/skipbody = 0
//exosuits and helmets obscure our view and stuff.
if(wear_suit)
skipbody |= wear_suit.body_parts_covered
skipgloves = wear_suit.flags_inv & HIDEGLOVES
skipsuitstorage = wear_suit.flags_inv & HIDESUITSTORAGE
skipjumpsuit = wear_suit.flags_inv & HIDEJUMPSUIT
skipshoes = wear_suit.flags_inv & HIDESHOES
if(head)
skipbody |= head.body_parts_covered
skipbody &= ~HEAD // head covering incorrectly hides 'face' damage
skipbody |= (skipbody & FACE) ? HEAD : 0 // if you hide face damage, however, then go ahead and hide head damage, since that's where face damage is
skipmask = head.flags_inv & HIDEMASK
skipeyes = head.flags_inv & HIDEEYES
skipears = head.flags_inv & HIDEEARS
skipface = head.flags_inv & HIDEFACE
if(wear_mask)
skipbody |= wear_mask.body_parts_covered
skipbody |= (wear_mask.body_parts_covered & FACE) ? HEAD : 0 // same as above
skipface |= wear_mask.flags_inv & HIDEFACE
if(w_uniform)
skipbody |= w_uniform.body_parts_covered
if(gloves)
skipbody |= gloves.body_parts_covered
var/list/msg = list("<span class='info'>*---------*\nThis is ")
@@ -261,9 +274,11 @@
wound_flavor_text["[organ_descriptor]"] = "<span class='warning'><b>[T.He] [T.has] a stump where [T.his] [organ_descriptor] should be.</b></span>\n"
else
continue
for(var/obj/item/organ/external/temp in organs)
if(temp)
if(skipbody & temp.body_part)
continue
if(temp.status & ORGAN_ROBOT)
if(!(temp.brute_dam + temp.burn_dam))
//wound_flavor_text["[temp.name]"] = "<span class='warning'>[T.He] [T.has] a robot [temp.name]!</span>\n"
@@ -44,8 +44,8 @@
else if(E.status & ORGAN_BROKEN)
tally += 1.5
if(shock_stage >= 10) tally += 3
if (!(species && (species.flags & NO_PAIN)))
if(shock_stage >= 10) tally += 3
if(aiming && aiming.aiming_at) tally += 5 // Iron sights make you slower, it's a well-known fact.
@@ -274,7 +274,7 @@
examine_color = "#bc4b00"
blurb = "The Xion Manufacturing Group, being a subsidiary of Hephaestus Industries, saw the original Industrial models and wanted to develop their own chassis based off of the original design. The result is the Xion Industrial model. Sturdy and strong, this chassis is quite powerful and equally durable, with an ample power cell and improved actuators for carrying the increased weight of the body. The Xion model also retains sturdiness without covering the chassis in plating, allowing for the cooling systems to vent heat much easier than the Hephaestus-brand model. This unit cannot perform EVA"
blurb = "The Xion Manufacturing Group, being a subsidiary of Hephaestus Industries, saw the original Industrial models and wanted to develop their own chassis based off of the original design. The result is the Xion Industrial model. Sturdy and strong, this chassis is quite powerful and equally durable, with an ample power cell and improved actuators for carrying the increased weight of the body. The Xion model also retains sturdiness without covering the chassis in plating, allowing for the cooling systems to vent heat much easier than the Hephaestus-brand model. This unit cannot perform EVA without a suit."
has_limbs = list(
"chest" = list("path" = /obj/item/organ/external/chest/industrial/xion),
@@ -94,6 +94,10 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/proc/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
if(!affecting)
return
user.visible_message("<span class='warning'>[user] [pick(attack_verb)] [target] in the [affecting.name]!</span>")
playsound(user.loc, attack_sound, 25, 1, -1)
@@ -131,6 +135,10 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
if(!affecting)
return
var/organ = affecting.name
attack_damage = Clamp(attack_damage, 1, 5) // We expect damage input of 1 to 5 for this proc. But we leave this check juuust in case.
@@ -203,6 +211,10 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/kick/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
if(!affecting)
return
var/organ = affecting.name
attack_damage = Clamp(attack_damage, 1, 5)
@@ -246,7 +258,12 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/stomp/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
if(!affecting)
return
var/organ = affecting.name
var/obj/item/clothing/shoes = user.shoes
attack_damage = Clamp(attack_damage, 1, 5)
@@ -281,6 +281,9 @@
/mob/living/carbon/slime/proc/handle_AI() // the master AI process
if(Victim && Victim.stat & DEAD)
Victim = null
if(stat == DEAD || client || Victim) return // If we're dead or have a client, we don't need AI, if we're feeding, we continue feeding
AIproc = 1
+1 -1
View File
@@ -27,7 +27,7 @@ calculate text size per text.
for(var/datum/reagent/R in reagent_list)
if(!R.taste_mult)
continue
if(R.id == "nutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
if(R.id == "nutriment" || R.id == "synnutriment") //this is ugly but apparently only nutriment (not subtypes) has taste data TODO figure out why
var/list/taste_data = R.get_data()
for(var/taste in taste_data)
if(taste in tastes)
@@ -749,7 +749,6 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/weapon/gripper/chemistry(src)
src.modules += new /obj/item/weapon/reagent_containers/dropper/industrial(src)
src.modules += new /obj/item/device/reagent_scanner/adv(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/weapon/storage/bag/plants(src)
src.modules += new /obj/item/weapon/pen/robopen(src)
src.emag = new /obj/item/weapon/hand_tele(src)
@@ -3642,7 +3642,7 @@
color = "#102000"
adj_temp = -5
adj_sleepy = -2
caffeine = 1
caffeine = 0.2
taste_description = "electric cherry"
/datum/reagent/drink/zorasoda/phoron
@@ -3652,7 +3652,7 @@
color = "#863333"
adj_temp = -5
adj_sleepy = -2
caffeine = 1
caffeine = 0.2
taste_description = "electric grape"
/datum/reagent/drink/zorasoda/kois
@@ -3662,7 +3662,7 @@
color = "#dcd9cd"
adj_temp = -5
adj_sleepy = -2
caffeine = 1
caffeine = 0.2
taste_description = "sugary cabbage"
/datum/reagent/drink/zorasoda/kois/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -3677,7 +3677,7 @@
color = "#365000"
adj_temp = -5
adj_sleepy = -3
caffeine = 2
caffeine = 0.3
taste_description = "a full-body bite into an acidic lemon"
/datum/reagent/drink/zorasoda/hozm/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -3694,7 +3694,7 @@
color = "#100800"
adj_temp = -5
adj_sleepy = -3
caffeine = 0.8
caffeine = 0.1
taste_description = "fizzy nettles"
/datum/reagent/drink/zorasoda/venomgrass/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -3709,7 +3709,7 @@
color = "#E78108"
adj_temp = -5
adj_sleepy = -3
caffeine = 1
caffeine = 0.2
unaffected_species = IS_MACHINE
taste_description = "orange cream"
@@ -3725,7 +3725,7 @@
color = "#0000CD"
adj_temp = -5
adj_sleepy = -3
caffeine = 1
caffeine = 0.2
taste_description = "flat raspberry"
/datum/reagent/drink/zorasoda/cthur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -3761,7 +3761,7 @@
color = "#FFFF00"
adj_temp = -5
adj_sleepy = -3
caffeine = 1
caffeine = 0.2
taste_description = "a reassuring spectrum of color"
/datum/reagent/drink/zorasoda/jelly/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
@@ -5016,7 +5016,7 @@
name = "mystery chocolate truffle"
desc = "Rich bite-sized chocolate with a mystery filling!"
/obj/item/weapon/reagent_containers/food/snacks/random/Initialize()
/obj/item/weapon/reagent_containers/food/snacks/truffle/random/Initialize()
. = ..()
var/reagent_string = pick(list("cream","cherryjelly","mint","frostoil","capsaicin","cream","coffee","milkshake"))
reagents.add_reagent(reagent_string, 4)
@@ -5105,7 +5105,7 @@
nutriment_desc = list("pizza crust" = 5, "tomato" = 5)
nutriment_amt = 5
/obj/item/weapon/reagent_containers/food/snacks/baconburger
/obj/item/weapon/reagent_containers/food/snacks/burger/bacon
name = "bacon burger"
desc = "The cornerstone of every nutritious breakfast, now with bacon!"
icon_state = "hburger"
+9 -8
View File
@@ -1,5 +1,5 @@
/obj/structure/reagent_dispensers
name = "Strange dispenser"
name = "strange dispenser"
desc = "What the fuck is this?"
icon = 'icons/obj/objects.dmi'
icon_state = "watertank"
@@ -128,7 +128,6 @@
icon_state = "weldtank"
accept_any_reagent = FALSE
amount_per_transfer_from_this = 10
var/modded = 0
var/defuse = 0
var/armed = 0
var/obj/item/device/assembly_holder/rig = null
@@ -140,7 +139,7 @@
/obj/structure/reagent_dispensers/fueltank/examine(mob/user)
if(!..(user, 2))
return
if (modded)
if (is_leaking)
user << "<span class='warning'>Fuel faucet is wrenched open, leaking the fuel!</span>"
if(rig)
user << "<span class='notice'>There is some kind of device rigged to the tank.</span>"
@@ -215,7 +214,7 @@
..()
/obj/structure/reagent_dispensers/fueltank/fire_act(datum/gas_mixture/air, temperature, volume)
if (modded)
if (is_leaking)
ex_act(2.0)
else if (temperature > T0C+500)
ex_act(2.0)
@@ -226,7 +225,7 @@
ex_act(2.0)
/obj/structure/reagent_dispensers/peppertank
name = "Pepper Spray Refiller"
name = "pepper spray refiller"
desc = "Refill pepper spray canisters."
icon = 'icons/obj/objects.dmi'
icon_state = "peppertank"
@@ -240,7 +239,7 @@
reagents.add_reagent("condensedcapsaicin",capacity)
/obj/structure/reagent_dispensers/water_cooler
name = "Water-Cooler"
name = "water-cooler"
desc = "A machine that dispenses water to drink."
amount_per_transfer_from_this = 5
icon = 'icons/obj/vending.dmi'
@@ -268,6 +267,8 @@
user.visible_message("\The [user] unfastens the screws securing \the [src] to the floor.", "You unfasten the screws securing \the [src] to the floor.")
anchored = 0
return
else
..()
/obj/structure/reagent_dispensers/beerkeg
name = "beer keg"
@@ -292,7 +293,7 @@
reagents.add_reagent("xuizijuice",capacity)
/obj/structure/reagent_dispensers/virusfood
name = "Virus Food Dispenser"
name = "virus food dispenser"
desc = "A dispenser of virus food."
icon = 'icons/obj/objects.dmi'
icon_state = "virusfoodtank"
@@ -306,7 +307,7 @@
reagents.add_reagent("virusfood", capacity)
/obj/structure/reagent_dispensers/acid
name = "Sulphuric Acid Dispenser"
name = "sulphuric acid dispenser"
desc = "A dispenser of acid for industrial processes."
icon = 'icons/obj/objects.dmi'
icon_state = "acidtank"