Could this be the final commit?!

This commit is contained in:
Fermi
2019-05-25 16:12:46 +01:00
parent 4b8cb81752
commit e3d3f30ea9
10 changed files with 103 additions and 46 deletions

View File

@@ -53,22 +53,22 @@
//Effects of bloodloss //Effects of bloodloss
var/word = pick("dizzy","woozy","faint") var/word = pick("dizzy","woozy","faint")
switch(blood_volume) //switch(blood_volume) Used to be a switch statement; now it uses ifs (so blood ratio can work.) Check my logic please.
if((BLOOD_VOLUME_OKAY * blood_ratio) to (BLOOD_VOLUME_SAFE * blood_ratio)) if(((BLOOD_VOLUME_OKAY * blood_ratio) < blood_volume) && (blood_volume <= (BLOOD_VOLUME_SAFE * blood_ratio)))
if(prob(5)) if(prob(5))
to_chat(src, "<span class='warning'>You feel [word].</span>") to_chat(src, "<span class='warning'>You feel [word].</span>")
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.01, 1)) adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.01, 1))
if((BLOOD_VOLUME_BAD * blood_ratio) to (BLOOD_VOLUME_OKAY*blood_ratio)) else if(((BLOOD_VOLUME_BAD * blood_ratio) < blood_volume) && (blood_volume <=(BLOOD_VOLUME_OKAY*blood_ratio)))
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.02, 1)) adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.02, 1))
if(prob(5)) if(prob(5))
blur_eyes(6) blur_eyes(6)
to_chat(src, "<span class='warning'>You feel very [word].</span>") to_chat(src, "<span class='warning'>You feel very [word].</span>")
if((BLOOD_VOLUME_SURVIVE * blood_ratio) to (BLOOD_VOLUME_BAD * blood_ratio)) else if( ((BLOOD_VOLUME_SURVIVE * blood_ratio) < blood_volume) && (blood_volume <= (BLOOD_VOLUME_BAD * blood_ratio)))
adjustOxyLoss(5) adjustOxyLoss(5)
if(prob(15)) if(prob(15))
Unconscious(rand(20,60)) Unconscious(rand(20,60))
to_chat(src, "<span class='warning'>You feel extremely [word].</span>") to_chat(src, "<span class='warning'>You feel extremely [word].</span>")
if(-INFINITY to (BLOOD_VOLUME_SURVIVE * blood_ratio)) else if((-INFINITY < blood_volume) && (blood_volume <= (BLOOD_VOLUME_SURVIVE * blood_ratio)))
if(!has_trait(TRAIT_NODEATH)) if(!has_trait(TRAIT_NODEATH))
death() death()
@@ -309,12 +309,23 @@
/mob/living/proc/DecreaseBloodVol(var/value) /mob/living/proc/DecreaseBloodVol(var/value)
blood_ratio -= value blood_ratio -= value
//This is a terrible way of handling it.
/mob/living/proc/ResetBloodVol() /mob/living/proc/ResetBloodVol()
if(ishuman(src) && src.has_trait(TRAIT_HIGH_BLOOD)) if(ishuman(src))
var/mob/living/carbon/human/H = src
if (src.has_trait(TRAIT_HIGH_BLOOD))
blood_ratio = 1.2 blood_ratio = 1.2
H.handle_blood()
return
blood_ratio = 1
H.handle_blood()
return
blood_ratio = 1 blood_ratio = 1
/mob/living/proc/AdjustBloodVol(var/value) /mob/living/proc/AdjustBloodVol(var/value)
if(blood_ratio == value) if(blood_ratio == value)
return return
blood_ratio = value blood_ratio = value
if(ishuman(src))
var/mob/living/carbon/human/H = src
H.handle_blood()

View File

@@ -353,7 +353,8 @@ im
var/iconhtml = icon2html(A, seen) var/iconhtml = icon2html(A, seen)
for(var/mob/M in seen) for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the temperature!</span>") to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the temperature!</span>")
playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1) playsound(get_turf(A), 'sound/FermiChem/heatmelt.ogg', 80, 1)
qdel(A) qdel(A)
return return
else if(istype(A, /obj/item/reagent_containers/glass) && ((pH < 0.5) || (pH > 13.5)))//maybe make it higher? Though..Hmm! else if(istype(A, /obj/item/reagent_containers/glass) && ((pH < 0.5) || (pH > 13.5)))//maybe make it higher? Though..Hmm!
@@ -361,7 +362,7 @@ im
var/iconhtml = icon2html(A, seen) var/iconhtml = icon2html(A, seen)
for(var/mob/M in seen) for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the extreme pH!</span>") to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the extreme pH!</span>")
playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1) playsound(get_turf(A), 'sound/FermiChem/acidmelt.ogg', 80, 1)
qdel(A) qdel(A)
return return

