/mob/human/attack_hand(mob/human/M as mob) switch(M.a_intent) if("help") allergycheck(M, src) ..() if("hurt") allergycheck(M, src) ..() if("grab") allergycheck(M, src) ..() if(M.a_intent != "help" || "hurt" || "grab") allergycheck(M, src) ..() /mob/human/var lallergy = 1.0 // Do you have latex allergies latexallergy = 1.0 // What type anaphylaxis = 0.0 // Are you in anaphylaxis? lexposure = 0.0 // Exposure level allergiesd = "There is no record of any allergies in this patient." mob/human/proc/allergycheck(mob/human/predator, mob/human/prey) // lallergy latexallergy if(predator.gloves && prey.lallergy) prey.show_message(text("\red[] is wearing latex!", predator)) if(prey.latexallergy == 1.0) // Type 1 prey.lexposure++ if(prey.lexposure >= 12) //Anaphylaxis world.log << text("[] is in anaphylaxis shock", prey) prey << "\redYou are having trouble breathing!" prey.anaphylaxis += 10 spawn(250) while(prey.anaphylaxis) sleep(40) if(rand(1,3) == 3) prey.paralysis += 34 prey.oxyloss += 25 if(prey.health >= -75) anaphylaxis -= 5 // oh my /* if("CPR") if ((src.target.health >= -75.0 && src.target.health < 0)) src.target.cpr_time = world.time if (src.target.health >= -40.0) var/suff = min(src.target.oxyloss, 5) src.target.oxyloss -= suff src.target.health = 100 - src.target.oxyloss - src.target.toxloss - src.target.fireloss - src.target.bruteloss if(src.target.rejuv < 10) src.target.rejuv += 10 for(var/mob/O in viewers(src.source, null)) O.show_message(text("\red [] performs CPR on []!", src.source, src.target), 1) src.target.anaphylaxis -= 1 //Foreach goto(3251) src.source << "\red Repeat every 7 seconds AT LEAST." */ /* This system has problems. First, it delays the attack message until it runs the proc, this can be easily fixed though with a check before running the proc! Second, it doesn't update the medical logs(search for the manifest proc, I didn't want to code this in...) I'm not sure if you would consider grab and help counting as 2 contacts a bug, but you can fix it anyways! */