BEEKEEPING 2.0

This commit is contained in:
DeityLink
2015-08-18 21:27:20 +02:00
committed by Ren
parent 26595c565f
commit d74c985aaf
24 changed files with 278 additions and 89 deletions

View File

@@ -1240,13 +1240,19 @@ var/list/all_supply_groups = list("Supplies","Clothing","Security","Hospitality"
/datum/supply_packs/bee_keeper
name = "Beekeeping Crate"
contains = list(/obj/item/beezeez,
contains = list(
/obj/item/beezeez,
/obj/item/beezeez,
/obj/item/weapon/bee_net,
/obj/item/weapon/extinguisher/mini,
/obj/item/apiary,
/obj/item/queen_bee,
/obj/item/queen_bee,
/obj/item/queen_bee)
/obj/item/queen_bee,
/obj/item/clothing/suit/bio_suit/beekeeping,
/obj/item/clothing/head/bio_hood/beekeeping,
/obj/item/weapon/book/manual/hydroponics_beekeeping,
)
cost = 20
containertype = /obj/structure/closet/crate/hydroponics
containername = "Beekeeping crate"

View File

@@ -1,6 +1,8 @@
//http://www.youtube.com/watch?v=-1GadTfGFvU
//i could have done these as just an ordinary plant, but fuck it - there would have been too much snowflake code
#define HONEYCOMB_COST 15
/obj/machinery/apiary
name = "apiary tray"
icon = 'icons/obj/hydroponics.dmi'
@@ -16,9 +18,9 @@
var/maxhealth = 100
var/lastcycle = 0
var/cycledelay = 100
var/harvestable_honey = 0
var/beezeez = 0
var/swarming = 0
var/honey_level = 0
var/bees_in_hive = 0
var/list/owned_bee_swarms = list()
@@ -29,7 +31,22 @@
//overwrite this after it's created if the apiary needs a custom machinery sprite
/obj/machinery/apiary/New()
..()
overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary")
overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary0")
/obj/machinery/apiary/examine(mob/user)
..()
if(health > 0)
user << "You can hear a loud buzzing coming from the inside."
else
user << "There doesn't seem to be any bees in it."
switch(honey_level)
if(1)
user << "<span class='info'>Looks like there's a bit of honey in it.</span>"
if(2)
user << "<span class='info'>There's a decent amount of honey dripping from it!</span>"
if(3)
user << "<span class='info'>It's full of honey!</span>"
/obj/machinery/apiary/bullet_act(var/obj/item/projectile/Proj) //Works with the Somatoray to modify plant variables.
if(istype(Proj ,/obj/item/projectile/energy/floramut))
@@ -43,6 +60,8 @@
//world << "Yield increased by 1, to a total of [myseed.yield]"
else
..()
if(src)
angry_swarm()
return
/obj/machinery/apiary/attackby(var/obj/item/O as obj, var/mob/user as mob)
@@ -53,7 +72,7 @@
user << "<span class='warning'>There is already a queen in there.</span>"
else
health = 10
nutrilevel += 10
nutrilevel = min(10,nutrilevel+10)
user.drop_item(O)
qdel(O)
user << "<span class='notice'>You carefully insert the queen into [src], she gets busy making a hive.</span>"
@@ -67,9 +86,9 @@
else
user << "<span class='notice'>You insert [O] into [src]. Now it just needs some bees.</span>"
qdel(O)
else if(istype(O, /obj/item/weapon/minihoe))
else if(istype(O, /obj/item/weapon/hatchet))
if(health > 0)
user << "<span class='danger'>You begin to dislodge the apiary from the tray, the bees don't like that.</span>"
user << "<span class='danger'>You begin harvesting the honeycombs, the bees don't like that.</span>"
angry_swarm(user)
else
user << "<span class='notice'>You begin to dislodge the dead apiary from the tray.</span>"
@@ -84,7 +103,17 @@
I.loc = created_tray
contents -= I
new /obj/item/apiary(src.loc)
user << "<span class='warning'>You dislodge the apiary from the tray.</span>"
if(health > 0)
while(health > HONEYCOMB_COST)
health -= HONEYCOMB_COST
var/obj/item/weapon/reagent_containers/food/snacks/honeycomb/H = new(src.loc)
if(toxic > 0)
H.reagents.add_reagent("toxin", toxic)
if(honey_level >= 3)
new/obj/item/queen_bee(src.loc)
user << "<span class='notice'>You successfully harvest the honeycombs. The empty apiary can be relocated.</span>"
else
user << "<span class='notice'>You dislodge the apiary from the tray.</span>"
qdel(src)
else if(istype(O, /obj/item/weapon/bee_net))
var/obj/item/weapon/bee_net/N = O
@@ -94,21 +123,8 @@
N.caught_bees = 0
else
user << "<span class='notice'>There are no more bees in the net.</span>"
else if(istype(O, /obj/item/weapon/reagent_containers/glass))
var/obj/item/weapon/reagent_containers/glass/G = O
if(harvestable_honey > 0)
if(health > 0)
user << "<span class='warning'>You begin to harvest the honey. The bees don't seem to like it.</span>"
angry_swarm(user)
else
user << "<span class='notice'>You begin to harvest the honey.</span>"
if(do_after(user, src, 50))
G.reagents.add_reagent("honey",harvestable_honey)
harvestable_honey = 0
user << "<span class='notice'>You successfully harvest the honey.</span>"
else
user << "<span class='notice'>There is no honey left to harvest.</span>"
else
visible_message("<span class='warning'>You hit \the [src] with \the [O]!</span>")
angry_swarm(user)
/obj/machinery/apiary/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
@@ -141,15 +157,15 @@
beezeez -= 1
nutrilevel += 2
health += 1
health = min(health+1,maxhealth)
if(prob(10))
toxic = max(0, toxic - 1)
//handle nutrients
nutrilevel -= bees_in_hive / 10 + owned_bee_swarms.len / 5
if(nutrilevel > 0)
bees_in_hive += 1 * yieldmod
if(health < maxhealth)
health++
health = min(health+1,maxhealth)
else
//nutrilevel is less than 1, so we're effectively subtracting here
health += max(nutrilevel - 1, round(-health / 2))
@@ -163,12 +179,26 @@
toxic -= 1
health -= 1
var/newlevel = 0
if(health >= (HONEYCOMB_COST * 6))
newlevel = 3
else if(health >= (HONEYCOMB_COST * 3))
newlevel = 2
else if(health >= HONEYCOMB_COST)
newlevel = 1
else
newlevel = 0
if(newlevel != honey_level)
overlays -= image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary[honey_level]")
overlays += image('icons/obj/apiary_bees_etc.dmi', icon_state="apiary[newlevel]")
honey_level = newlevel
if(health <= 0)
return
//make a bit of honey
if(harvestable_honey < 50)
harvestable_honey += 0.5
if(prob(2))
playsound(get_turf(src), 'sound/effects/bees.ogg', min(20+(20*honey_level),100), 1)
//make some new bees
if(bees_in_hive >= 10 && prob(bees_in_hive * 10))
@@ -183,7 +213,7 @@
for(var/obj/machinery/portable_atmospherics/hydroponics/H in view(7, src))
if(H.seed && !H.dead && prob(owned_bee_swarms.len * 10))
src.nutrilevel++
if(H.nutrilevel < 100)
if(H.nutrilevel < 10)
H.nutrilevel++
if(mut < H.mutation_mod - 1)
@@ -198,6 +228,7 @@
H.nutrilevel++
*/
//have a few beneficial effects on nearby plants
/* - beneficial effects are now applied directly by bees themselves
if(prob(10))
H.lastcycle -= 5
if(prob(10))
@@ -211,6 +242,7 @@
if(H.toxins && prob(10))
H.toxins = min(0, H.toxins - 1)
toxic++
*/
/obj/machinery/apiary/proc/die()
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/apiary/proc/die() called tick#: [world.time]")
@@ -225,7 +257,7 @@
bees_in_hive = 0
health = 0
/obj/machinery/apiary/proc/angry_swarm(var/mob/M)
/obj/machinery/apiary/proc/angry_swarm(var/mob/M = null)
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/apiary/proc/angry_swarm() called tick#: [world.time]")
for(var/mob/living/simple_animal/bee/B in owned_bee_swarms)
B.feral = 25
@@ -233,8 +265,8 @@
swarming = 25
while(bees_in_hive > 0)
var/spawn_strength = bees_in_hive
while(bees_in_hive >= 1)
var/spawn_strength = round(bees_in_hive)
if(bees_in_hive >= 5)
spawn_strength = 6
var/turf/T = get_turf(src)
@@ -246,17 +278,4 @@
B.toxic = toxic
bees_in_hive -= spawn_strength
/obj/machinery/apiary/verb/harvest_honeycomb()
set src in oview(1)
set name = "Harvest honeycomb"
set category = "Object"
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/apiary/verb/harvest_honeycomb() called tick#: [world.time]")
while(health > 15)
health -= 15
var/obj/item/weapon/reagent_containers/food/snacks/honeycomb/H = new(src.loc)
if(toxic > 0)
H.reagents.add_reagent("toxin", toxic)
usr << "<span class='notice'>You harvest the honeycomb from the hive. There is a wild buzzing!</span>"
angry_swarm(usr)
#undef HONEYCOMB_COST

View File

@@ -2,7 +2,7 @@
name = "queen bee packet"
desc = "Place her into an apiary so she can get busy."
icon = 'icons/obj/seeds.dmi'
icon_state = "seed-kudzu"
icon_state = "seed-bees"
w_class = 1
/obj/item/weapon/bee_net
@@ -10,13 +10,26 @@
desc = "For catching rogue bees."
icon = 'icons/obj/apiary_bees_etc.dmi'
icon_state = "bee_net"
item_state = "bedsheet"
item_state = "bee_net"
w_class = 3
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/beekeeping.dmi', "right_hand" = 'icons/mob/in-hand/right/beekeeping.dmi')
var/caught_bees = 0
/obj/item/weapon/bee_net/attack_self(mob/user as mob)
var/turf/T = get_step(get_turf(user), user.dir)
/obj/item/weapon/bee_net/examine(mob/user)
..()
if(caught_bees)
user << "<span class='info'>There's [caught_bees] caught bee\s in it!</span>"
else
user << "<span class='info'>It has no bees in it.</span>"
/obj/item/weapon/bee_net/afterattack(atom/A as mob|obj|turf|area, mob/living/user)
if(get_dist(A,user) > 1)
return
if(istype(A,/obj/machinery/apiary)) return
var/turf/T = get_turf(A)
var/caught = 0
for(var/mob/living/simple_animal/bee/B in T)
caught = 1
if(B.feral < 0)
caught_bees += B.strength
del(B)
@@ -25,6 +38,24 @@
user.visible_message("<span class='warning'>[user] swings at some bees, they don't seem to like it.</span>","<span class='warning'>You swing at some bees, they don't seem to like it.</span>")
B.feral = 5
B.target = user
if(!caught)
user << "<span class='warning'>There are no bees in front of you!</span>"
/obj/item/weapon/bee_net/attack_self(mob/user as mob)
var/turf/T = get_step(get_turf(user), user.dir)
var/caught = 0
for(var/mob/living/simple_animal/bee/B in T)
caught = 1
if(B.feral < 0)
caught_bees += B.strength
del(B)
user.visible_message("<span class='notice'>[user] nets some bees.</span>","<span class='notice'>You net up some of the becalmed bees.</span>")
else
user.visible_message("<span class='warning'>[user] swings at some bees, they don't seem to like it.</span>","<span class='warning'>You swing at some bees, they don't seem to like it.</span>")
B.feral = 5
B.target = user
if(!caught)
user << "<span class='warning'>There are no bees in front of you!</span>"
/obj/item/weapon/bee_net/verb/empty_bees()
set src in usr
@@ -75,7 +106,7 @@
/obj/item/weapon/reagent_containers/food/snacks/honeycomb
name = "honeycomb"
icon_state = "honeycomb"
desc = "Dripping with sugary sweetness."
desc = "Dripping with sugary sweetness. Grind it to separate the honey."
/obj/item/weapon/reagent_containers/food/snacks/honeycomb/New()
. = ..()
@@ -88,7 +119,25 @@
name = "Honey"
id = "honey"
description = "A golden yellow syrup, loaded with sugary sweetness."
color = "#FFFF00"
color = "#FEAE00"
alpha = 200
nutriment_factor = 15 * REAGENTS_METABOLISM
/datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!holder)
return
H.nutrition += nutriment_factor
holder.remove_reagent(src.id, 0.4)
if(H.getBruteLoss() && prob(60))
H.heal_organ_damage(2, 0)
if(H.getFireLoss() && prob(50))
H.heal_organ_damage(0, 2)
if(H.getToxLoss() && prob(50))
H.adjustToxLoss(-2)
..()
return
/obj/item/weapon/book/manual/hydroponics_beekeeping
name = "The Ins and Outs of Apiculture - A Precise Art"
@@ -110,11 +159,29 @@
Bees are loving but fickle creatures. Don't mess with their hive and stay away from any clusters of them, and you'll avoid their ire.
Sometimes, you'll need to dig around in there for those delicious sweeties though - in that case make sure you wear sealed protection gear
and carry an extinguisher or smoker with you - any bees chasing you, once calmed down, can thusly be netted and returned safely to the hive.<br.
<br>
Beezeez is a cure-all panacea for them, but use it too much and the hive may grow to apocalyptic proportions. Other than that, bees are excellent pets
for all the family and are excellent caretakers of one's garden: having a hive or two around will aid in the longevity and growth rate of plants,
and aid them in fighting off poisons and disease.
and carry an extinguisher or smoker with you - any bees chasing you, once calmed down, can thusly be netted and returned safely to the hive.
Beezeez is a cure-all panacea for them, use it on an apiary to kickstart it, but use it too much and the hive may grow to apocalyptic proportions.
Other than that, bees are excellent pets for all the family and are excellent caretakers of one's garden:
having a hive or two around will aid in the longevity and growth rate of plants, and aid them in fighting off poisons and disease.
<h3>Dealing with Feral Bees</h3>
If someone attacks the hive or some of the bees, you can bet that they won't like it and retaliate with murderous intent.
To fix such a situation, you will have to capture the bees and place them back into their apiary. Doing so is a two step process.
But before that, you'll want to acquire yourself a Bio suit to protect yourself from stings.
First you need to spray the bees with water. Chemistry sprays, fire extinguishers, smoke grenades, anything works as long as it has some water in it.
Once the bees are calmed, swing your bee net at them. If the bees aren't calmed first, you will only angry them further!
It is strongly disadvised to empty your bee net anywhere beside in the apiary, you might have to deal with an even more ferocious outbreak if you empty your net
outside after having caught them all.
<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.
</body>
</html>

