diff --git a/code/game/machinery/bees.dm b/code/game/machinery/bees.dm index 27a317a91a3..102b6874400 100644 --- a/code/game/machinery/bees.dm +++ b/code/game/machinery/bees.dm @@ -10,7 +10,7 @@ var/turf/target_turf var/mob/target_mob var/obj/machinery/apiary/parent - pass_flags = PASSGRILLE|PASSTABLE + pass_flags = PASSTABLE turns_per_move = 6 var/obj/machinery/hydroponics/my_hydrotray @@ -29,21 +29,19 @@ if(stat == CONSCIOUS) //if we're strong enough, sting some people - var/overrun = strength - 5 + feral / 2 - if(prob(max( overrun * 10 + feral * 10, 0))) - var/mob/living/carbon/human/M = pick(range(1,src)) - if(M) - var/sting_prob = 100 + var/mob/living/carbon/human/M = target_mob + var/sting_prob = 100 // Bees will always try to sting. + if(M in view(src,1)) // Can I see my target? + if(prob(max(feral * 10, 0))) // Am I mad enough to want to sting? And yes, when I initially appear, I AM mad enough var/obj/item/clothing/worn_suit = M.wear_suit var/obj/item/clothing/worn_helmet = M.head - if(worn_suit) - sting_prob -= worn_suit.armor["bio"] + if(worn_suit) // Are you wearing clothes? + sting_prob -= min(worn_suit.armor["bio"],70) // Is it sealed? I can't get to 70% of your body. if(worn_helmet) - sting_prob -= worn_helmet.armor["bio"] - - if( prob(sting_prob) && (M.stat == CONSCIOUS || (M.stat == UNCONSCIOUS && prob(25))) ) - M.apply_damage(overrun / 2 + mut / 2, BRUTE) - M.apply_damage(overrun / 2 + toxic / 2, TOX) + sting_prob -= min(worn_helmet.armor["bio"],30) // Is your helmet sealed? I can't get to 30% of your body. + if( prob(sting_prob) && (M.stat == CONSCIOUS || (M.stat == UNCONSCIOUS && prob(25))) ) // Try to sting! If you're not moving, think about stinging. + M.apply_damage(min(strength,2)+mut, BRUTE) // Stinging. The more mutated I am, the harder I sting. + M.apply_damage((round(feral/5,1)*(max((round(strength/10,1)),1)))+toxic, TOX) // Bee venom based on how angry I am and how many there are of me! M << "\red You have been stung!" M.flash_pain() @@ -134,14 +132,17 @@ if(target_mob in view(src,7)) target_turf = get_turf(target_mob) wander = 0 - else - for(var/mob/living/carbon/M in view(src,7)) - target_mob = M + + else // My target's gone! But I might still be pissed! You there. You look like a good stinging target! + for(var/mob/living/carbon/G in view(src,7)) + target_mob = G break if(target_turf) - Move(get_step(src, get_dir(src,target_turf))) - + if (!(DirBlocked(get_step(src, get_dir(src,target_turf)),get_dir(src,target_turf)))) // Check for windows and doors! + Move(get_step(src, get_dir(src,target_turf))) + if (prob(0.1)) + src.visible_message("\blue The bees swarm after [target_mob]!") if(src.loc == target_turf) target_turf = null wander = 1 diff --git a/code/game/machinery/bees_apiary.dm b/code/game/machinery/bees_apiary.dm index 982feec1f2a..2c2de70163d 100644 --- a/code/game/machinery/bees_apiary.dm +++ b/code/game/machinery/bees_apiary.dm @@ -87,7 +87,7 @@ if(harvestable_honey > 0) if(health > 0) user << "\red You begin to harvest the honey. The bees don't seem to like it." - angry_swarm() + angry_swarm(user) else user << "\blue You begin to harvest the honey." if(do_after(user,50)) @@ -97,7 +97,7 @@ else user << "\blue There is no honey left to harvest." else - angry_swarm() + angry_swarm(user) ..() /obj/machinery/apiary/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -171,16 +171,19 @@ //find some plants, harvest for(var/obj/machinery/hydroponics/H in view(7, src)) if(H.planted && !H.dead && H.myseed && prob(owned_bee_swarms.len * 10)) + src.nutrilevel++ + H.nutrilevel++ if(mut < H.mutmod - 1) mut = H.mutmod - 1 else if(mut > H.mutmod - 1) H.mutmod = mut //flowers give us pollen (nutrients) +/* - All plants should be giving nutrients to the hive. if(H.myseed.type == /obj/item/seeds/harebell || H.myseed.type == /obj/item/seeds/sunflowerseed) src.nutrilevel++ H.nutrilevel++ - +*/ //have a few beneficial effects on nearby plants if(prob(10)) H.lastcycle -= 5 @@ -206,7 +209,7 @@ /obj/machinery/apiary/proc/angry_swarm(var/mob/M) for(var/mob/living/simple_animal/bee/B in owned_bee_swarms) - B.feral = 50 + B.feral = 25 B.target_mob = M swarming = 25 @@ -219,7 +222,7 @@ var/mob/living/simple_animal/bee/B = new(get_turf(src), src) B.target_mob = M B.strength = spawn_strength - B.feral = 5 + B.feral = 25 B.mut = mut B.toxic = toxic bees_in_hive -= spawn_strength diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index e22bbf47467..c8a0ed3e807 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -23,6 +23,8 @@ emp_act if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered? P.agony=P.agony*C.siemens_coefficient apply_effect(P.agony,AGONY,0) + flash_pain() + src <<"\red You have been shot!" del P /* Commenting out new-old taser nerf. if(C.siemens_coefficient == 0) //If so, is that clothing shock proof? @@ -41,7 +43,7 @@ emp_act // END TASER NERF if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof)) - if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) + if(istype(P, /obj/item/projectile/energy) || !(istype(P, /obj/item/projectile/energy/electrode)) || istype(P, /obj/item/projectile/beam)) var/reflectchance = 40 - round(P.damage/3) if(!(def_zone in list("chest", "groin"))) reflectchance /= 2 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0db1f949c5f..366ea5e02b3 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -978,10 +978,10 @@ blinded = 1 stat = UNCONSCIOUS if(halloss > 0) - adjustHalLoss(-6) + adjustHalLoss(-3) else if(sleeping) handle_dreams() - adjustHalLoss(-6) + adjustHalLoss(-3) if (mind) if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced. sleeping = max(sleeping-1, 0) @@ -992,12 +992,12 @@ emote("snore") else if(resting) if(halloss > 0) - adjustHalLoss(-6) + adjustHalLoss(-3) //CONSCIOUS else stat = CONSCIOUS if(halloss > 0) - adjustHalLoss(-2) + adjustHalLoss(-1) //Eyes if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 5e215b6966e..b1fe07b32f5 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -450,10 +450,10 @@ blinded = 1 stat = UNCONSCIOUS if(halloss > 0) - adjustHalLoss(-6) + adjustHalLoss(-3) else if(sleeping) handle_dreams() - adjustHalLoss(-6) + adjustHalLoss(-3) sleeping = max(sleeping-1, 0) blinded = 1 stat = UNCONSCIOUS @@ -462,12 +462,12 @@ emote("snore") else if(resting) if(halloss > 0) - adjustHalLoss(-6) + adjustHalLoss(-3) //CONSCIOUS else stat = CONSCIOUS if(halloss > 0) - adjustHalLoss(-2) + adjustHalLoss(-1) //Eyes if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own