Beekeeping 3.7 (#36967)
* beekeeping 3.7 * adjustments * duh * burn baby burn
@@ -8,7 +8,7 @@
|
||||
|
||||
/*
|
||||
|
||||
> apiary tray
|
||||
> apiary
|
||||
> angry-bee hive
|
||||
|
||||
*/
|
||||
@@ -17,13 +17,17 @@ var/list/apiary_reservation = list()
|
||||
var/list/apiaries_list = list()
|
||||
|
||||
/obj/machinery/apiary
|
||||
name = "apiary tray"
|
||||
icon = 'icons/obj/hydroponics/hydro_tools.dmi'
|
||||
icon_state = "hydrotray"
|
||||
name = "apiary"
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary"
|
||||
var/apiary_icon = "apiary"
|
||||
density = 1
|
||||
anchored = 1
|
||||
pass_flags_self = PASSTABLE
|
||||
var/apiary_icon = "apiary"
|
||||
w_type = RECYK_WOOD
|
||||
flammable = TRUE
|
||||
thermal_mass = 20//same as apiary kits
|
||||
fire_sprite = "fire_apiary"
|
||||
var/beezeez = 0//beezeez removes 1 toxic and adds 1 nutrilevel per cycle
|
||||
var/nutrilevel = 0//consumed every round based on how many bees the apiary is sustaining.
|
||||
var/yieldmod = 1
|
||||
@@ -38,8 +42,7 @@ var/list/apiaries_list = list()
|
||||
var/worker_bees_inside = 0
|
||||
var/list/bees_outside_hive = list()
|
||||
|
||||
var/hydrotray_type = /obj/machinery/portable_atmospherics/hydroponics
|
||||
var/obj/item/itemform = null //The item used to build this
|
||||
var/kit_type = /obj/item/apiary
|
||||
|
||||
var/obj/item/weapon/reagent_containers/glass/consume = null
|
||||
|
||||
@@ -59,7 +62,7 @@ var/list/apiaries_list = list()
|
||||
/obj/machinery/apiary/New()
|
||||
..()
|
||||
apiaries_list.Add(src)
|
||||
overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state=apiary_icon)
|
||||
update_icon()
|
||||
create_reagents(100)
|
||||
consume = new()
|
||||
spawn(EXILE_RESTRICTION)
|
||||
@@ -73,22 +76,47 @@ var/list/apiaries_list = list()
|
||||
B.mob.home = null
|
||||
..()
|
||||
|
||||
/obj/machinery/apiary/wrenchAnchor(var/mob/user, var/obj/item/I, var/time_to_wrench = 3 SECONDS)
|
||||
. = ..()
|
||||
if (.)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/apiary/attack_hand(var/mob/user)
|
||||
if(reagents.total_volume <= 0)
|
||||
alert(user,"There's no honey to harvest yet!","[name]","Ok")
|
||||
return
|
||||
|
||||
if(alert(user,"Harvest the honeycombs?[((queen_bees_inside || worker_bees_inside) && species.angery) ? " Be ready to handle some angry bees!" : ""]","[name]","Yes","No")== "Yes")
|
||||
user.visible_message("<span class='notice'>\the [user] begins dismantling the apiary.</span>","<span class='danger'>You begin harvesting the honeycombs.</span>")
|
||||
|
||||
if((queen_bees_inside || worker_bees_inside) && species.angery)
|
||||
user.visible_message("<span class='danger'>The [species.common_name] don't like that.</span>")
|
||||
angry_swarm(user)
|
||||
|
||||
if(do_after(user, loc, 50))
|
||||
if(harvest_honeycombs())
|
||||
to_chat(user, "<span class='notice'>You successfully harvest the honeycombs.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You somehow didn't find a single honeycomb in there.</span>")
|
||||
|
||||
/obj/machinery/apiary/update_icon()
|
||||
overlays.len = 0
|
||||
overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state=apiary_icon)
|
||||
icon_state = "[apiary_icon][anchored ? "-anchored" : ""]"
|
||||
|
||||
var/image/I = null
|
||||
switch(reagents.total_volume)
|
||||
if(30 to 60)
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="honey_1")
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="[apiary_icon]_honey_1")
|
||||
if(60 to 90)
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="honey_2")
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="[apiary_icon]_honey_2")
|
||||
if(90 to INFINITY)
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="honey_3")
|
||||
I = image('icons/obj/apiary_bees_etc.dmi', icon_state="[apiary_icon]_honey_3")
|
||||
if(!I)
|
||||
return
|
||||
I.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += I
|
||||
if (on_fire)
|
||||
overlays += fire_overlay
|
||||
|
||||
/obj/machinery/apiary/examine(mob/user)
|
||||
..()
|
||||
@@ -96,30 +124,30 @@ var/list/apiaries_list = list()
|
||||
if (species)
|
||||
species_name = species.common_name
|
||||
if(!worker_bees_inside && !queen_bees_inside)
|
||||
to_chat(user, "<span class='info'>There doesn't seem to be any [species_name] in it.</span>")
|
||||
to_chat(user, "<span class='info'>There doesn't seem to be any [species_name]s in it.</span>")
|
||||
else
|
||||
if(worker_bees_inside < 10)
|
||||
to_chat(user, "<span class='info'>You can hear a few [species_name] buzzing inside.</span>")
|
||||
to_chat(user, "<span class='info'>You can hear a few [species_name]s buzzing inside.</span>")
|
||||
else if(worker_bees_inside > 35)
|
||||
to_chat(user, "<span class='danger'>The [species_name] are over-crowded!</span>")
|
||||
to_chat(user, "<span class='danger'>The [species_name]s are over-crowded!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='info'>You hear a loud buzzing from the inside.</span>")
|
||||
|
||||
if(nutrilevel < 0)
|
||||
to_chat(user, "<span class='danger'>The [species_name] inside appear to be starving.</span>")
|
||||
to_chat(user, "<span class='danger'>The [species_name]s inside appear to be starving.</span>")
|
||||
else if(nutrilevel < 10)
|
||||
to_chat(user, "<span class='warning'>The [species_name] inside appear to be low on food reserves.</span>")
|
||||
to_chat(user, "<span class='warning'>The [species_name]s inside appear to be low on food reserves.</span>")
|
||||
|
||||
if(beezeez > 0)
|
||||
to_chat(user, "<span class='info'>The [species_name] are collecting the beezeez pellets.</span>")
|
||||
to_chat(user, "<span class='info'>The [species_name]s are collecting the beezeez pellets.</span>")
|
||||
|
||||
if(toxic > 5)
|
||||
if (toxic < 33)
|
||||
to_chat(user, "<span class='warning'>The [species_name] look a bit on edge, their diet might be toxic.</span>")
|
||||
to_chat(user, "<span class='warning'>The [species_name]s look a bit on edge, their diet might be toxic.</span>")
|
||||
else if (toxic < 50)
|
||||
to_chat(user, "<span class='warning'>The [species_name] are starting to act violent, the hive's toxicity is rising.</span>")
|
||||
to_chat(user, "<span class='warning'>The [species_name]s are starting to act violent, the hive's toxicity is rising.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='danger'>The [species_name] are violent and exhausted, the hive's toxicity is reaching critical levels.</span>")
|
||||
to_chat(user, "<span class='danger'>The [species_name]s are violent and exhausted, the hive's toxicity is reaching critical levels.</span>")
|
||||
|
||||
if (species?.worker_product)
|
||||
switch(reagents.total_volume)
|
||||
@@ -176,41 +204,29 @@ var/list/apiaries_list = list()
|
||||
to_chat(user, "<span class='notice'>You pour the BeezEez into \the [src]. A relaxed humming appears to pick up.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You pour the BeezEez into \the [src]. Now it just needs some bees.</span>")
|
||||
playsound(src, "sand", 50, 0)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no BeezEez in \the [O].</span>")
|
||||
return
|
||||
user.drop_from_inventory(O)
|
||||
var/obj/item/trash/beezeez/TrashItem = new /obj/item/trash/beezeez(user)
|
||||
user.put_in_hands(TrashItem)
|
||||
qdel(O)
|
||||
else if(istype(O, /obj/item/weapon/hatchet))
|
||||
if(reagents.total_volume > 0)
|
||||
user.visible_message("<span class='notice'>\the [user] begins harvesting the honeycombs.</span>","<span class='danger'>You begin harvesting the honeycombs.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You begin to dislodge the apiary from the tray.</span>")
|
||||
else if(istype(O, /obj/item/weapon/hatchet) || iscrowbar(O))
|
||||
user.visible_message("<span class='notice'>\the [user] begins dismantling the apiary.</span>","<span class='danger'>You begin to dismantle the apiary.</span>")
|
||||
|
||||
if((queen_bees_inside || worker_bees_inside) && species.angery)
|
||||
user.visible_message("<span class='danger'>The [species.common_name] don't like that.</span>")
|
||||
angry_swarm(user)
|
||||
|
||||
if(do_after(user, src, 50))
|
||||
var/obj/machinery/created_tray = new hydrotray_type(src.loc)
|
||||
created_tray.component_parts = list()
|
||||
for(var/obj/I in src.component_parts)
|
||||
created_tray.component_parts += I
|
||||
I.forceMove(created_tray)
|
||||
component_parts -= I
|
||||
for(var/obj/I in src.contents)
|
||||
I.forceMove(created_tray)
|
||||
contents -= I
|
||||
if(itemform)
|
||||
itemform.forceMove(loc)
|
||||
else //if there is no stored itemform, just make a normal apiary
|
||||
new /obj/item/apiary(loc)
|
||||
if(do_after(user, loc, 50))
|
||||
new kit_type(loc)
|
||||
|
||||
if(harvest_honeycombs())
|
||||
to_chat(user, "<span class='notice'>You successfully harvest the honeycombs. The empty apiary can be relocated.</span>")
|
||||
to_chat(user, "<span class='notice'>You finish dismantling the apiary after harvesting the honeycombs that were inside.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You dislodge the apiary from the tray.</span>")
|
||||
to_chat(user, "<span class='notice'>You finish dismantling the apiary.</span>")
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
|
||||
if (queen_bees_inside || worker_bees_inside)
|
||||
empty_beehive()
|
||||
@@ -328,6 +344,9 @@ var/list/apiaries_list = list()
|
||||
var/image/I = image('icons/obj/food.dmi', icon_state="honeycomb-color")
|
||||
I.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
|
||||
var/image/glint = image('icons/obj/food.dmi',icon_state="honeycomb-glint")
|
||||
glint.blend_mode = BLEND_ADD
|
||||
|
||||
for (var/i = 1 to number_of_honeycombs)
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/honeycomb/H = new(T)
|
||||
H.reagents.clear_reagents()
|
||||
@@ -335,9 +354,11 @@ var/list/apiaries_list = list()
|
||||
H.icon_state = "[species.prefix]honeycomb-base"
|
||||
H.extra_food_overlay.overlays.len = 0 // removing the one added in the honeycomb's New()
|
||||
H.extra_food_overlay.overlays += I
|
||||
H.extra_food_overlay.overlays += glint
|
||||
H.update_icon()
|
||||
reagents.trans_to(H,reagents_per_honeycomb)
|
||||
H.authentify()
|
||||
update_icon()
|
||||
return 1
|
||||
|
||||
/obj/machinery/apiary/proc/empty_beehive()
|
||||
@@ -514,6 +535,9 @@ var/list/apiaries_list = list()
|
||||
icon_state = "apiary-wild-inprogress0"
|
||||
density = 0
|
||||
anchored = 1
|
||||
w_type = RECYK_WOOD
|
||||
flammable = TRUE
|
||||
thermal_mass = 20
|
||||
var/base_icon_state = "apiary-wild-inprogress"
|
||||
var/prefix = ""
|
||||
var/remaining_work = 10
|
||||
@@ -549,6 +573,8 @@ var/list/apiaries_list = list()
|
||||
qdel(B_mob)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/wild_apiary/attack_hand(var/mob/user)
|
||||
to_chat(user,"<span class='warning'>You don't think you can harvest that one by hand. Gotta break it apart.</span>")
|
||||
|
||||
/obj/structure/wild_apiary/bullet_act(var/obj/item/projectile/P)
|
||||
. = ..()
|
||||
@@ -591,9 +617,10 @@ var/list/apiaries_list = list()
|
||||
health -= P.damage
|
||||
updateHealth()
|
||||
|
||||
/obj/machinery/apiary/wild/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
/obj/structure/apiary/wild/attack_hand(var/mob/user)
|
||||
to_chat(user,"<span class='warning'>You don't think you can harvest that one by hand. Gotta break it apart.</span>")
|
||||
|
||||
/obj/machinery/apiary/wild/attackby(var/obj/item/O, var/mob/user)
|
||||
if(istype(O, /obj/item/queen_bee))
|
||||
to_chat(user, "<span class='warning'>This type of bee hive isn't fit for domesticated bees.</span>")
|
||||
else if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/beezeez))
|
||||
@@ -605,6 +632,8 @@ var/list/apiaries_list = list()
|
||||
O.on_attack(src, user)
|
||||
health -= O.force
|
||||
updateHealth()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/apiary/wild/proc/updateHealth()
|
||||
if(health <= 0)
|
||||
@@ -619,7 +648,8 @@ var/list/apiaries_list = list()
|
||||
|
||||
/obj/machinery/apiary/wild/update_icon()
|
||||
overlays.len = 0
|
||||
return
|
||||
if (on_fire)
|
||||
overlays += fire_overlay
|
||||
|
||||
/obj/machinery/apiary/wild/angry
|
||||
name = "angry-bee hive"
|
||||
|
||||
@@ -41,6 +41,7 @@ var/list/disappear_sound = list('sound/effects/disappear_1.ogg', 'sound/effects/
|
||||
var/list/pd_wail_sound = list('sound/voice/pdwail1.ogg', 'sound/voice/pdwail2.ogg', 'sound/voice/pdwail3.ogg')
|
||||
var/list/procgun_sound = list('sound/weapons/procgun1.ogg', 'sound/weapons/procgun2.ogg')
|
||||
var/list/trayhit_sound = list('sound/items/trayhit1.ogg', 'sound/items/trayhit2.ogg')
|
||||
var/list/sand_sound = list('sound/effects/sand_walk1.ogg', 'sound/effects/sand_walk2.ogg')
|
||||
//var/list/gun_sound = list('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg')
|
||||
|
||||
//gas_modified controls if a sound is affected by how much gas there is in the atmosphere of the source
|
||||
@@ -257,6 +258,8 @@ var/const/SURROUND_CAP = 7
|
||||
soundin = pick(procgun_sound)
|
||||
if ("trayhit")
|
||||
soundin = pick(trayhit_sound)
|
||||
if ("sand")
|
||||
soundin = pick(sand_sound)
|
||||
//if ("gunshot") soundin = pick(gun_sound)
|
||||
else if(islist(soundin))
|
||||
soundin = pick(soundin)
|
||||
|
||||
@@ -445,24 +445,8 @@ var/list/hydro_trays = list()
|
||||
else if(O.is_wrench(user) && is_soil) //Soil isn't a portable atmospherics machine by any means
|
||||
return //Don't call parent. I mean, soil shouldn't be a child of portable_atmospherics at all, but that's not very feasible.
|
||||
|
||||
else if(istype(O, /obj/item/apiary))
|
||||
|
||||
if(seed)
|
||||
to_chat(user, "<span class='alert'>[src] is already occupied!</span>")
|
||||
else
|
||||
user.drop_item(O, force_drop = 1)
|
||||
var/obj/item/apiary/IA = O
|
||||
var/obj/machinery/apiary/A = new IA.buildtype(src.loc)
|
||||
A.itemform = O
|
||||
O.forceMove(A)
|
||||
A.icon = src.icon
|
||||
A.icon_state = src.icon_state
|
||||
A.hydrotray_type = src.type
|
||||
A.component_parts = component_parts.Copy()
|
||||
A.contents = contents.Copy()
|
||||
contents.len = 0
|
||||
component_parts.len = 0
|
||||
qdel(src)
|
||||
else if(istype(O, /obj/item/apiary))//Because not everyone is gonna read the changelog
|
||||
to_chat(user,"<span class='warning'>[is_soil ? "" : "You're not sure why you'd put an apiary in an hydroponics tray of all things. Like, it doesn't really makes much sense does it? "]You should build the kit directly on top of the floor.</span>")
|
||||
|
||||
else if((O.sharpness_flags & (SHARP_BLADE|SERRATED_BLADE)) && harvest)
|
||||
if(arcanetampered)
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
if (!caught_bees.len)
|
||||
current_species = null
|
||||
|
||||
/obj/item/weapon/bee_net/attack_self(mob/user as mob)
|
||||
/obj/item/weapon/bee_net/attack_self(var/mob/user)
|
||||
empty_bees()
|
||||
|
||||
/obj/item/weapon/bee_net/verb/empty_bees()
|
||||
@@ -192,13 +192,42 @@
|
||||
|
||||
|
||||
/obj/item/apiary
|
||||
name = "moveable apiary"
|
||||
name = "apiary kit"
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary_item"
|
||||
item_state = "giftbag"
|
||||
item_state = "apiary"
|
||||
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/beekeeping.dmi', "right_hand" = 'icons/mob/in-hand/right/beekeeping.dmi')
|
||||
w_class = W_CLASS_HUGE
|
||||
w_type = RECYK_WOOD
|
||||
flammable = TRUE
|
||||
throwforce = 5
|
||||
var/buildtype = /obj/machinery/apiary
|
||||
|
||||
/obj/item/apiary/attack_self(var/mob/user)
|
||||
to_chat(user, "<span class='warning'>You must build this kit on an empty and adjacent floor.</span>")
|
||||
|
||||
/obj/item/apiary/afterattack(var/atom/A, var/mob/living/user, var/proximity_flag, var/click_parameters)
|
||||
if(!proximity_flag)
|
||||
to_chat(user, "<span class='warning'>You must build this kit on an empty and adjacent floor.</span>")
|
||||
return
|
||||
if (!isturf(A))
|
||||
return
|
||||
var/turf/T = A
|
||||
if(!T.density && !T.has_dense_content())
|
||||
build_apiary(user, T)
|
||||
|
||||
/obj/item/apiary/proc/build_apiary(var/mob/user, var/turf/T)
|
||||
if (!T)
|
||||
T = get_turf(src)
|
||||
if (!isfloor(T) || T.has_dense_content())
|
||||
to_chat(user, "<span class='warning'>There is no room to build an apiary there!</span>")
|
||||
return
|
||||
|
||||
if(do_after(user, T, 25))
|
||||
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
|
||||
user.drop_item(src, force_drop = 1)
|
||||
new buildtype(T)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/beezeez
|
||||
name = "packet of BeezEez"
|
||||
@@ -238,6 +267,10 @@
|
||||
I.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
icon_state = "honeycomb-base"
|
||||
extra_food_overlay.overlays += I
|
||||
var/image/glint = image('icons/obj/food.dmi',icon_state="honeycomb-glint")
|
||||
glint.blend_mode = BLEND_ADD
|
||||
extra_food_overlay.overlays += glint
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeycomb/chill
|
||||
@@ -255,8 +288,11 @@
|
||||
var/image/I = image('icons/obj/food.dmi', icon_state="honeycomb-color")
|
||||
I.color = mix_color_from_reagents(reagents.reagent_list)
|
||||
icon_state = "chill_honeycomb-base"
|
||||
var/image/glint = image('icons/obj/food.dmi',icon_state="honeycomb-glint")
|
||||
glint.blend_mode = BLEND_ADD
|
||||
extra_food_overlay.overlays.len = 0
|
||||
extra_food_overlay.overlays += I
|
||||
extra_food_overlay.overlays += glint
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/honeycomb/proc/authentify()
|
||||
@@ -315,11 +351,10 @@
|
||||
|
||||
<h3>Collecting Honeycombs</h3>
|
||||
|
||||
Collecting honeycombs is a relatively simple process, but you'll need to make some preparations, such as getting a Bio suit or prepairing another apiary where to move the bees.
|
||||
First you start by deconstructing the apiary with a hatchet. The bees will become aggressive as soon as you begin. Once the apiary is deconstructed, follow the steps in the above
|
||||
section to capture the homeless feral bees and move them to another apiary. Or simply rebuild the apiary that you just deconstructed. The honeycombs harvested this way
|
||||
are full of honey, you can grind them to process the liquid, then place it in a Condimaster to conserve it in a honey pot. Or you can just eat the honeycombs if you feel like it,
|
||||
they are delicious. You can produce a high variety of flavoured honey by having your bees harvest various plants.
|
||||
Collecting honeycombs is a relatively simple process that can be done by hand, but you'll need to make some preparations, such as getting a beekeeping suit and ways to calm down the bees.
|
||||
The bees will become aggressive as soon as you start harvesting. After you calm them, they will naturally return to their apiary.
|
||||
The honeycombs harvested this way are full of honey, you can grind them to process the liquid, then place it in a Condimaster to conserve it in a honey pot.
|
||||
Or you can just eat the honeycombs if you feel like it, they are delicious. You can produce a high variety of flavoured honey by having your bees harvest various plants.
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
@@ -443,9 +443,8 @@ var/global/global_cricket_population = 0
|
||||
|
||||
|
||||
/obj/item/apiary/langstroth
|
||||
name = "\improper Langstroth hive"
|
||||
name = "\improper Langstroth hive kit"
|
||||
desc = "A vertically-modular tray-based apiary. You can simply reach in with your hand and smokers will protect you while you harvest honeycombs."
|
||||
icon = 'icons/obj/items_weird.dmi'
|
||||
icon_state = "langstroth_item"
|
||||
buildtype = /obj/machinery/apiary/langstroth
|
||||
|
||||
@@ -577,9 +576,25 @@ var/global/global_cricket_population = 0
|
||||
|
||||
/obj/machinery/apiary/langstroth
|
||||
name = "\improper Langstroth hive"
|
||||
icon_state = "langstroth"
|
||||
apiary_icon = "langstroth"
|
||||
kit_type = /obj/item/apiary/langstroth
|
||||
|
||||
/obj/machinery/apiary/langstroth/attack_hand(mob/user)
|
||||
if(harvest_honeycombs())
|
||||
playsound(loc, 'sound/effects/fan.ogg', 75, 1, -1)
|
||||
visible_message("<span class='good'>\The [itemform] fans smoke, calming the residents for the harvest.</span>")
|
||||
if(reagents.total_volume <= 0)
|
||||
alert(user,"There's no honey to harvest yet!","[name]","Ok")
|
||||
return
|
||||
|
||||
if(alert(user,"Harvest the honeycombs?[((queen_bees_inside || worker_bees_inside) && species.angery) ? " Be ready to handle some angry bees!" : ""]","[name]","Yes","No")== "Yes")
|
||||
user.visible_message("<span class='notice'>\the [user] begins dismantling the apiary.</span>","<span class='danger'>You begin harvesting the honeycombs.</span>")
|
||||
|
||||
if((queen_bees_inside || worker_bees_inside) && species.angery)
|
||||
playsound(loc, 'sound/effects/fan.ogg', 75, 1, -1)
|
||||
anim(target = loc, a_icon = 'icons/effects/160x160.dmi', flick_anim = "incense", offX = -WORLD_ICON_SIZE*2+pixel_x, offY = -WORLD_ICON_SIZE*2+pixel_y)
|
||||
visible_message("<span class='good'>\The hive fans smoke, calming the residents for the harvest.</span>")
|
||||
|
||||
if(do_after(user, loc, 50))
|
||||
if(harvest_honeycombs())
|
||||
to_chat(user, "<span class='notice'>You successfully harvest the honeycombs.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You somehow didn't find a single honeycomb in there.</span>")
|
||||
|
||||
|
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 356 KiB |
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 520 B After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.5 KiB |
@@ -185,18 +185,12 @@
|
||||
if(istype(A,/mob/living/simple_animal))
|
||||
var/mob/living/simple_animal/L = A
|
||||
if(L.on_foot() && prob(33)) // If the mob is flying, nothing happens. But if it's walking, 33% chance to play a sound effect
|
||||
if(prob(50))
|
||||
playsound(src, 'sound/effects/sand_walk1.ogg', 50, 0)
|
||||
else
|
||||
playsound(src, 'sound/effects/sand_walk2.ogg', 50, 0)
|
||||
playsound(src, "sand", 50, 0)
|
||||
|
||||
if(istype(A,/mob/living/carbon))
|
||||
var/mob/living/carbon/M = A
|
||||
if(M.on_foot() && prob(33)) // If the mob is flying, nothing happens. But if it's walking, 33% chance to play a sound effect
|
||||
if(prob(50))
|
||||
playsound(src, 'sound/effects/sand_walk1.ogg', 50, 0)
|
||||
else
|
||||
playsound(src, 'sound/effects/sand_walk2.ogg', 50, 0)
|
||||
playsound(src, "sand", 50, 0)
|
||||
|
||||
/turf/unsimulated/floor/lab_asteroid
|
||||
name = "Asteroid"
|
||||
|
||||