View File

@@ -13,6 +13,8 @@
var/to_suit = /obj/item/clothing/suit/cardborg
/obj/item/device/modkit/afterattack(obj/O, mob/user as mob)
if(get_dist(O,user) > 1)//For all those years you could use it at any range, what the actual fuck?
return
var/flag
var/to_type
if(istype(O,from_helmet))

View File

@@ -790,6 +790,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=movealienship'>Move Alien Dinghy</A><BR>
<A href='?src=\ref[src];secretsfun=blackout'>Break all lights</A><BR>
<A href='?src=\ref[src];secretsfun=whiteout'>Fix all lights</A><BR>
<A href='?src=\ref[src];secretsfun=thebees'>Unleash THE BEES onto the crew</A><BR>
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (DANGEROUS: extremely lame)</A><BR>
<A href='?src=\ref[src];secretsfun=togglenarsie'>Toggle Nar-Sie's behaviour</A><BR>
<A href='?src=\ref[src];secretsfun=fakealerts'>Trigger a fake alert</A><BR>

View File

@@ -2580,6 +2580,23 @@
F.update_icon()
floorIsLava = 0
return
if("thebees")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","BEE")
var/answer = alert("What's this? A Space Station woefully underpopulated by bees?",,"Let's fix it!","On second thought, let's not.")
if(answer=="Let's fix it!")
message_admins("[key_name_admin(usr)] unleashed the bees onto the crew.", 1)
world << "<font size='10' color='red'><b>NOT THE BEES!</b></font>"
world << sound('sound/effects/bees.ogg')
for(var/mob/living/M in player_list)
var/mob/living/simple_animal/bee/BEE = new(get_turf(M))
BEE.strength = 16
BEE.toxic = 5
BEE.mut = 2
BEE.feral = 25
BEE.target = M
BEE.icon_state = "bees_swarm-feral"
if("virus")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","V")

