why do I even bother

This commit is contained in:
Fermi
2019-05-21 02:53:17 +01:00
parent 773431bb8d
commit a9bc75fc0e
21 changed files with 483 additions and 236 deletions
@@ -273,7 +273,7 @@
//H.update_body()
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)
message_admins("attempting to update sprite")
//message_admins("attempting to update sprite")
if(!H)//no args
CRASH("H = null")
if(!LAZYLEN(H.internal_organs))//if they have no organs, we're done
@@ -21,6 +21,10 @@
var/statuscheck = FALSE
var/prev_size = 6
/obj/item/organ/genital/penis/Initialize()
. = ..()
prev_size = length
cached_length = length
/obj/item/organ/genital/penis/update_size()
var/mob/living/carbon/human/o = owner
@@ -33,32 +37,32 @@
length = cached_length
size = 1
if(statuscheck == TRUE)
message_admins("Attempting to remove.")
//message_admins("Attempting to remove.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = FALSE
if(5 to 8) //If modest size
length = cached_length
size = 2
if(statuscheck == TRUE)
message_admins("Attempting to remove.")
//message_admins("Attempting to remove.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = FALSE
if(9 to INFINITY) //If massive
length = cached_length
size = 3 //no new sprites for anything larger yet
if(statuscheck == FALSE)
message_admins("Attempting to apply.")
//message_admins("Attempting to apply.")
o.remove_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = TRUE
if(15 to INFINITY)
length = cached_length
size = 3 //no new sprites for anything larger yet
if(statuscheck == FALSE)
message_admins("Attempting to apply.")
//message_admins("Attempting to apply.")
o.apply_status_effect(/datum/status_effect/chem/PElarger)
statuscheck = TRUE
message_admins("Pinas size: [size], [cached_length], [o]")
message_admins("2. size vs prev_size")
//message_admins("Pinas size: [size], [cached_length], [o]")
//message_admins("2. size vs prev_size")
if (round(length) > round(prev_size))
to_chat(o, "<span class='warning'>Your [pick("phallus", "willy", "dick", "prick", "member", "tool", "gentleman's organ", "cock", "wang", "knob", "dong", "joystick", "pecker", "johnson", "weenie", "tadger", "schlong", "thirsty ferret", "baloney pony", "schlanger")] [pick("swells up to", "flourishes into", "expands into", "bursts forth into", "grows eagerly into", "amplifys into")] a [uppertext(length)] inch penis.</b></span>")
else if (round(length) < round(prev_size))
@@ -14,8 +14,8 @@
id = "fermi" //It's meeee
taste_description = "If affection had a taste, this would be it."
var/ImpureChem = "toxin" // What chemical is metabolised with an inpure reaction
var/InverseChemVal = 0 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
var/InverseChem = "Initropidril" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
var/InverseChem = "toxin" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/DoNotSplit = FALSE // If impurity is handled within the main chem itself
///datum/reagent/fermi/on_mob_life(mob/living/carbon/M)
@@ -34,7 +34,7 @@
//This should process fermichems to find out how pure they are and what effect to do.
//TODO: add this to the main on_mob_add proc, and check if Fermichem = TRUE
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M)
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M, amount)
. = ..()
if(!M)
return
@@ -44,15 +44,15 @@
if (src.purity == 1 || src.DoNotSplit == TRUE)
return
else if (src.InverseChemVal > src.purity)
M.reagents.remove_reagent(src, volume, FALSE)
M.reagents.add_reagent(src.InverseChem, volume, FALSE, other_purity = 1)
M.reagents.remove_reagent(src.id, amount, FALSE)
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
message_admins("all convered to [src.InverseChem]")
return
else
//var/pureVol = volume * purity
var/impureVol = volume * (1 - (volume * purity))
message_admins("splitting [src] [volume] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src, (volume*impureVol), FALSE)
//var/pureVol = amount * purity
var/impureVol = amount * (1 - purity)
message_admins("splitting [src.id] [amount] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src.id, (impureVol), FALSE)
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
return
@@ -66,15 +66,15 @@
if (other_purity == 1 || src.DoNotSplit == TRUE)
return
else if (src.InverseChemVal > other_purity)
M.reagents.remove_reagent(src, amount, FALSE)
M.reagents.remove_reagent(src.id, amount, FALSE)
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
message_admins("all convered to [src.InverseChem]")
return
else
//var/pureVol =
var/impureVol = amount * (1 - (amount * other_purity))
message_admins("splitting [src] [volume] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src, impureVol, FALSE)
var/impureVol = amount * (1 - other_purity)
message_admins("splitting [src] [amount] into [src.ImpureChem] [impureVol]")
M.reagents.remove_reagent(src.id, impureVol, FALSE)
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
return
@@ -111,7 +111,7 @@
taste_description = "wiggly cosmic dust."
color = "#5020H4" // rgb: 50, 20, 255
overdose_threshold = 15
addiction_threshold = 20
addiction_threshold = 15
metabolization_rate = 0.5 * REAGENTS_METABOLISM
addiction_stage2_end = 30
addiction_stage3_end = 40
@@ -525,7 +525,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/startHunger
/datum/reagent/fermi/SDZF/on_mob_life(mob/living/carbon/M) //If you're bad at fermichem, turns your clone into a zombie instead.
message_admins("SGZF ingested")
//message_admins("SGZF ingested")
switch(current_cycle)//Pretends to be normal
if(20)
to_chat(M, "<span class='notice'>You feel the synethic cells rest uncomfortably within your body as they start to pulse and grow rapidly.</span>")
@@ -577,7 +577,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
to_chat(M, "<span class='warning'>A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...</span>")
if(87 to INFINITY)//purges chemical fast, producing a "slime" for each one. Said slime is weak to fire. TODO: turn tumour slime into real variant.
M.adjustToxLoss(1, 0)
message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20")
//message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 20")
..()
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -821,6 +821,7 @@ Buginess level: works as intended - except teleport makes sparks for some reason
var/mob/living/simple_animal/hostile/retaliate/ghost/G = null
var/antiGenetics = 255
var/sleepytime = 0
InverseChemVal = 0.25
//var/Svol = volume
/datum/reagent/fermi/astral/on_mob_life(mob/living/M) // Gives you the ability to astral project for a moment!
@@ -1215,10 +1216,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "MissingLove", /datum/mood_event/MissingLove)
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "InLove")
if(prob(10))
owner.Stun(10)
owner.emote("whimper")//does this exist?
to_chat(owner, "You're overcome with a desire to see [love].")
owner.adjustBrainLoss(5)
M.Stun(10)
M.emote("whimper")//does this exist?
to_chat(M, "You're overcome with a desire to see [love].")
M.adjustBrainLoss(5)
..()
/datum/reagent/fermi/enthrallExplo/on_mob_delete(mob/living/carbon/M)
@@ -1446,9 +1447,36 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
name = "Fermis Test Reagent"
id = "fermiTest"
description = "You should be really careful with this...! Also, how did you get this?"
data = "Big bang"
data = list("Big bang" = 1, "please work" = 2)
/datum/reagent/fermi/fermiTest/on_new()
..()
message_admins("FermiTest addition!")
var/location = get_turf(holder.my_atom)
if(purity < 0.34 || purity == 1)
var/datum/effect_system/foam_spread/s = new()
s.set_up(volume*2, location, holder)
s.start()
if((purity < 0.67 && purity >= 0.34)|| purity == 1)
var/datum/effect_system/smoke_spread/chem/s = new()
s.set_up(holder, volume*2, location)
s.start()
if(purity >= 0.67)
for (var/datum/reagent/reagent in holder.reagent_list)
if (istype(reagent, /datum/reagent/fermi))
var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
Ferm.FermiExplode(src, holder.my_atom, holder, holder.total_volume, holder.chem_temp, holder.pH)
else
var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.id]
Ferm.on_reaction(holder, reagent.volume)
for(var/mob/M in viewers(8, location))
to_chat(M, "<span class='danger'>The solution reacts dramatically, with a meow!</span>")
playsound(get_turf(M), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1)
holder.clear_reagents()
/datum/reagent/fermi/fermiTest/on_merge()
..()
message_admins("FermiTest addition!")
var/location = get_turf(holder.my_atom)
if(purity < 0.34 || purity == 1)
var/datum/effect_system/foam_spread/s = new()
@@ -10,7 +10,7 @@
//Called when temperature is above a certain threshold
//....Is this too much?
/datum/chemical_reaction/fermi/proc/FermiExplode(src, var/atom/my_atom, datum/reagents/holder, volume, temp, pH, Reaction, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
/datum/chemical_reaction/fermi/proc/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH, Exploding = FALSE) //You can get holder by reagents.holder WHY DID I LEARN THIS NOW???
//var/Svol = volume
if (Exploding == TRUE)
return
@@ -19,13 +19,13 @@
var/ImpureTot = 0
var/pHmod = 1
var/turf/T = get_turf(my_atom)
if(temp>600)//if hot, start a fire
if(temp>500)//if hot, start a fire
switch(temp)
if (601 to 800)
if (500 to 750)
for(var/turf/turf in range(1,T))
new /obj/effect/hotspot(turf)
//volume /= 3
if (801 to 1100)
if (751 to 1100)
for(var/turf/turf in range(2,T))
new /obj/effect/hotspot(turf)
//volume /= 4
@@ -48,8 +48,8 @@
pHmod = 1.5
for (var/datum/reagent/reagent in my_atom.reagents.reagent_list)
if (istype(reagent, /datum/reagent/fermi))
var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
Ferm.FermiExplode(src, my_atom, holder, volume, temp, pH, Exploding = TRUE)
//var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id]
//Ferm.FermiExplode(src, my_atom, volume, temp, pH, Exploding = TRUE)
continue //Don't allow fermichems into the mix (fermi explosions are handled elsewhere and it's a huge pain)
R.add_reagent(reagent, reagent.volume)
if (reagent.purity < 0.6)
@@ -64,7 +64,7 @@
my_atom.reagents.clear_reagents()
return
/datum/chemical_reaction/fermi/eigenstate
/datum/chemical_reaction/fermi/eigenstate//done
name = "Eigenstasium"
id = "eigenstate"
results = list("eigenstate" = 1)
@@ -81,7 +81,7 @@
CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = -2.5 //Temperature change per 1u produced
HIonRelease = 0.01 //pH change per 1u reaction
HIonRelease = 0.08 //pH change per 1u reaction
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
@@ -98,8 +98,8 @@
name = "Synthetic-derived growth factor"
id = "SDGF"
results = list("SDGF" = 3)
required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//required_reagents = list("plasma" = 1, "stable_plasma" = 1, "sugar" = 1)
required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 500 // Upper end for above
@@ -117,17 +117,17 @@
FermiExplode = TRUE // If the chemical explodes in a special way
PurityMin = 0.25
/datum/chemical_reaction/fermi/SDGF/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
var/turf/T = get_turf(holder)
/datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma!! Spooky..! be careful!! TODO: Add teratoma slime subspecies
var/turf/T = get_turf(my_atom)
var/mob/living/simple_animal/slime/S = new(T,"grey")//should work, in theory
S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)//I dunno how slimes work cause fire is burny
S.name = "Living teratoma"
S.real_name = "Living teratoma"//horrifying!!
S.rabid = 1//Make them an angery boi, grr grr
to_chat("<span class='warning'>The cells clump up into a horrifying tumour!</span>")
holder.clear_reagents()
my_atom.reagents.clear_reagents()
/datum/chemical_reaction/fermi/BElarger
/datum/chemical_reaction/fermi/BElarger //done
name = "Sucubus milk"
id = "BElarger"
results = list("BElarger" = 6)
@@ -136,29 +136,29 @@
OptimalTempMin = 200
OptimalTempMax = 800
ExplodeTemp = 900
OptimalpHMin = 5
OptimalpHMax = 10
OptimalpHMin = 8
OptimalpHMax = 12
ReactpHLim = 3
CatalystFact = 0
CurveSharpT = 2
CurveSharppH = 2
ThermicConstant = 1
HIonRelease = 0.1
RateUpLim = 10
HIonRelease = 0.5
RateUpLim = 5
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.1
/datum/chemical_reaction/fermi/BElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
/datum/chemical_reaction/fermi/BElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
//var/obj/item/organ/genital/breasts/B =
new /obj/item/organ/genital/breasts(get_turf(holder))
var/list/seen = viewers(5, get_turf(holder))
new /obj/item/organ/genital/breasts(get_turf(my_atom))
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a pair of breasts!</b></span>")//OwO
holder.clear_reagents()
my_atom.reagents.clear_reagents()
..()
/datum/chemical_reaction/fermi/PElarger //Vars needed
/datum/chemical_reaction/fermi/PElarger //done
name = "Incubus draft"
id = "PElarger"
results = list("PElarger" = 3)
@@ -168,53 +168,52 @@
OptimalTempMin = 200
OptimalTempMax = 800
ExplodeTemp = 900
OptimalpHMin = 5
OptimalpHMax = 10
OptimalpHMin = 2
OptimalpHMax = 6
ReactpHLim = 3
CatalystFact = 0
CurveSharpT = 2
CurveSharppH = 2
ThermicConstant = 1
HIonRelease = 0.1
RateUpLim = 10
HIonRelease = -0.5
RateUpLim = 5
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.1
/datum/chemical_reaction/fermi/PElarger/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
/datum/chemical_reaction/fermi/PElarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
//var/obj/item/organ/genital/penis/nP =
new /obj/item/organ/genital/penis(get_turf(holder))
var/list/seen = viewers(5, get_turf(holder))
new /obj/item/organ/genital/penis(get_turf(my_atom))
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The reaction suddenly condenses, creating a penis!</b></span>")//OwO
holder.clear_reagents()
my_atom.reagents.clear_reagents()
..()
/datum/chemical_reaction/fermi/astral //Vars needed
/datum/chemical_reaction/fermi/astral //done
name = "Astrogen"
id = "astral"
results = list("astral" = 3)
required_reagents = list("eigenstasium" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5)
//required_reagents = list("stable_plasma" = 5, "slimejelly" = 5, "synthflesh" = 10, "blood" = 10)
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMax = 800
ExplodeTemp = 900
OptimalpHMin = 5
OptimalpHMax = 10
ReactpHLim = 3
OptimalpHMin = 12
OptimalpHMax = 13
ReactpHLim = 2
CatalystFact = 0
CurveSharpT = 2
CurveSharpT = 4
CurveSharppH = 2
ThermicConstant = 1
HIonRelease = 0.1
ThermicConstant = 10
HIonRelease = 0.5
RateUpLim = 10
FermiChem = TRUE
FermiExplode = TRUE
PurityMin = 0.25
PurityMin = 0.25 // explode purity!
/datum/chemical_reaction/fermi/enthrall //Vars needed
/datum/chemical_reaction/fermi/enthrall//done
name = "MKUltra"
id = "enthrall"
results = list("enthrall" = 3)
@@ -275,21 +274,21 @@
//var/enthrallID = B.get_blood_data()
*/
/datum/chemical_reaction/fermi/enthrall/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
var/turf/T = get_turf(holder)
/datum/chemical_reaction/fermi/enthrall/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(1000)
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent("enthrallExplo", volume)
s.set_up(R, volume, T)
s.start()
holder.clear_reagents()
my_atom.reagents.clear_reagents()
//..() //Please don't kill everyone too.
/datum/chemical_reaction/fermi/hatmium
/datum/chemical_reaction/fermi/hatmium // done
name = "Hat growth serum"
id = "hatmium"
results = list("hatmium" = 5)
required_reagents = list("whiskey" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "blackpepper" = 3)
required_reagents = list("whiskey" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1)
//mix_message = ""
//FermiChem vars:
OptimalTempMin = 500
@@ -301,27 +300,27 @@
//CatalystFact = 0 //To do 1
CurveSharpT = 4
CurveSharppH = 0.5
ThermicConstant = -2.5
HIonRelease = 0.01
ThermicConstant = -2
HIonRelease = -0.05
RateUpLim = 5
FermiChem = TRUE
//FermiExplode = FALSE
//PurityMin = 0.15
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, datum/reagents/holder, volume, temp, pH, Reaction)
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(holder.my_atom))
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH)
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom))
hat.animate_atom_living()
var/list/seen = viewers(5, get_turf(holder.my_atom))
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The makes an off sounding pop, as a hat suddenly climbs out of the beaker!</b></span>")
holder.clear_reagents()
my_atom.reagents.clear_reagents()
..()
/datum/chemical_reaction/fermi/furranium //low temp and medium pH
/datum/chemical_reaction/fermi/furranium //low temp and medium pH - done
name = "Furranium"
id = "furranium"
results = list("furranium" = 5)
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 1, "salglu_solution" = 1)
required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1)
//mix_message = ""
//FermiChem vars:
OptimalTempMin = 350
@@ -341,7 +340,7 @@
//PurityMin = 0.15
//Nano-b-gone
/datum/chemical_reaction/fermi/naninte_b_gone
/datum/chemical_reaction/fermi/naninte_b_gone//done
name = "Naninte bain"
id = "naninte_b_gone"
results = list("naninte_b_gone" = 5)
@@ -357,9 +356,9 @@
//CatalystFact = 0 //To do 1
CurveSharpT = 4
CurveSharppH = 2
ThermicConstant = -2.5
ThermicConstant = 1
HIonRelease = 0.01
RateUpLim = 5
RateUpLim = 100
FermiChem = TRUE
//FermiExplode = FALSE
//PurityMin = 0.15
@@ -9,6 +9,11 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
item_flags = NODROP //Tips their hat!
/*
/obj/item/clothing/head/hattip/equipped(mob/living/carbon/human/user, slot)
C = user //grumble grumble loc
*/
/obj/item/clothing/head/hattip/attack_hand(mob/user)
if(iscarbon(user))
var/mob/living/carbon/C = user
@@ -19,10 +24,23 @@
user.emote("me",1,"admires such a spiffy hat.",TRUE)
return ..()
/obj/item/clothing/head/hattip/speechModification(message)
/obj/item/clothing/head/hattip/speechModification(message, /mob/living/carbon/C)
..()
var/mob/living/carbon/C = get_wearer()//user
//if(istype(C, /mob/living/carbon/C))
var/obj/item/organ/tongue/T = C.getorganslot(ORGAN_SLOT_TONGUE)
if (T.name == "fluffy tongue")
if(prob(0.01))
message += "\" and tips their hat. \"swpy's sappin' my swentwy uwu!!"
return message
message += "\" and tips their hat. \"[pick("weehaw!", "bwoy howdy.", "dawn tuutin'.", "weww don't that beat aww.", "whoooowee, wouwd ya wook at that!", "whoooowee! makin' bwacon!", "cweam gwavy!", "yippekeeyah-heeyapeeah-kwayoh!", "mwove 'em uut!", "gwiddy up!")]"
return message
if(prob(0.01))
message += "\" and tips their hat. \"Spy's sappin' my Sentry!"
return message
message += "\" and tips their hat. \"[pick("Yeehaw!", "Boy howdy.", "Darn tootin'.", "Well don't that beat all.", "Whoooowee, would ya look at that!", "Whoooowee! Makin' bacon!", "Cream Gravy!", "Yippekeeyah-heeyapeeah-kayoh!", "Move 'em out!", "Giddy up!")]"
return message
/obj/item/clothing/head/hattip/proc/get_wearer()
return loc