mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
More Incense! (#21804)
* More Incense! * Gotta code em all * improvement * updates
This commit is contained in:
@@ -450,3 +450,9 @@ var/list/cheartstopper = list(/*"potassium_chloride",*/ CHEESYGLOOP) //this stop
|
||||
#define INCENSE_SUNFLOWERS "sunflowers"
|
||||
#define INCENSE_MOONFLOWERS "moonflowers"
|
||||
#define INCENSE_NOVAFLOWERS "novaflowers"
|
||||
#define INCENSE_BANANA "bananas"
|
||||
#define INCENSE_BOOZE "helmets"
|
||||
#define INCENSE_LEAFY "cabbage"
|
||||
#define INCENSE_VAPOR "vaporsacs"
|
||||
#define INCENSE_DENSE "grasses"
|
||||
#define INCENSE_CRAVE "vales"
|
||||
@@ -279,6 +279,7 @@
|
||||
male_adept = "Magister"
|
||||
female_adept = "Magistera"
|
||||
keys = list("satan", "evil", "satanism")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/moonflowers
|
||||
|
||||
/datum/religion/lovecraft
|
||||
name = "Esoteric order of Dagon"
|
||||
@@ -307,6 +308,7 @@
|
||||
male_adept = "Master of Slam"
|
||||
female_adept = "Mistress of Slam"
|
||||
keys = list("slam", "bball", "basketball", "basket ball")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/vale
|
||||
|
||||
/datum/religion/slam/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.put_in_hands(new/obj/item/weapon/beach_ball/holoball)
|
||||
@@ -382,6 +384,7 @@
|
||||
male_adept = "Druid"
|
||||
female_adept = "Druidess"
|
||||
keys = list("druidism", "celtic")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/leafy
|
||||
|
||||
/datum/religion/atheism
|
||||
name = "Atheism"
|
||||
@@ -404,6 +407,7 @@
|
||||
male_adept = "Biologist"
|
||||
female_adept = "Biologist"
|
||||
keys = list("evolution", "biology", "monkey", "monkeys")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/banana
|
||||
|
||||
/datum/religion/scientology
|
||||
name = "Scientology"
|
||||
@@ -453,6 +457,7 @@
|
||||
deity_name = "The Flying Spaghetti Monster"
|
||||
bible_name = "The Gospel of the Flying Spaghetti Monster"
|
||||
keys = list("pastafarianism")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/sunflowers
|
||||
|
||||
/datum/religion/chaos
|
||||
name = "Chaos"
|
||||
@@ -486,6 +491,7 @@
|
||||
male_adept = "LGBT Advocate"
|
||||
female_adept = "LGBT Advocate"
|
||||
keys = list("homosexuality", "faggotry", "gayness", "gay", "penis", "faggot", "cock", "cocks", "dick", "dicks")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/banana
|
||||
|
||||
/datum/religion/homosexuality/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/under/darkholme(H), slot_w_uniform)
|
||||
@@ -499,6 +505,7 @@
|
||||
female_adept = "Retard"
|
||||
keys = list("lol", "wtf", "ass", "poo", "badmin", "shitmin", "deadmin", "nigger", "dickbutt", ":^)", "XD", "le", "meme", "memes", "ayy", "ayy lmao", "lmao", "reddit", "4chan", "tumblr", "9gag", "brian damag")
|
||||
convert_method = "standing both next to a table."
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/banana
|
||||
|
||||
/datum/religion/retard/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.setBrainLoss(100) //Starts off retarded as fuck, that'll teach him
|
||||
@@ -552,6 +559,7 @@
|
||||
male_adept = "Academician"
|
||||
female_adept = "Academician"
|
||||
keys = list("Science")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/sunflowers
|
||||
|
||||
/datum/religion/justice
|
||||
name = "Tribunal"
|
||||
@@ -625,6 +633,7 @@
|
||||
male_adept = "Veterinarian"
|
||||
female_adept = "Veterinarian"
|
||||
keys = list("ianism", "ian", "dog", "puppy", "doggo", "pupper")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/leafy
|
||||
|
||||
/datum/religion/admins
|
||||
name = "Adminism"
|
||||
@@ -660,6 +669,7 @@
|
||||
male_adept = "Ghost"
|
||||
female_adept = "Ghost"
|
||||
keys = list("spook", "spooky", "boo", "ghost", "halloween", "2spooky")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/moonflowers
|
||||
|
||||
/datum/religion/spooky/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/pumpkinhead(H), slot_head)
|
||||
@@ -710,6 +720,7 @@
|
||||
male_adept = "Drunkard"
|
||||
female_adept = "Drunkard"
|
||||
keys = list("alcohol", "booze", "beer", "wine", "ethanol", "c2h6o")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/booze
|
||||
|
||||
/datum/religion/robutness
|
||||
name = "Robustness"
|
||||
@@ -719,6 +730,7 @@
|
||||
male_adept = "Robuster"
|
||||
female_adept = "Robuster"
|
||||
keys = list("robust", "robustness", "strength")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/vale
|
||||
|
||||
/datum/religion/suicide
|
||||
name = "Thanatology" // Guess it works
|
||||
@@ -728,6 +740,7 @@
|
||||
male_adept = "Reaper"
|
||||
female_adept = "Reaper"
|
||||
keys = list("suicide", "death", "succumb")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/moonflowers
|
||||
|
||||
/datum/religion/communism
|
||||
name = "Communism"
|
||||
@@ -773,6 +786,7 @@
|
||||
male_adept = "Feldbischof" //No seriously, that's a thing, look it up
|
||||
female_adept = "Feldbischof"
|
||||
keys = list("fascism", "nazi", "national socialism")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/dense
|
||||
|
||||
/datum/religion/nazism/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/naziofficer(H), slot_head)
|
||||
@@ -785,7 +799,7 @@
|
||||
female_adept = "Nanotrasen Officer"
|
||||
keys = list("security", "space law", "law", "nanotrasen", "centcomm")
|
||||
convert_method = "performing a ritual with a flashbang and a screwdriver. You need to hold the flashbang, with its timer set to 5 seconds, your convert needs to hold the screwdriver and have a free empty hand."
|
||||
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/dense
|
||||
|
||||
/datum/religion/security/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/centhat(H), slot_head)
|
||||
@@ -893,6 +907,7 @@
|
||||
male_adept = "Revolutionary"
|
||||
female_adept = "Revolutionary"
|
||||
keys = list("revolution", "rev", "revolt")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/dense
|
||||
|
||||
/datum/religion/wizard
|
||||
name = "Wizardry"
|
||||
@@ -901,6 +916,7 @@
|
||||
male_adept = "Wizard"
|
||||
female_adept = "Wizard"
|
||||
keys = list("wizard", "wiz", "magic")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/dense
|
||||
|
||||
/datum/religion/wizard/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/head/wizard(H), slot_head)
|
||||
@@ -937,6 +953,7 @@
|
||||
male_adept = "Vox Enthusiast" //And that's terrible
|
||||
female_adept = "Vox Enthusiast"
|
||||
keys = list("vox", "raiders", "raid", "bird", "birb")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/vapor
|
||||
|
||||
/datum/religion/bleb
|
||||
name = "Blob Worship"
|
||||
@@ -953,6 +970,7 @@
|
||||
male_adept = "Co-Clown"
|
||||
female_adept = "Co-Clown"
|
||||
keys = list("honk", "clown", "honkmother")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/banana
|
||||
|
||||
/datum/religion/clown/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask)
|
||||
@@ -1019,11 +1037,11 @@
|
||||
|
||||
/datum/religion/vegan
|
||||
name = "Veganism"
|
||||
|
||||
bible_name = "Mercy For Animals"
|
||||
male_adept = "Animal Rights Activist"
|
||||
female_adept = "Animal Rights Activist"
|
||||
keys = list("vegan","vegetarian","veganism","vegetarianism", "animals", "animal rights")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/leafy
|
||||
|
||||
/datum/religion/vegan/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
//Add veganism disability
|
||||
@@ -1037,6 +1055,7 @@
|
||||
male_adept = "Expedition Leader"
|
||||
female_adept = "Expedition Leader"
|
||||
keys = list("armok", "dwarf", "dorf", "dwarf fortress", "dorf fort")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/booze
|
||||
|
||||
/datum/religion/art
|
||||
name = "The Joy of Painting"
|
||||
@@ -1059,6 +1078,7 @@
|
||||
male_adept = "Janitor"
|
||||
female_adept = "Janitor"
|
||||
keys = list("clean","cleaning","Mr. Clean","janitor")
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/vapor
|
||||
|
||||
/datum/religion/clean/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.put_in_hands(new /obj/item/weapon/mop)
|
||||
@@ -1074,6 +1094,7 @@
|
||||
female_adept = "Kommando"
|
||||
keys = list("murdercube","murderkube", "murder/k/ube","forgotten weapons", "gun", "guns", "ammo", "trigger discipline", "ave nex alea", "dakka")
|
||||
convert_method = "performing a ritual with a gun. The convert needs to be in good health and unafraid of being shot."
|
||||
preferred_incense = /obj/item/weapon/storage/fancy/incensebox/dense
|
||||
|
||||
/datum/religion/guns/equip_chaplain(var/mob/living/carbon/human/H)
|
||||
H.equip_or_collect(new /obj/item/weapon/gun/energy/laser/practice)
|
||||
|
||||
@@ -639,7 +639,8 @@
|
||||
var/obj/item/I = mover
|
||||
if(istype(I, /obj/item/weapon/dummy) || istype(I, /obj/item/projectile))
|
||||
return
|
||||
if(prob(50))
|
||||
var/mob/mob = get_mob_by_key(mover.fingerprintslast)
|
||||
if(prob(50) || (mob && mob.reagents.get_sportiness()>=5))
|
||||
I.forceMove(src.loc)
|
||||
visible_message("<span class='notice'>Swish! \the [I] lands in \the [src].</span>")
|
||||
else
|
||||
|
||||
@@ -28,34 +28,73 @@
|
||||
var/lit = FALSE
|
||||
var/flammable = TRUE
|
||||
|
||||
var/fragrance = INCENSE_HAREBELLS
|
||||
var/adjective = "holy"
|
||||
var/fragrance = null
|
||||
var/adjective = null
|
||||
var/list/breathed_at_least_once = list()
|
||||
|
||||
/obj/item/incense_stick/New()
|
||||
..()
|
||||
create_reagents(1)
|
||||
|
||||
/obj/item/incense_stick/harebells
|
||||
fragrance = INCENSE_HAREBELLS
|
||||
adjective = "holy"
|
||||
color = "#ffffff"
|
||||
|
||||
/obj/item/incense_stick/poppies
|
||||
fragrance = INCENSE_POPPIES
|
||||
adjective = "calming"
|
||||
color = "#660000"
|
||||
|
||||
/obj/item/incense_stick/sunflowers
|
||||
fragrance = INCENSE_SUNFLOWERS
|
||||
adjective = "pleasant"
|
||||
color = "#ffff99"
|
||||
|
||||
/obj/item/incense_stick/moonflowers
|
||||
fragrance = INCENSE_MOONFLOWERS
|
||||
adjective = "disturbing"
|
||||
color = "#6f20b5"
|
||||
|
||||
/obj/item/incense_stick/novaflowers
|
||||
fragrance = INCENSE_NOVAFLOWERS
|
||||
adjective = "stimulating"
|
||||
color = "#ffa500"
|
||||
|
||||
/obj/item/incense_stick/banana
|
||||
fragrance = INCENSE_BANANA
|
||||
adjective = "slippery"
|
||||
color = "#ffff00"
|
||||
|
||||
/obj/item/incense_stick/cabbage
|
||||
fragrance = INCENSE_LEAFY
|
||||
adjective = "fresh"
|
||||
color = "#33cc33"
|
||||
|
||||
/obj/item/incense_stick/booze
|
||||
fragrance = INCENSE_BOOZE
|
||||
adjective = "alcoholic"
|
||||
color = "#b35900"
|
||||
|
||||
/obj/item/incense_stick/vapor
|
||||
fragrance = INCENSE_VAPOR
|
||||
adjective = "clean"
|
||||
color = "#3399ff"
|
||||
|
||||
/obj/item/incense_stick/dense
|
||||
fragrance = INCENSE_DENSE
|
||||
adjective = "foul"
|
||||
color = "#333333"
|
||||
|
||||
/obj/item/incense_stick/vale
|
||||
fragrance = INCENSE_CRAVE
|
||||
adjective = "craving-inducing"
|
||||
color = "#ffccff"
|
||||
|
||||
/obj/item/incense_stick/examine(mob/user)
|
||||
|
||||
..()
|
||||
to_chat(user, "\The [src] is [lit ? "":"un"]lit.")
|
||||
to_chat(user,"<span class='info'>This one [adjective ? "smells [adjective]" : "is unscented"].</span>")
|
||||
|
||||
/obj/item/incense_stick/attack_self(var/mob/user)
|
||||
if(lit)
|
||||
@@ -99,6 +138,7 @@
|
||||
/obj/item/incense_stick/proc/exting()
|
||||
lit = FALSE
|
||||
damtype = BRUTE
|
||||
breathed_at_least_once.Cut()
|
||||
attack_verb = unlit_attack_verb
|
||||
update_icon()
|
||||
set_light(0)
|
||||
@@ -131,9 +171,12 @@
|
||||
location.hotspot_expose(source_temperature, 5, surfaces = istype(loc, /turf))
|
||||
anim(target = location, a_icon = 'icons/effects/160x160.dmi', flick_anim = "incense", offX = -WORLD_ICON_SIZE*2+pixel_x, offY = -WORLD_ICON_SIZE*2+pixel_y)
|
||||
if (location.zone)//is there a simulated atmosphere where we are?
|
||||
|
||||
var/list/potential_breathers = list()
|
||||
for(var/turf/simulated/T in location.zone.contents)//are they in that same atmospheric zone?
|
||||
for (var/mob/living/carbon/C in T)
|
||||
for (var/mob/living/C in T)
|
||||
if(!iscarbon(C) && !isanimal(C))
|
||||
continue
|
||||
if (get_dist(location, C) <= 7)//are they relatively close?
|
||||
if (!ishuman(C))
|
||||
potential_breathers += C
|
||||
@@ -144,9 +187,13 @@
|
||||
if(H.internal)//are their internals off?
|
||||
continue
|
||||
potential_breathers += C
|
||||
|
||||
for (var/mob/living/carbon/C in potential_breathers)
|
||||
C.reagents.add_reagent(fragrance,0.5)
|
||||
var/datum/reagent/incense/D = chemical_reagents_list[fragrance]
|
||||
if(D)
|
||||
D.OnDisperse(location)
|
||||
for (var/mob/living/C in potential_breathers)
|
||||
reagents.clear_reagents()
|
||||
reagents.add_reagent(fragrance,0.5) //Create a new fragrance inside, then move it to the target.
|
||||
reagents.trans_to(C,0.5)
|
||||
if (!(C in breathed_at_least_once))
|
||||
breathed_at_least_once += C
|
||||
to_chat(C,"\A [adjective] fragrance fills the air.[((fragrance == INCENSE_HAREBELLS)&&(iscultist(C)||isvampire(C))) ? "..<span class='danger'>and gives you a splitting headache!</span>" : ""]")
|
||||
@@ -176,6 +223,16 @@
|
||||
var/mob/M = loc
|
||||
M.update_inv_hands()
|
||||
|
||||
/obj/item/incense_stick/proc/set_fragrance(var/newfrag)
|
||||
if(fragrance == newfrag)
|
||||
return FALSE
|
||||
fragrance = newfrag
|
||||
for(var/path in typesof(/obj/item/incense_stick))
|
||||
var/obj/item/incense_stick/IS = new path
|
||||
if(fragrance == IS.fragrance)
|
||||
adjective = IS.adjective
|
||||
color = IS.color
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox
|
||||
@@ -196,6 +253,7 @@
|
||||
w_type=RECYK_WOOD
|
||||
siemens_coefficient = 0
|
||||
vending_cat = "incense material"
|
||||
var/fragrance = null
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/fire_act(var/datum/gas_mixture/air, var/exposed_temperature, var/exposed_volume)
|
||||
for (var/obj/item/incense_stick/S in contents)
|
||||
@@ -213,38 +271,61 @@
|
||||
empty = 1
|
||||
icon_state = "incensebox_0"
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/harebells/New()
|
||||
..()
|
||||
for(var/obj/item/incense_stick/S in contents)
|
||||
S.fragrance = INCENSE_HAREBELLS
|
||||
/obj/item/weapon/storage/fancy/incensebox/harebells
|
||||
fragrance = INCENSE_HAREBELLS
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/poppies/New()
|
||||
..()
|
||||
for(var/obj/item/incense_stick/S in contents)
|
||||
S.fragrance = INCENSE_POPPIES
|
||||
/obj/item/weapon/storage/fancy/incensebox/poppies
|
||||
fragrance = INCENSE_POPPIES
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/sunflowers/New()
|
||||
..()
|
||||
for(var/obj/item/incense_stick/S in contents)
|
||||
S.fragrance = INCENSE_SUNFLOWERS
|
||||
/obj/item/weapon/storage/fancy/incensebox/sunflowers
|
||||
fragrance = INCENSE_SUNFLOWERS
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/moonflowers/New()
|
||||
..()
|
||||
for(var/obj/item/incense_stick/S in contents)
|
||||
S.fragrance = INCENSE_MOONFLOWERS
|
||||
/obj/item/weapon/storage/fancy/incensebox/moonflowers
|
||||
fragrance = INCENSE_MOONFLOWERS
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/novaflowers/New()
|
||||
..()
|
||||
for(var/obj/item/incense_stick/S in contents)
|
||||
S.fragrance = INCENSE_NOVAFLOWERS
|
||||
/obj/item/weapon/storage/fancy/incensebox/novaflowers
|
||||
fragrance = INCENSE_NOVAFLOWERS
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/banana
|
||||
fragrance = INCENSE_BANANA
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/leafy
|
||||
fragrance = INCENSE_LEAFY
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/booze
|
||||
fragrance = INCENSE_BOOZE
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/vapor
|
||||
fragrance = INCENSE_VAPOR
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/dense
|
||||
fragrance = INCENSE_DENSE
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/vale
|
||||
fragrance = INCENSE_CRAVE
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/New()
|
||||
..()
|
||||
if (empty)
|
||||
return
|
||||
if(fragrance)
|
||||
for(var/i=1; i <= storage_slots; i++)
|
||||
new /obj/item/incense_stick(src)
|
||||
var/obj/item/incense_stick/IS = new(src)
|
||||
IS.set_fragrance(fragrance)
|
||||
|
||||
/obj/item/weapon/storage/fancy/incensebox/variety/New()
|
||||
..()
|
||||
new /obj/item/incense_stick/harebells(src)
|
||||
new /obj/item/incense_stick/poppies(src)
|
||||
new /obj/item/incense_stick/sunflowers(src)
|
||||
new /obj/item/incense_stick/novaflowers(src)
|
||||
new /obj/item/incense_stick/moonflowers(src)
|
||||
new /obj/item/incense_stick/dense(src)
|
||||
new /obj/item/incense_stick/vapor(src)
|
||||
new /obj/item/incense_stick/booze(src)
|
||||
new /obj/item/incense_stick/banana(src)
|
||||
new /obj/item/incense_stick/cabbage(src)
|
||||
new /obj/item/incense_stick/vale(src)
|
||||
|
||||
/obj/item/incense_oilbox
|
||||
name = "incense oil container"
|
||||
@@ -259,8 +340,12 @@
|
||||
force = 2.5
|
||||
flags = FPRINT
|
||||
vending_cat = "incense material"
|
||||
var/fragrance = INCENSE_HAREBELLS
|
||||
var/adjective = "holy"
|
||||
var/fragrance = null
|
||||
var/adjective = null
|
||||
|
||||
/obj/item/incense_oilbox/examine(mob/user)
|
||||
..()
|
||||
to_chat(user,"<span class='info'>It [adjective ? "smells [adjective]" : "is unscented"].</span>")
|
||||
|
||||
/obj/item/incense_oilbox/harebells
|
||||
fragrance = INCENSE_HAREBELLS
|
||||
@@ -282,47 +367,50 @@
|
||||
fragrance = INCENSE_NOVAFLOWERS
|
||||
adjective = "stimulating"
|
||||
|
||||
/obj/item/incense_oilbox/banana
|
||||
fragrance = INCENSE_BANANA
|
||||
adjective = "slippery"
|
||||
|
||||
/obj/item/incense_oilbox/cabbage
|
||||
fragrance = INCENSE_LEAFY
|
||||
adjective = "fresh"
|
||||
|
||||
/obj/item/incense_oilbox/booze
|
||||
fragrance = INCENSE_BOOZE
|
||||
adjective = "alcoholic"
|
||||
|
||||
/obj/item/incense_oilbox/vapor
|
||||
fragrance = INCENSE_VAPOR
|
||||
adjective = "clean"
|
||||
|
||||
/obj/item/incense_oilbox/dense
|
||||
fragrance = INCENSE_DENSE
|
||||
adjective = "foul"
|
||||
|
||||
/obj/item/incense_oilbox/vale
|
||||
fragrance = INCENSE_CRAVE
|
||||
adjective = "craving-inducing"
|
||||
|
||||
/obj/item/incense_oilbox/attackby(var/obj/item/weapon/W, var/mob/user)
|
||||
if (istype (W, /obj/item/incense_stick))
|
||||
if(!fragrance)
|
||||
to_chat(user, "<span class='warning'>A floral product must be blended inside first!</span>")
|
||||
return
|
||||
var/obj/item/incense_stick/S = W
|
||||
S.fragrance = fragrance
|
||||
S.adjective = adjective
|
||||
to_chat(user, "<span class='notice'>You dip the stick in the container, carefully applying the oils on it.</span>")
|
||||
if(S.set_fragrance(fragrance))
|
||||
to_chat(user, "<span class='notice'>You dip the stick in the container, carefully applying the [adjective] oils on it.</span>")
|
||||
return
|
||||
if (istype (W,/obj/item/weapon/reagent_containers/food/snacks/grown/harebell))
|
||||
if (istype (W,/obj/item/weapon/reagent_containers/food/snacks/grown) || istype(W,/obj/item/weapon/grown))
|
||||
if(W:fragrance) //for both types this is null by default, so it's "safe" to use the trusted operator
|
||||
user.drop_item(W, force_drop = 1)
|
||||
qdel(W)
|
||||
fragrance = INCENSE_HAREBELLS
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with harebell petals, producing an holy fragrance.</span>")
|
||||
adjective = "holy"
|
||||
return
|
||||
if (istype (W,/obj/item/weapon/reagent_containers/food/snacks/grown/poppy))
|
||||
user.drop_item(W, force_drop = 1)
|
||||
qdel(W)
|
||||
fragrance = INCENSE_POPPIES
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with poppy petals, producing a calming fragrance.</span>")
|
||||
adjective = "calming"
|
||||
return
|
||||
if (istype (W,/obj/item/weapon/grown/sunflower))
|
||||
user.drop_item(W, force_drop = 1)
|
||||
qdel(W)
|
||||
fragrance = INCENSE_SUNFLOWERS
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with sunflower petals, producing a pleasant fragrance.</span>")
|
||||
adjective = "pleasant"
|
||||
return
|
||||
if (istype (W,/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower))
|
||||
user.drop_item(W, force_drop = 1)
|
||||
qdel(W)
|
||||
fragrance = INCENSE_MOONFLOWERS
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with moonflower petals, producing a disturbing fragrance.</span>")
|
||||
adjective = "disturbing"
|
||||
return
|
||||
if (istype (W,/obj/item/weapon/grown/novaflower))
|
||||
user.drop_item(W, force_drop = 1)
|
||||
qdel(W)
|
||||
fragrance = INCENSE_NOVAFLOWERS
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with novaflower petals, producing a stimulating fragrance.</span>")
|
||||
adjective = "stimulating"
|
||||
fragrance = W:fragrance
|
||||
for(var/path in typesof(/obj/item/incense_oilbox))
|
||||
var/obj/item/incense_oilbox/IO = new path
|
||||
if(fragrance == IO.fragrance)
|
||||
adjective = IO.adjective
|
||||
break
|
||||
to_chat(user, "<span class='notice'>The oils in the box are now blended with \the [W]... it smells [adjective]!</span>")
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -353,6 +441,10 @@
|
||||
incense = null
|
||||
..()
|
||||
|
||||
/obj/item/weapon/thurible/examine(mob/user)
|
||||
..()
|
||||
if(incense && incense.lit)
|
||||
to_chat(user,"<span class='info'>A [incense.adjective] fragrance wafts from within!</span>")
|
||||
|
||||
/obj/item/weapon/thurible/update_icon()
|
||||
if (incense && incense.lit)
|
||||
@@ -402,8 +494,8 @@
|
||||
to_chat(user,"<span class='warning'>The incense was recently put out, you must wait a few seconds before lighting it up again.</span>")
|
||||
return
|
||||
else
|
||||
incense.burn()
|
||||
to_chat(user,"<span class='warning'>You flick the built-in lighter, and the small flame lights up \the [incense].</span>")
|
||||
incense.burn()
|
||||
else
|
||||
to_chat(user,"<span class='warning'>Put some incense in there first.</span>")
|
||||
|
||||
|
||||
@@ -567,7 +567,7 @@ a {
|
||||
|
||||
/obj/proc/clumsy_check(var/mob/living/user)
|
||||
if(istype(user))
|
||||
return (M_CLUMSY in user.mutations)
|
||||
return (M_CLUMSY in user.mutations) || user.reagents.has_reagent(INCENSE_BANANA)
|
||||
return 0
|
||||
|
||||
//Proc that handles NPCs (gremlins) "tampering" with this object.
|
||||
|
||||
@@ -676,6 +676,7 @@ turf/simulated/floor/update_icon()
|
||||
|
||||
/turf/simulated/proc/dry(slipperiness = TURF_WET_WATER)
|
||||
var/obj/effect/overlay/puddle/P = is_wet()
|
||||
if(P)
|
||||
if(P.wet > slipperiness)
|
||||
return
|
||||
qdel(P)
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
var/plantname
|
||||
var/potency = 1
|
||||
var/fragrance = null
|
||||
|
||||
/obj/item/weapon/grown/New()
|
||||
|
||||
@@ -90,6 +91,7 @@
|
||||
w_class = W_CLASS_TINY
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
fragrance = INCENSE_SUNFLOWERS
|
||||
|
||||
/obj/item/weapon/grown/sunflower/attack(mob/M as mob, mob/user as mob)
|
||||
to_chat(M, "<font color='green'><b> [user] smacks you with a sunflower! </font><font color='yellow'><b>FLOWER POWER<b></font>")
|
||||
@@ -111,6 +113,7 @@
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
attack_verb = list("sears", "heats", "whacks", "steams")
|
||||
fragrance = INCENSE_NOVAFLOWERS
|
||||
|
||||
/obj/item/weapon/grown/novaflower/New()
|
||||
..()
|
||||
|
||||
@@ -188,6 +188,7 @@
|
||||
icon_state = "valeleaves"
|
||||
plantname = "vale"
|
||||
hydroflags = HYDRO_PREHISTORIC
|
||||
fragrance = INCENSE_CRAVE
|
||||
|
||||
/datum/seed/surik
|
||||
name = "surik"
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
/mob/living/carbon/human/proc/get_knockout_chance(mob/living/victim)
|
||||
var/base_chance = 8
|
||||
|
||||
base_chance += min(reagents.get_sportiness(),5)
|
||||
if(mutations.Find(M_HULK))
|
||||
base_chance += 12
|
||||
if(istype(gloves))
|
||||
|
||||
@@ -62,8 +62,7 @@
|
||||
playsound(src, 'sound/machines/click.ogg', 50, 1)
|
||||
var/calc = DEFAULT_BUMP_ENERGY * power_efficiency * runner.treadmill_speed
|
||||
if(runner.reagents) //Sanity
|
||||
for(var/datum/reagent/R in runner.reagents.reagent_list)
|
||||
calc *= R.sport
|
||||
calc *= runner.reagents.get_sportiness()
|
||||
if(M_HULK in runner.mutations)
|
||||
calc *= 5
|
||||
count_power += calc
|
||||
|
||||
@@ -149,7 +149,6 @@ var/const/INGEST = 2
|
||||
logged_message += "[current_reagent_transfer]u of [current_reagent.name]"
|
||||
if(current_reagent.id in reagents_to_log)
|
||||
adminwarn_message += "[current_reagent_transfer]u of <span class='warning'>[current_reagent.name]</span>"
|
||||
|
||||
R.add_reagent(current_reagent.id, (current_reagent_transfer * multiplier), trans_data, chem_temp)
|
||||
src.remove_reagent(current_reagent.id, current_reagent_transfer)
|
||||
|
||||
@@ -607,6 +606,7 @@ trans_to_atmos(var/datum/gas_mixture/target, var/amount=1, var/multiplier=1, var
|
||||
R.color = data["blood_colour"]
|
||||
else
|
||||
R.data = data
|
||||
R.on_introduced()
|
||||
|
||||
update_total()
|
||||
my_atom.on_reagent_change()
|
||||
@@ -764,6 +764,12 @@ trans_to_atmos(var/datum/gas_mixture/target, var/amount=1, var/multiplier=1, var
|
||||
stuff += A.id
|
||||
return english_list(stuff, "no reagents")
|
||||
|
||||
/datum/reagents/proc/get_sportiness()
|
||||
var/sportiness = 1
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
sportiness *= R.sport
|
||||
return sportiness
|
||||
|
||||
/datum/reagents/proc/remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
|
||||
if(!isnum(amount))
|
||||
return 1
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
return
|
||||
|
||||
//Called after add_reagents creates a new reagent
|
||||
/datum/reagent/proc/on_new(var/data)
|
||||
/datum/reagent/proc/on_introduced(var/data)
|
||||
return
|
||||
|
||||
//Called when two reagents are mixing
|
||||
@@ -192,6 +192,8 @@
|
||||
/datum/reagent/proc/on_overdose(var/mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
|
||||
/datum/reagent/proc/OnTransfer()
|
||||
return
|
||||
|
||||
/datum/reagent/send_to_past(var/duration)
|
||||
var/static/list/resettable_vars = list(
|
||||
@@ -7172,7 +7174,14 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
|
||||
density = 3.214
|
||||
specheatcap = 1.34
|
||||
color = "#E0D3D3" //rgb: 224, 211, 211
|
||||
data = list("source" = null)
|
||||
|
||||
/datum/reagent/incense/on_introduced(var/data)
|
||||
..()
|
||||
if(!src.data["source"]) //src is necessary because of this terrible var name, but consistency!
|
||||
src.data["source"] = holder.my_atom
|
||||
|
||||
/datum/reagent/incense/proc/OnDisperse(var/turf/location)
|
||||
|
||||
/datum/reagent/incense/harebells//similar effects as holy water to cultists and vampires
|
||||
name = "Holy Incense"
|
||||
@@ -7213,7 +7222,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
|
||||
/datum/reagent/incense/moonflowers//Basically mindbreaker
|
||||
name = "Hallucinogenic Incense"
|
||||
id = INCENSE_MOONFLOWERS
|
||||
description = "This frangrance is so unsettling that it makes you question reality."
|
||||
description = "This fragrance is so unsettling that it makes you question reality."
|
||||
custom_metabolism = 0.15
|
||||
|
||||
/datum/reagent/incense/moonflowers/on_mob_life(var/mob/living/M)
|
||||
@@ -7225,7 +7234,7 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
|
||||
/datum/reagent/incense/novaflowers//Converts itself to hyperzine, but makes you hungry
|
||||
name = "Hyperactivity Incense"
|
||||
id = INCENSE_NOVAFLOWERS
|
||||
description = "This frangrance helps you focus and pull into your energy reserves to move quickly."
|
||||
description = "This fragrance helps you focus and pull into your energy reserves to move quickly."
|
||||
custom_metabolism = 0.15
|
||||
|
||||
/datum/reagent/incense/novaflowers/on_mob_life(var/mob/living/M)
|
||||
@@ -7234,3 +7243,78 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
|
||||
if(holder.get_reagent_amount(HYPERZINE) < 2)
|
||||
holder.add_reagent(HYPERZINE, 0.5)
|
||||
M.nutrition--
|
||||
|
||||
/datum/reagent/incense/banana
|
||||
name = "Banana Incense"
|
||||
id = INCENSE_BANANA
|
||||
description = "This fragrance helps you be more clumsy, so you can laugh at yourself."
|
||||
|
||||
/datum/reagent/incense/banana/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(prob(5))
|
||||
to_chat(M,"<span class='warning'>[pick("You feel like giggling!", "You feel clumsy!", "You want to honk!")]</span>")
|
||||
|
||||
/datum/reagent/incense/cabbage
|
||||
name = "Leafy Incense"
|
||||
id = INCENSE_LEAFY
|
||||
description = "This fragrance smells of fresh greens, delicious to most animals."
|
||||
|
||||
/datum/reagent/incense/cabbage/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(isanimal(M) || ismonkey(M))
|
||||
if(istype(M,/mob/living/simple_animal/hostile))
|
||||
var/mob/living/simple_animal/hostile/H = M
|
||||
switch(H.stance)
|
||||
if(HOSTILE_STANCE_ATTACK,HOSTILE_STANCE_ATTACKING)
|
||||
return
|
||||
M.start_walk_to(get_turf(data["source"]),1,6)
|
||||
|
||||
/datum/reagent/incense/booze
|
||||
name = "Alcoholic Incense"
|
||||
id = INCENSE_BOOZE
|
||||
description = "This fragrance is dense with the odor of ethanol."
|
||||
|
||||
/datum/reagent/incense/booze/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(M.slurring < 22)
|
||||
M.slurring += 10
|
||||
if(M.eye_blurry < 22)
|
||||
M.eye_blurry += 10
|
||||
|
||||
/datum/reagent/incense/vapor
|
||||
name = "Airy Incense"
|
||||
id = INCENSE_VAPOR
|
||||
description = "It burns your nostrils a little. The incense smells... clean."
|
||||
|
||||
/datum/reagent/incense/vapor/OnDisperse(var/turf/location)
|
||||
for(var/turf/simulated/T in view(2,location))
|
||||
if(T.is_wet())
|
||||
T.dry(TURF_WET_LUBE)
|
||||
T.turf_animation('icons/effects/water.dmi',"dry_floor",0,0,TURF_LAYER)
|
||||
|
||||
/datum/reagent/incense/dense
|
||||
name = "Dense Incense"
|
||||
id = INCENSE_DENSE
|
||||
description = "This isn't really a fragrance so much as tactical smoke."
|
||||
custom_metabolism = 0.25
|
||||
|
||||
/datum/reagent/incense/dense/OnDisperse(var/turf/location)
|
||||
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()
|
||||
smoke.set_up(2, 0, location) //Make 2 drifting clouds of smoke, direction
|
||||
smoke.start()
|
||||
|
||||
/datum/reagent/incense/dense/on_mob_life(var/mob/living/M)
|
||||
if(..())
|
||||
return 1
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!", "coughs!", "splutters!")]</span>")
|
||||
|
||||
/datum/reagent/incense/vale
|
||||
name = "Sporty Incense"
|
||||
id = INCENSE_CRAVE
|
||||
description = "This has what you crave. Electrolytes."
|
||||
sport = 5
|
||||
custom_metabolism = 0.15
|
||||
@@ -13,6 +13,7 @@ var/list/special_fruits = list()
|
||||
var/potency = -1
|
||||
var/hydroflags = 0
|
||||
var/datum/seed/seed
|
||||
var/fragrance
|
||||
icon = 'icons/obj/harvest.dmi'
|
||||
New(newloc, newpotency)
|
||||
if(!isnull(newpotency))
|
||||
@@ -292,6 +293,7 @@ var/list/special_fruits = list()
|
||||
potency = 30
|
||||
filling_color = "#CC6464"
|
||||
plantname = "poppies"
|
||||
fragrance = INCENSE_POPPIES
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/harebell
|
||||
name = "harebell"
|
||||
@@ -300,6 +302,7 @@ var/list/special_fruits = list()
|
||||
potency = 1
|
||||
filling_color = "#D4B2C9"
|
||||
plantname = "harebells"
|
||||
fragrance = INCENSE_HAREBELLS
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/moonflower
|
||||
name = "moonflower"
|
||||
@@ -308,6 +311,7 @@ var/list/special_fruits = list()
|
||||
potency = 25
|
||||
filling_color = "#E6E6FA"
|
||||
plantname = "moonflowers"
|
||||
fragrance = INCENSE_MOONFLOWERS
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/potato
|
||||
name = "potato"
|
||||
@@ -361,6 +365,7 @@ var/list/special_fruits = list()
|
||||
potency = 25
|
||||
filling_color = "#A2B5A1"
|
||||
plantname = "cabbage"
|
||||
fragrance = INCENSE_LEAFY
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/berries
|
||||
name = "bunch of berries"
|
||||
@@ -555,6 +560,7 @@ var/list/special_fruits = list()
|
||||
filling_color = "#FCF695"
|
||||
trash = /obj/item/weapon/bananapeel
|
||||
plantname = "banana"
|
||||
fragrance = INCENSE_BANANA
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/bluespacebanana
|
||||
name = "bluespace banana"
|
||||
@@ -746,6 +752,7 @@ var/list/special_fruits = list()
|
||||
icon_state = "plumphelmet"
|
||||
filling_color = "#F714BE"
|
||||
plantname = "plumphelmet"
|
||||
fragrance = INCENSE_BOOZE
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/walkingmushroom
|
||||
name = "walking mushroom"
|
||||
@@ -797,6 +804,7 @@ var/list/special_fruits = list()
|
||||
icon_state = "grassclump"
|
||||
filling_color = "#32CD32"
|
||||
plantname = "grass"
|
||||
fragrance = INCENSE_DENSE
|
||||
var/stacktype = /obj/item/stack/tile/grass
|
||||
var/tile_coefficient = 0.02 // 1/50
|
||||
|
||||
@@ -874,6 +882,7 @@ var/list/special_fruits = list()
|
||||
desc = "A thin organic film bearing seeds, held slightly aloft by internal gasses and a reservoir of chemicals."
|
||||
icon_state = "vaporsac"
|
||||
filling_color = "#FFFFFF"
|
||||
fragrance = INCENSE_VAPOR
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/vaporsac/attack(mob/living/M, mob/user, def_zone, eat_override = 0)
|
||||
pop(user)
|
||||
|
||||
@@ -450,7 +450,8 @@
|
||||
var/obj/item/I = mover
|
||||
if(istype(I, /obj/item/weapon/dummy) || istype(I, /obj/item/projectile))
|
||||
return
|
||||
if(prob(75))
|
||||
var/mob/mob = get_mob_by_key(mover.fingerprintslast)
|
||||
if(prob(75) || (mob && mob.reagents.get_sportiness()>=5))
|
||||
I.forceMove(src)
|
||||
for(var/mob/M in viewers(src))
|
||||
M.show_message("\the [I] lands in \the [src].", 1)
|
||||
|
||||
@@ -105,7 +105,7 @@ proc/do_surgery(mob/living/M, mob/living/user, obj/item/tool)
|
||||
var/clumsy = 0
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
clumsy = ((M_CLUMSY in H.mutations) && prob(50))
|
||||
clumsy = (tool.clumsy_check(H) && prob(50))
|
||||
|
||||
var/target_area = user.zone_sel ? user.zone_sel.selecting : get_random_zone_sel()
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.0 KiB |
Reference in New Issue
Block a user