View File

@@ -75,6 +75,18 @@
icon_state = "bio_cmo"
//Beekeeper's biosuit, white with a bee on its back
/obj/item/clothing/suit/bio_suit/beekeeping
name = "beekeeping suit"
icon_state = "bio_beekeeping"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 70, rad = 0)
/obj/item/clothing/head/bio_hood/beekeeping
name = "beekeeping hood"
icon_state = "bio_beekeeping"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0)
//Plague Dr mask can be found in clothing/masks/gasmask.dm
/obj/item/clothing/suit/bio_suit/plaguedoctorsuit
name = "Plague doctor suit"

View File

@@ -18,6 +18,7 @@ mob/living/carbon/proc/dream()
"an abandoned laboratory","The Syndicate","blood","falling","flames","ice","the cold","an operating table","a war","red men","malfunctioning robots",
"a ship full of spiders","valids","hardcore","your mom","lewd","explosions","broken bones","clowns everywhere","features","a crash","a skrell","a unathi","a tajaran",
"a vox","a plasmaman","a skellington","a diona","the derelict","the end of the world","the thunderdome","a ship full of dead clowns","a chicken with godlike powers",
"a red bus that drives through space",
)
spawn(0)
for(var/i = rand(1,4),i > 0, i--)

View File

@@ -41,6 +41,8 @@
var/force_update // Set this to bypass the cycle time check.
var/obj/temp_chem_holder // Something to hold reagents during process_reagents()
var/bees = 0 //Are there currently bees above the tray?
// Seed details/line data.
var/datum/seed/seed = null // The currently planted seed
@@ -186,9 +188,15 @@
// Mutation level drops each main tick.
mutation_level -= rand(2,4)
var/mob/living/simple_animal/bee/BEE = locate() in loc
if(BEE && (BEE.feral < 1))
bees = 1
else
bees = 0
// Weeds like water and nutrients, there's a chance the weed population will increase.
// Bonus chance if the tray is unoccupied.
if(waterlevel > 10 && nutrilevel > 2 && prob(isnull(seed) ? 5 : 1))
if(waterlevel > 10 && nutrilevel > 2 && prob(isnull(seed) ? 5 : (1/(1+bees))))
weedlevel += 1 * HYDRO_SPEED_MULTIPLIER
// There's a chance for a weed explosion to happen if the weeds take over.
@@ -204,7 +212,10 @@
return
// Advance plant age.
if(prob(80)) age += 1 * HYDRO_SPEED_MULTIPLIER
if(harvest)
if(prob(80)) age += (1 * HYDRO_SPEED_MULTIPLIER)/(1+bees)
else
if(prob(80+(20*bees))) age += 1 * HYDRO_SPEED_MULTIPLIER + (bees/2)
//Highly mutable plants have a chance of mutating every tick.
if(seed.immutable == -1)
@@ -313,7 +324,10 @@
var/toxin_uptake = max(1,round(toxins/10))
if(toxins > seed.toxins_tolerance)
health -= toxin_uptake
toxins -= toxin_uptake
toxins -= toxin_uptake * (1+bees)
if(BEE && BEE.parent)
var/obj/machinery/apiary/A = BEE.parent
A.toxic += toxin_uptake//gotta be careful where you let your bees hang around
// Check for pests and weeds.
// Some carnivorous plants happily eat pests.
@@ -335,7 +349,7 @@
// Handle life and death.
// If the plant is too old, it loses health fast.
if(age > seed.lifespan)
health -= rand(3,5) * HYDRO_SPEED_MULTIPLIER
health -= (rand(3,5) * HYDRO_SPEED_MULTIPLIER)/(1+bees)
// When the plant dies, weeds thrive and pests die off.
if(health <= 0)
@@ -351,7 +365,7 @@
harvest = 1
lastproduce = age
if(prob(3)) // On each tick, there's a chance the pest population will increase
if(prob(3/(1+bees))) // On each tick, there's a chance the pest population will increase
pestlevel += 0.1 * HYDRO_SPEED_MULTIPLIER
check_level_sanity()