View File

@@ -167,12 +167,12 @@
/obj/item/reagent_containers/glass/beaker/plastic /obj/item/reagent_containers/glass/beaker/plastic
name = "x-large beaker" name = "x-large beaker"
desc = "An extra-large beaker. Can hold up to 150 units." desc = "An extra-large beaker. Can hold up to 150 units. Is able to resist acid and alkaline solutions, but melts at 444K"
icon_state = "beakerwhite" icon_state = "beakerwhite"
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000) materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
volume = 150 volume = 150
amount_per_transfer_from_this = 10 amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,150) possible_transfer_amounts = list(5,10,15,20,25,30,50,100,150)
/obj/item/reagent_containers/glass/beaker/plastic/update_icon() /obj/item/reagent_containers/glass/beaker/plastic/update_icon()
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
@@ -186,7 +186,7 @@
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000) materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
volume = 200 volume = 200
amount_per_transfer_from_this = 10 amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,150,200) possible_transfer_amounts = list(5,10,15,20,25,30,50,100,200)
/obj/item/reagent_containers/glass/beaker/noreact /obj/item/reagent_containers/glass/beaker/noreact
name = "cryostasis beaker" name = "cryostasis beaker"

View File

@@ -121,15 +121,15 @@
message_admins("PElarge started!") message_admins("PElarge started!")
var/mob/living/carbon/human/o = owner var/mob/living/carbon/human/o = owner
var/items = o.get_contents() var/items = o.get_contents()
for(var/obj/item/W in items)
if(W == o.w_uniform || W == o.wear_suit)
o.dropItemToGround(W, TRUE)
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
if(o.w_uniform || o.wear_suit) if(o.w_uniform || o.wear_suit)
to_chat(o, "<span class='warning'>Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!</b></span>") to_chat(o, "<span class='warning'>Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!</b></span>")
owner.visible_message("<span class='boldnotice'>[o]'s schlong suddenly bursts forth, ripping their clothes off!'</span>") owner.visible_message("<span class='boldnotice'>[o]'s schlong suddenly bursts forth, ripping their clothes off!'</span>")
else else
to_chat(o, "<span class='notice'>Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.</b></span>") to_chat(o, "<span class='notice'>Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.</b></span>")
for(var/obj/item/W in items)
if(W == o.w_uniform || W == o.wear_suit)
o.dropItemToGround(W, TRUE)
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
return ..() return ..()
@@ -286,11 +286,8 @@
else else
else if (resistanceTally > 150) else if (resistanceTally > 150)
enthrallTally *= 0.5
phase = -1 phase = -1
resistanceTally = 0
to_chat(owner, "<span class='warning'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>") to_chat(owner, "<span class='warning'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>")
to_chat(owner, "<span class='big redtext'><i>You're now free of [master]'s influence, and fully independant oncemore.'</i></span>")
owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. owner.remove_status_effect(src) //If resisted in phase 1, effect is removed.
if(prob(10)) if(prob(10))
if(owner.lewd) if(owner.lewd)
@@ -311,6 +308,7 @@
enthrallTally *= 0.5 enthrallTally *= 0.5
phase -= 1 phase -= 1
resistanceTally = 0 resistanceTally = 0
resistGrowth = 0
to_chat(owner, "<span class='notice'><i>You manage to shake some of the effects from your addled mind, however you can still feel yourself drawn towards [master].</i></span>") to_chat(owner, "<span class='notice'><i>You manage to shake some of the effects from your addled mind, however you can still feel yourself drawn towards [master].</i></span>")
//owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment, //owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment,
if(prob(10)) if(prob(10))
@@ -321,6 +319,7 @@
enthrallTally = 0 enthrallTally = 0
phase -= 1 phase -= 1
resistanceTally = 0 resistanceTally = 0
resistGrowth = 0
to_chat(owner, "<span class='notice'><i>The separation from [(owner.lewd?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>") to_chat(owner, "<span class='notice'><i>The separation from [(owner.lewd?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>")
owner.remove_trait(TRAIT_PACIFISM, "MKUltra") owner.remove_trait(TRAIT_PACIFISM, "MKUltra")
if(prob(2)) if(prob(2))
@@ -334,6 +333,7 @@
to_chat(owner, "<span class='notice'><i>Your mind starts to heal, fixing the damage caused by the massive ammounts of chem injected into your system earlier, .</i></span>") to_chat(owner, "<span class='notice'><i>Your mind starts to heal, fixing the damage caused by the massive ammounts of chem injected into your system earlier, .</i></span>")
M.slurring = 0 M.slurring = 0
M.confused = 0 M.confused = 0
resistGrowth = 0
else else
return//If you break the mind of someone, you can't use status effects on them. return//If you break the mind of someone, you can't use status effects on them.
@@ -521,6 +521,7 @@
redirect_component = null redirect_component = null
UnregisterSignal(owner, COMSIG_MOVABLE_HEAR) UnregisterSignal(owner, COMSIG_MOVABLE_HEAR)
owner.remove_trait(TRAIT_PACIFISM, "MKUltra") owner.remove_trait(TRAIT_PACIFISM, "MKUltra")
to_chat(owner, "<span class='big redtext'><i>You're now free of [master]'s influence, and fully independant oncemore!'</i></span>")
//UnregisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL) //Should still make custom commands work after freedom, need to check. //UnregisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL) //Should still make custom commands work after freedom, need to check.
/* /*
@@ -643,7 +644,7 @@
return return
else else
deltaResist = 2 + resistGrowth deltaResist = 2 + resistGrowth
resistGrowth += 0.1 resistGrowth += 0.05
//distance modifer //distance modifer
switch(DistApart) switch(DistApart)

View File

@@ -284,9 +284,14 @@
if(istype(O, /obj/item/organ/genital)) if(istype(O, /obj/item/organ/genital))
organCheck = TRUE organCheck = TRUE
if (organCheck == FALSE) if (organCheck == FALSE)
if(ishuman(src))
dna.features["genitals_use_skintone"] = TRUE dna.features["genitals_use_skintone"] = TRUE
dna.species.use_skintones = TRUE dna.species.use_skintones = TRUE
return return
//So people who haven't set stuff up don't get rainbow surprises.
dna.features["cock_color"] = "#[dna.features["mcolor"]]"
dna.features["breasts_color"] = "#[dna.features["mcolor"]]"
return
/datum/species/proc/handle_genitals(mob/living/carbon/human/H) /datum/species/proc/handle_genitals(mob/living/carbon/human/H)
//message_admins("attempting to update sprite") //message_admins("attempting to update sprite")

View File

@@ -630,6 +630,20 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M) /datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M)
. = ..() . = ..()
if(!ishuman(M)) //The monkey clause
if(volume >= 10)
var/turf/T = get_turf(M)
var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T)
var/list/seen = viewers(8, T)
for(var/mob/S in seen)
to_chat(S, "<span class='warning'>A pair of breasts suddenly fly out of the [M]!</b></span>")
//var/turf/T2 = pick(turf in view(5, M))
var/T2 = get_random_station_turf()
M.adjustBruteLoss(5)
M.Knockdown(50)
B.throw_at(T2, 8, 1)
M.reagents.remove_reagent(src.id, 1000)
return
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
H.genital_override = TRUE H.genital_override = TRUE
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts") var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
@@ -637,13 +651,14 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
H.emergent_genital_call() H.emergent_genital_call()
message_admins("No breasts found on init!") message_admins("No breasts found on init!")
return return
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5) var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
B.prev_size = B.size B.prev_size = B.size
B.cached_size = sizeConv[B.size] B.cached_size = sizeConv[B.size]
message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big! message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big!
/datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size /datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size
if(!ishuman(M))//Just in case
return
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts") var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts")
if(!B) //If they don't have breasts, give them breasts. if(!B) //If they don't have breasts, give them breasts.
@@ -742,6 +757,19 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
/datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M) /datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M)
. = ..() . = ..()
if(!ishuman(M)) //Just monkeying around.
if(volume >= 10)
var/turf/T = get_turf(M)
var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T)
var/list/seen = viewers(8, T)
for(var/mob/S in seen)
to_chat(S, "<span class='warning'>A penis suddenly flies out of the [M]!</b></span>")
var/T2 = get_random_station_turf()
M.adjustBruteLoss(5)
M.Knockdown(50)
P.throw_at(T2, 8, 1)
M.reagents.remove_reagent(src.id, 1000)
return
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
H.genital_override = TRUE H.genital_override = TRUE
var/obj/item/organ/genital/penis/P = M.getorganslot("penis") var/obj/item/organ/genital/penis/P = M.getorganslot("penis")
@@ -754,6 +782,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
message_admins("init P len chem: [P.length], prev: [P.prev_size], cache = [P.cached_length]") message_admins("init P len chem: [P.length], prev: [P.prev_size], cache = [P.cached_length]")
/datum/reagent/fermi/PElarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch. /datum/reagent/fermi/PElarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch.
if(!ishuman(M))
return
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
var/obj/item/organ/genital/penis/P = M.getorganslot("penis") var/obj/item/organ/genital/penis/P = M.getorganslot("penis")
if(!P) if(!P)

View File

@@ -85,7 +85,7 @@
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value) CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = 5 //Temperature change per 1u produced ThermicConstant = 5 //Temperature change per 1u produced
HIonRelease = -0.1 //pH change per 1u reaction HIonRelease = -0.1 //pH change per 1u reaction
RateUpLim = 5.5 //Optimal/max rate possible if all conditions are perfect RateUpLim = 55 //Optimal/max rate possible if all conditions are perfect (NEEDS TO BE A MULTIPLE OF 10 IF RESULTS IS DOWN BY A FACTOR OF 10)
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way FermiExplode = FALSE //If the chemical explodes in a special way
@@ -115,7 +115,7 @@
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value) CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = -5 // Temperature change per 1u produced ThermicConstant = -5 // Temperature change per 1u produced
HIonRelease = 0.05 // pH change per 1u reaction HIonRelease = 0.05 // pH change per 1u reaction
RateUpLim = 5 // Optimal/max rate possible if all conditions are perfect RateUpLim = 20 // Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
FermiExplode = TRUE // If the chemical explodes in a special way FermiExplode = TRUE // If the chemical explodes in a special way
PurityMin = 0.25 PurityMin = 0.25
@@ -151,7 +151,7 @@
CurveSharppH = 2 CurveSharppH = 2
ThermicConstant = 1 ThermicConstant = 1
HIonRelease = 0.5 HIonRelease = 0.5
RateUpLim = 5 RateUpLim = 50
FermiChem = TRUE FermiChem = TRUE
FermiExplode = TRUE FermiExplode = TRUE
PurityMin = 0.1 PurityMin = 0.1
@@ -183,7 +183,7 @@
CurveSharppH = 2 CurveSharppH = 2
ThermicConstant = 1 ThermicConstant = 1
HIonRelease = -0.5 HIonRelease = -0.5
RateUpLim = 5 RateUpLim = 50
FermiChem = TRUE FermiChem = TRUE
FermiExplode = TRUE FermiExplode = TRUE
PurityMin = 0.1 PurityMin = 0.1
@@ -215,7 +215,7 @@
CurveSharppH = 1 CurveSharppH = 1
ThermicConstant = 20 ThermicConstant = 20
HIonRelease = -0.5 HIonRelease = -0.5
RateUpLim = 10 RateUpLim = 20
FermiChem = TRUE FermiChem = TRUE
FermiExplode = TRUE FermiExplode = TRUE
PurityMin = 0.25 // explode purity! PurityMin = 0.25 // explode purity!
@@ -297,7 +297,7 @@
CurveSharppH = 0.5 CurveSharppH = 0.5
ThermicConstant = -2 ThermicConstant = -2
HIonRelease = -0.05 HIonRelease = -0.05
RateUpLim = 5 RateUpLim = 50
FermiChem = TRUE FermiChem = TRUE
FermiExplode = TRUE FermiExplode = TRUE
PurityMin = 0.5 PurityMin = 0.5
@@ -328,7 +328,7 @@
CurveSharppH = 0.5 CurveSharppH = 0.5
ThermicConstant = -10 ThermicConstant = -10
HIonRelease = -0.1 HIonRelease = -0.1
RateUpLim = 10 RateUpLim = 20
FermiChem = TRUE FermiChem = TRUE
PurityMin = 0.30 PurityMin = 0.30
@@ -352,7 +352,7 @@
CurveSharppH = 1 CurveSharppH = 1
ThermicConstant = 5 ThermicConstant = 5
HIonRelease = 0.01 HIonRelease = 0.01
RateUpLim = 100 RateUpLim = 200
FermiChem = TRUE FermiChem = TRUE
PurityMin = 0.15 PurityMin = 0.15
@@ -373,7 +373,7 @@
CurveSharppH = 0 CurveSharppH = 0
ThermicConstant = 0 ThermicConstant = 0
HIonRelease = -0.01 HIonRelease = -0.01
RateUpLim = 20 RateUpLim = 200
FermiChem = TRUE FermiChem = TRUE
/datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this /datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
@@ -398,7 +398,7 @@
CurveSharppH = 0 CurveSharppH = 0
ThermicConstant = 0 ThermicConstant = 0
HIonRelease = 0.01 HIonRelease = 0.01
RateUpLim = 20 RateUpLim = 200
FermiChem = TRUE FermiChem = TRUE
/datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this /datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this

View File

@@ -0,0 +1,9 @@
heatmelt.ogg - from https://freesound.org/people/toiletrolltube/sounds/181483/
from https://freesound.org/people/MrVasLuk/sounds/304619/
from https://freesound.org/people/Benboncan/sounds/74899/
from bubbles2.ogg
heatacid.ogg - from https://freesound.org/people/klankbeeld/sounds/233697/
from bubbles2.ogg
from fuse.ogg
Work is licensed under the Creative Commons and Attribution License.

Binary file not shown.

Binary file not shown.