View File

@@ -47,20 +47,48 @@
/mob/living/simple_animal/bee/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0)
return 1
/mob/living/simple_animal/bee/attackby(var/obj/item/O as obj, var/mob/user as mob)
user.delayNextAttack(8)
if(O.force)
var/damage = O.force
if (O.damtype == HALLOSS)
damage = 0
adjustBruteLoss(damage)
user.visible_message("<span class='danger'>[src] has been attacked with [O] by [user]. </span>")
panic_attack(user)
/mob/living/simple_animal/bee/bullet_act(var/obj/item/projectile/P)
..()
if(P && P.firer)
panic_attack(P.firer)
/mob/living/simple_animal/bee/attack_hand(mob/living/carbon/human/M as mob)//punching bees!
..()
if((M.a_intent == I_HURT) || (M.a_intent == I_DISARM))
panic_attack(M)
/mob/living/simple_animal/bee/proc/panic_attack(mob/damagesource)
for(var/mob/living/simple_animal/bee/B in range(src,3))
B.feral = 15
B.target = damagesource
/mob/living/simple_animal/bee/Life()
..()
if(stat != DEAD) //If we're alive, see if we can be calmed down.
//smoke, water and steam calms us down
var/calming = 0
var/list/calmers = list(/obj/effect/effect/smoke/chem, \
/obj/effect/effect/water, \
/obj/effect/effect/foam, \
/obj/effect/effect/steam, \
/obj/effect/mist)
var/list/calmers = list(
/obj/effect/decal/chemical_puff,
/obj/effect/effect/smoke/chem,
/obj/effect/effect/water,
/obj/effect/effect/foam,
/obj/effect/effect/steam,
/obj/effect/mist,
)
for(var/this_type in calmers)
var/check_effect = locate(this_type) in src.loc
if(check_effect && check_effect == this_type)
var/obj/effect/check_effect = locate(this_type) in src.loc
if(check_effect && (check_effect.reagents.has_reagent("water") || check_effect.reagents.has_reagent("holywater")))
calming = 1
break
@@ -121,8 +149,10 @@
src.parent.owned_bee_swarms.Add(B)
//make some noise
if(prob(0.5))
if(prob(1))
if(prob(50))
src.visible_message("<span class='notice'>[pick("Buzzzz.","Hmmmmm.","Bzzz.")]</span>")
playsound(get_turf(src), 'sound/effects/bees.ogg', min(20*strength,100), 1)
for(var/mob/living/simple_animal/bee/B in src.loc)
if(B == src)
@@ -184,8 +214,7 @@
else
my_hydrotray = null
pixel_x = rand(-12,12)
pixel_y = rand(-12,12)
animate(src, pixel_x = rand(-12,12), pixel_y = rand(-12,12), time = 10, easing = SINE_EASING)
if(!parent && prob(10))
strength -= 1
@@ -194,6 +223,12 @@
else if(strength <= 5)
icon_state = "bees[strength]"
if(feral > 0)
if(strength <= 5)
icon_state = "bees[max(strength,1)]-feral"
else
icon_state = "bees_swarm-feral"
//debugging
/*icon_state = "[strength]"
if(strength > 5)

View File

@@ -102,8 +102,7 @@
else
if(M.attack_sound)
playsound(loc, M.attack_sound, 50, 1, 1)
for(var/mob/O in viewers(src, null))
O.show_message("<span class='attack'>\The <EM>[M]</EM> [M.attacktext] \the <EM>[src]</EM>!</span>", 1)
M.visible_message("<span class='attack'>\The <EM>[M]</EM> [M.attacktext] \the <EM>[src]</EM>!</span>")
add_logs(M, src, "attacked", admin=1)
var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
adjustBruteLoss(damage)
@@ -118,14 +117,10 @@
damage *= 2
purge = 3
adjustBruteLoss(damage)
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
M.show_message("<span class='danger'>[src] has been attacked with [O] by [user]. </span>")
user.visible_message("<span class='danger'>[src] has been attacked with [O] by [user]. </span>")
else
usr << "<span class='warning'>This weapon is ineffective, it does no damage.</span>"
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
M.show_message("<span class='warning'>[user] gently taps [src] with [O]. </span>")
user.visible_message("<span class='warning'>[user] gently taps [src] with [O]. </span>")

View File

@@ -3311,7 +3311,6 @@
if (prob(data-10))
M.disabilities &= ~NEARSIGHTED
data++
if(prob(50)) M.heal_organ_damage(1,0)
return
/datum/reagent/drink/berryjuice
@@ -3399,7 +3398,6 @@
if(M.getBruteLoss() && prob(20)) M.heal_organ_damage(1,0)
if(holder.has_reagent("capsaicin"))
holder.remove_reagent("capsaicin", 10*REAGENTS_METABOLISM)
if(prob(50)) M.heal_organ_damage(1,0)
return
/datum/reagent/drink/milk/soymilk

View File

@@ -150,6 +150,10 @@
name = "Malt Vinegar Bottle"
desc = "Perfect for fish and chips!"
icon_state = "vinegar_container"
if("honey")
name = "Honey Pot"
desc = "Sweet and healthy!"
icon_state = "honey"
else
name = "Misc Condiment Bottle"

View File

@@ -0,0 +1,18 @@
author: Deity Link
delete-after: true
changes:
- imageadd: Re-made most bee-related sprites.
- imageadd: Bees animate much more smoothly, and are actually easily visible now.
- rscadd: You can now examine apiaries to get a clue whether there are bees inside or not, and how much honey there is.
- imageadd: The apiary's sprite also updates depending on how much honey there is inside.
- tweak: Reworked the procedure to harvest Honeycombs.
- rscdel: You cannot obtain honey by merely using a beaker on an apiary anymore.
- imageadd: Added a custom sprite for honey-storing condiment bottles.
- rscadd: Hitting a bee or firing at it will now cause it and its neighbors to charge at the attacker.
- bugfix: Bees can finally be calmed by spraying them with water. They also have a slightly different sprite when they are feral.
- rscadd: You can now use bee nets by clicking on tiles instead of clicking on the item in your hand.
- bugfix: Fixed a bug that cause apiaries to feed WAY too much nutrients to the hydro trays near it.
- tweak: Apiaries still distribute and gather nutrients automatically, however, the "benefits" they give to nearby plants are now granted by the bees themselves. If a bee is above a plant ready for harvest, it'll halve its aging process so it remains alive longer, else it'll accelerate it so it becomes ready for harvest more quickly. It'll also halve the plant's weed and pest spread, and collect some of the plant's toxins for the apiary. (Toxins collected this way will find their way into the honeycombs, and will also drastically increase the sting power of bees).
- rscadd: Added chapters to "The Ins and Outs of Apiculture - A Precise Art" manual that explains how to capture feral bees and how to harvest honeycombs.
- bugfix: Fixed a bug that allowed players to use modification kits at any range.
- rscadd: Added a beekeeping bio suit and hood to the Beekeeping Crates, as well as a copy of the Beekeeping Manual, and a mini-extinguisher.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 358 KiB

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

BIN
sound/effects/bees.ogg Normal file

Binary file not shown.