Merge pull request #152 from Abi79/master

TG updates
This commit is contained in:
CIB
2011-12-26 14:28:49 -08:00
117 changed files with 7485 additions and 5896 deletions
+78
View File
@@ -0,0 +1,78 @@
/obj/machinery/disease2/diseaseanalyser
name = "Disease Analyser"
icon = 'virology.dmi'
icon_state = "analyser"
anchored = 1
density = 1
var/scanning = 0
var/pause = 0
var/obj/item/weapon/virusdish/dish = null
/obj/machinery/disease2/diseaseanalyser/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I,/obj/item/weapon/virusdish))
var/mob/living/carbon/c = user
if(!dish)
dish = I
c.drop_item()
I.loc = src
for(var/mob/M in viewers(src))
if(M == user) continue
M.show_message("\blue [user.name] inserts the [dish.name] in the [src.name]", 3)
else
user << "There is already a dish inserted"
//else
return
/obj/machinery/disease2/diseaseanalyser/process()
if(stat & (NOPOWER|BROKEN))
return
use_power(500)
//src.updateDialog()
if(scanning)
scanning -= 1
if(scanning == 0)
var/r = "GNAv2 based virus lifeform"
r += "<BR>Infection rate : [dish.virus2.infectionchance * 10]"
r += "<BR>Spread form : [dish.virus2.spreadtype]"
r += "<BR>Progress Speed : [dish.virus2.stageprob * 10]"
for(var/datum/disease2/effectholder/E in dish.virus2.effects)
r += "<BR>Effect:[E.effect.name]. Strength : [E.multiplier * 8]. Verosity : [E.chance * 15]. Type : [5-E.stage]."
// display the antigens
var/code = ""
for(var/V in ANTIGENS) if(text2num(V) & dish.virus2.antigen) code += ANTIGENS[V]
r += "<BR>Antigen pattern: [code]"
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc)
P.info = r
dish.info = r
dish.analysed = 1
dish.loc = src.loc
dish = null
icon_state = "analyser"
for(var/mob/O in hearers(src, null))
O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3)
else if(dish && !scanning && !pause)
if(dish.virus2 && dish.growth > 50)
dish.growth -= 10
scanning = 5
icon_state = "analyser_processing"
else
pause = 1
spawn(25)
dish.loc = src.loc
dish = null
for(var/mob/M in viewers(src))
M.show_message("\icon[src] \blue The [src.name] buzzes", 2)
pause = 0
return
+54
View File
@@ -0,0 +1,54 @@
// pure concentrated antibodies
datum/reagent/antibodies
data = new/list("antibodies"=0)
name = "Antibodies"
id = "antibodies"
reagent_state = LIQUID
color = "#0050F0"
reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
if(istype(M,/mob/living/carbon/human))
if(src.data && method == INGEST)
if(src.data["antibodies"] & M:virus2.antigen)
M:virus2.dead = 1
return
// reserving some numbers for later special antigens
var/global/const
ANTIGEN_A = 1
ANTIGEN_B = 2
ANTIGEN_RH = 4
ANTIGEN_Q = 8
ANTIGEN_U = 16
ANTIGEN_V = 32
ANTIGEN_X = 64
ANTIGEN_Y = 128
ANTIGEN_Z = 256
ANTIGEN_M = 512
ANTIGEN_N = 1024
ANTIGEN_P = 2048
ANTIGEN_O = 4096
var/global/list/ANTIGENS = list("[ANTIGEN_A]" = "A", "[ANTIGEN_B]" = "B", "[ANTIGEN_RH]" = "RH", "[ANTIGEN_Q]" = "Q",
"[ANTIGEN_U]" = "U", "[ANTIGEN_V]" = "V", "[ANTIGEN_Z]" = "Z", "[ANTIGEN_M]" = "M",
"[ANTIGEN_N]" = "N", "[ANTIGEN_P]" = "P", "[ANTIGEN_O]" = "O")
/obj/item/device/antibody_scanner
name = "Antibody Scanner"
desc = "Used to scan living beings for antibodies in their blood."
icon_state = "health"
w_class = 2.0
item_state = "electronic"
flags = FPRINT | TABLEPASS | ONBELT | CONDUCT | USEDELAY
/obj/item/device/antibody_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob)
if(! istype(M, /mob/living/carbon) || !M:antibodies)
user << "Unable to detect antibodies.."
else
// iterate over the list of antigens and see what matches
var/code = ""
for(var/V in ANTIGENS) if(text2num(V) & M.antibodies) code += ANTIGENS[V]
user << text("\blue [src] The antibody scanner displays a cryptic set of data: [code]")
+591
View File
@@ -0,0 +1,591 @@
/obj/virus
// a virus instance that is placed on the map, moves, and infects
invisibility = 100
var/datum/disease2/disease
New()
..()
step_rand(src)
step_rand(src)
anchored = 1
spawn(300) del(src)
/mob/living/carbon/proc/get_infection_chance()
var/score = 0
var/mob/living/carbon/M = src
if(istype(M, /mob/living/carbon/human))
if(M:gloves)
score += 5
if(istype(M:wear_suit, /obj/item/clothing/suit/space)) score += 10
if(istype(M:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
if(istype(M:head, /obj/item/clothing/head/helmet/space)) score += 5
if(istype(M:head, /obj/item/clothing/head/bio_hood)) score += 5
if(M.wear_mask)
score += 5
if(istype(M:wear_mask, /obj/item/clothing/mask/surgical) && !M.internal)
score += 10
if(M.internal)
score += 10
if(score >= 30)
return 0
else if(score == 25 && prob(99))
return 0
else if(score == 20 && prob(95))
return 0
else if(score == 15 && prob(75))
return 0
else if(score == 10 && prob(55))
return 0
else if(score == 5 && prob(35))
return 0
return 1
/proc/infect_virus2(var/mob/living/carbon/M,var/datum/disease2/disease/disease,var/forced = 0)
if(M.virus2)
return
if(!disease)
return
//immunity
/*for(var/iii = 1, iii <= M.immunevirus2.len, iii++)
if(disease.issame(M.immunevirus2[iii]))
return*/
// if one of the antibodies in the mob's body matches one of the disease's antigens, don't infect
if(M.antibodies & disease.antigen != 0) return
for(var/datum/disease2/resistance/res in M.resistances)
if(res.resistsdisease(disease))
return
if(prob(disease.infectionchance) || forced)
if(M.virus2)
return
else
// certain clothes can prevent an infection
if(!forced && !M.get_infection_chance())
return
M.virus2 = disease.getcopy()
M.virus2.minormutate()
for(var/datum/disease2/resistance/res in M.resistances)
if(res.resistsdisease(M.virus2))
M.virus2 = null
/datum/disease2/resistance
var/list/datum/disease2/effect/resistances = list()
proc/resistsdisease(var/datum/disease2/disease/virus2)
var/list/res2 = list()
for(var/datum/disease2/effect/e in resistances)
res2 += e.type
for(var/datum/disease2/effectholder/holder in virus2)
if(!(holder.effect.type in res2))
return 0
else
res2 -= holder.effect.type
if(res2.len > 0)
return 0
else
return 1
New(var/datum/disease2/disease/virus2)
for(var/datum/disease2/effectholder/h in virus2.effects)
resistances += h.effect.type
/proc/infect_mob_random_lesser(var/mob/living/carbon/M)
if(!M.virus2)
M.virus2 = new /datum/disease2/disease
M.virus2.makerandom()
M.virus2.infectionchance = 1
/proc/infect_mob_random_greater(var/mob/living/carbon/M)
if(!M.virus2)
M.virus2 = new /datum/disease2/disease
M.virus2.makerandom(1)
/datum/disease2/var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here
/datum/disease2/disease
var/infectionchance = 10
var/speed = 1
var/spreadtype = "Blood" // Can also be "Airborne"
var/stage = 1
var/stageprob = 10
var/dead = 0
var/clicks = 0
var/uniqueID = 0
var/list/datum/disease2/effectholder/effects = list()
proc/makerandom(var/greater=0)
var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder
holder.stage = 1
if(greater)
holder.getrandomeffect_greater()
else
holder.getrandomeffect_lesser()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 2
if(greater)
holder.getrandomeffect_greater()
else
holder.getrandomeffect_lesser()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 3
if(greater)
holder.getrandomeffect_greater()
else
holder.getrandomeffect_lesser()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 4
if(greater)
holder.getrandomeffect_greater()
else
holder.getrandomeffect_lesser()
effects += holder
uniqueID = rand(0,10000)
infectionchance = rand(1,10)
// pick 2 antigens
antigen |= text2num(pick(ANTIGENS))
antigen |= text2num(pick(ANTIGENS))
spreadtype = "Airborne"
proc/makealien()
var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder
holder.stage = 1
holder.chance = 10
holder.effect = new/datum/disease2/effect/lesser/gunck()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 2
holder.chance = 10
holder.effect = new/datum/disease2/effect/lesser/cough()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 3
holder.chance = 10
holder.effect = new/datum/disease2/effect/greater/toxins()
effects += holder
holder = new /datum/disease2/effectholder
holder.stage = 4
holder.chance = 10
holder.effect = new/datum/disease2/effect/alien()
effects += holder
uniqueID = 896 // all alien diseases have the same ID
infectionchance = 0
spreadtype = "Airborne"
proc/minormutate()
var/datum/disease2/effectholder/holder = pick(effects)
holder.minormutate()
infectionchance = min(10,infectionchance + rand(0,1))
proc/issame(var/datum/disease2/disease/disease)
var/list/types = list()
var/list/types2 = list()
for(var/datum/disease2/effectholder/d in effects)
types += d.effect.type
var/equal = 1
for(var/datum/disease2/effectholder/d in disease.effects)
types2 += d.effect.type
for(var/type in types)
if(!(type in types2))
equal = 0
return equal
proc/activate(var/mob/living/carbon/mob)
if(dead)
cure(mob)
mob.virus2 = null
return
if(mob.stat == 2)
return
// with a certain chance, the mob may become immune to the disease before it starts properly
if(stage <= 1 && clicks == 0)
if(prob(20))
mob.antibodies |= antigen // 20% immunity is a good chance IMO, because it allows finding an immune person easily
else
if(mob.radiation > 50)
if(prob(1))
majormutate()
if(mob.reagents.has_reagent("spaceacillin"))
mob.reagents.remove_reagent("spaceacillin",0.3)
return
if(mob.reagents.has_reagent("virusfood"))
mob.reagents.remove_reagent("virusfood",0.1)
clicks += 10
if(clicks > stage*100 && prob(10))
if(stage == 4)
var/datum/disease2/resistance/res = new /datum/disease2/resistance(src)
src.cure(mob)
mob.resistances2 += res
mob.antibodies |= src.antigen
mob.virus2 = null
del src
stage++
clicks = 0
for(var/datum/disease2/effectholder/e in effects)
e.runeffect(mob,stage)
clicks+=speed
proc/cure(var/mob/living/carbon/mob)
var/datum/disease2/effectholder/E
if(stage>1)
E = effects[1]
E.effect.deactivate(mob)
if(stage>2)
E = effects[2]
E.effect.deactivate(mob)
if(stage>3)
E = effects[3]
E.effect.deactivate(mob)
if(stage>4)
E = effects[4]
E.effect.deactivate(mob)
proc/cure_added(var/datum/disease2/resistance/res)
if(res.resistsdisease(src))
dead = 1
proc/majormutate()
var/datum/disease2/effectholder/holder = pick(effects)
holder.majormutate()
proc/getcopy()
// world << "getting copy"
var/datum/disease2/disease/disease = new /datum/disease2/disease
disease.infectionchance = infectionchance
disease.spreadtype = spreadtype
disease.stageprob = stageprob
disease.antigen = antigen
for(var/datum/disease2/effectholder/holder in effects)
// world << "adding effects"
var/datum/disease2/effectholder/newholder = new /datum/disease2/effectholder
newholder.effect = new holder.effect.type
newholder.chance = holder.chance
newholder.cure = holder.cure
newholder.multiplier = holder.multiplier
newholder.happensonce = holder.happensonce
newholder.stage = holder.stage
disease.effects += newholder
// world << "[newholder.effect.name]"
// world << "[disease]"
return disease
/datum/disease2/effect
var/chance_maxm = 100
var/name = "Blanking effect"
var/stage = 4
var/maxm = 1
proc/activate(var/mob/living/carbon/mob,var/multiplier)
proc/deactivate(var/mob/living/carbon/mob)
/datum/disease2/effect/alien
name = "Unidentified Foreign Body"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob << "\red You feel something tearing its way out of your stomach..."
mob.toxloss += 10
mob.updatehealth()
if(prob(40))
if(mob.client)
mob.client.mob = new/mob/living/carbon/alien/larva(mob.loc)
else
new/mob/living/carbon/alien/larva(mob.loc)
var/datum/disease2/disease/D = mob:virus2
mob:gib()
del D
/datum/disease2/effect/greater/gibbingtons
name = "Gibbingtons Syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.gib()
/datum/disease2/effect/greater/radian
name = "Radian's syndrome"
stage = 4
maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.radiation += (2*multiplier)
/datum/disease2/effect/greater/toxins
name = "Hyperacid Syndrome"
stage = 3
maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.toxloss += (2*multiplier)
/datum/disease2/effect/greater/scream
name = "Random screaming syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*scream")
/datum/disease2/effect/greater/drowsness
name = "Automated sleeping syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.drowsyness += 10
/datum/disease2/effect/greater/shakey
name = "World Shaking syndrome"
stage = 3
maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
shake_camera(mob,5*multiplier)
/datum/disease2/effect/greater/deaf
name = "Hard of hearing syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.ear_deaf += 20
/datum/disease2/effect/invisible
name = "Waiting Syndrome"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
return
/datum/disease2/effect/greater/telepathic
name = "Telepathy Syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.mutations |= 512
/*/datum/disease2/effect/greater/noface
name = "Identity Loss syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.face_dmg++
deactivate(var/mob/living/carbon/mob)
mob.face_dmg--*/
/datum/disease2/effect/greater/monkey
name = "Monkism syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
h.monkeyize()
/datum/disease2/effect/greater/sneeze
name = "Coldingtons Effect"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*sneeze")
/datum/disease2/effect/greater/gunck
name = "Flemmingtons"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob << "\red Mucous runs down the back of your throat."
/datum/disease2/effect/greater/killertoxins
name = "Toxification syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.toxloss += 15
/*/datum/disease2/effect/greater/hallucinations
name = "Hallucinational Syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.hallucination += 25*/
/datum/disease2/effect/greater/sleepy
name = "Resting syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*collapse")
/datum/disease2/effect/greater/mind
name = "Lazy mind syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.brainloss = 50
/datum/disease2/effect/greater/suicide
name = "Suicidal syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.suiciding = 1
//instead of killing them instantly, just put them at -175 health and let 'em gasp for a while
viewers(mob) << "\red <b>[mob.name] is holding \his breath. It looks like \he's trying to commit suicide.</b>"
mob.oxyloss = max(175 - mob.toxloss - mob.fireloss - mob.bruteloss, mob.oxyloss)
mob.updatehealth()
spawn(200) //in case they get revived by cryo chamber or something stupid like that, let them suicide again in 20 seconds
mob.suiciding = 0
// lesser syndromes, partly just copypastes
/datum/disease2/effect/lesser/mind
name = "Lazy mind syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.brainloss = 20
/datum/disease2/effect/lesser/drowsy
name = "Bedroom Syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.drowsyness = 5
/datum/disease2/effect/lesser/deaf
name = "Hard of hearing syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.ear_deaf = 5
/datum/disease2/effect/lesser/gunck
name = "Flemmingtons"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob << "\red Mucous runs down the back of your throat."
/datum/disease2/effect/lesser/radian
name = "Radian's syndrome"
stage = 4
maxm = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.radiation += 1
/datum/disease2/effect/lesser/sneeze
name = "Coldingtons Effect"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*sneeze")
/datum/disease2/effect/lesser/cough
name = "Anima Syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*cough")
/*/datum/disease2/effect/lesser/hallucinations
name = "Hallucinational Syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.hallucination += 5*/
/*/datum/disease2/effect/lesser/arm
name = "Disarming Syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
var/datum/organ/external/org = mob.organs["r_arm"]
org.take_damage(3,0,0,0)
mob << "\red You feel a sting in your right arm."*/
/datum/disease2/effect/lesser/hungry
name = "Appetiser Effect"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.nutrition = max(0, mob.nutrition - 200)
/datum/disease2/effect/lesser/groan
name = "Groaning Syndrome"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*groan")
/datum/disease2/effect/lesser/scream
name = "Loudness Syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*scream")
/datum/disease2/effect/lesser/drool
name = "Saliva Effect"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*drool")
/datum/disease2/effect/lesser/fridge
name = "Refridgerator Syndrome"
stage = 2
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*shiver")
/datum/disease2/effect/lesser/twitch
name = "Twitcher"
stage = 1
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*twitch")
/*Removed on request by Spaceman, due to it being detrimental to RP. -CN
/datum/disease2/effect/lesser/deathgasp
name = "Zombie Syndrome"
stage = 4
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*deathgasp")*/
/datum/disease2/effect/lesser/giggle
name = "Uncontrolled Laughter Effect"
stage = 3
activate(var/mob/living/carbon/mob,var/multiplier)
mob.say("*giggle")
/datum/disease2/effect/lesser
chance_maxm = 10
/datum/disease2/effectholder
var/name = "Holder"
var/datum/disease2/effect/effect
var/chance = 0 //Chance in percentage each tick
var/cure = "" //Type of cure it requires
var/happensonce = 0
var/multiplier = 1 //The chance the effects are WORSE
var/stage = 0
proc/runeffect(var/mob/living/carbon/human/mob,var/stage)
if(happensonce > -1 && effect.stage <= stage && prob(chance))
effect.activate(mob)
if(happensonce == 1)
happensonce = -1
proc/getrandomeffect_greater()
var/list/datum/disease2/effect/list = list()
for(var/e in (typesof(/datum/disease2/effect/greater) - /datum/disease2/effect/greater))
// world << "Making [e]"
var/datum/disease2/effect/f = new e
if(f.stage == src.stage)
list += f
effect = pick(list)
chance = rand(1,6)
proc/getrandomeffect_lesser()
var/list/datum/disease2/effect/list = list()
for(var/e in (typesof(/datum/disease2/effect/lesser) - /datum/disease2/effect/lesser))
var/datum/disease2/effect/f = new e
if(f.stage == src.stage)
list += f
effect = pick(list)
chance = rand(1,6)
proc/minormutate()
switch(pick(1,2,3,4,5))
if(1)
chance = rand(0,effect.chance_maxm)
if(2)
multiplier = rand(1,effect.maxm)
proc/majormutate()
getrandomeffect_greater()
/proc/dprob(var/p)
return(prob(sqrt(p)) && prob(sqrt(p)))
@@ -0,0 +1,20 @@
/obj/machinery/disease2/biodestroyer
name = "Biohazard destroyer"
icon = 'disposal.dmi'
icon_state = "disposalbio"
var/list/accepts = list(/obj/item/clothing,/obj/item/weapon/virusdish/,/obj/item/weapon/cureimplanter,/obj/item/weapon/diseasedisk,/obj/item/weapon/reagent_containers)
density = 1
anchored = 1
/obj/machinery/disease2/biodestroyer/attackby(var/obj/I as obj, var/mob/user as mob)
for(var/path in accepts)
if(I.type in typesof(path))
user.drop_item()
del(I)
overlays += image('disposal.dmi', "dispover-handle")
return
user.drop_item()
I.loc = src.loc
for(var/mob/O in hearers(src, null))
O.show_message("\icon[src] \blue The [src.name] beeps", 2)
@@ -0,0 +1,43 @@
/obj/item/weapon/cureimplanter
name = "Hypospray injector"
icon = 'items.dmi'
icon_state = "implanter1"
var/datum/disease2/resistance/resistance = null
var/works = 0
var/datum/disease2/disease/virus2 = null
item_state = "syringe_0"
throw_speed = 1
throw_range = 5
w_class = 2.0
/obj/item/weapon/cureimplanter/attack(mob/target as mob, mob/user as mob)
if(ismob(target))
for(var/mob/O in viewers(world.view, user))
if (target != user)
O.show_message(text("\red <B>[] is trying to inject [] with [src.name]!</B>", user, target), 1)
else
O.show_message("\red <B>[user] is trying to inject themselves with [src.name]!</B>", 1)
if(!do_mob(user, target,60)) return
for(var/mob/O in viewers(world.view, user))
if (target != user)
O.show_message(text("\red [] injects [] with [src.name]!", user, target), 1)
else
O.show_message("\red [user] injects themself with [src.name]!", 1)
var/mob/living/carbon/M = target
if(works == 0)
M.resistances2 += resistance
//M.immunevirus2 += M.virus2.getcopy()
if(M.virus2)
M.virus2.cure_added(resistance)
else if(works == 1)
M.toxloss += 60
else if(works == 2)
M.gib()
else if(works == 3)
infect_virus2(M,virus2,1)
+129
View File
@@ -0,0 +1,129 @@
/obj/machinery/computer/curer
name = "Cure Research Machine"
icon = 'computer.dmi'
icon_state = "dna"
var/curing
var/virusing
var/obj/item/weapon/reagent_containers/container = null
/obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/screwdriver))
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)
user << "\blue The broken glass falls out."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
new /obj/item/weapon/shard( src.loc )
//var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
for (var/obj/C in src)
C.loc = src.loc
//A.circuit = M
A.state = 3
A.icon_state = "3"
A.anchored = 1
del(src)
else
user << "\blue You disconnect the monitor."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
//var/obj/item/weapon/circuitboard/curer/M = new /obj/item/weapon/circuitboard/curer( A )
for (var/obj/C in src)
C.loc = src.loc
//A.circuit = M
A.state = 4
A.icon_state = "4"
A.anchored = 1
del(src)
if(istype(I,/obj/item/weapon/reagent_containers))
var/mob/living/carbon/C = user
if(!container)
container = I
C.drop_item()
I.loc = src
//else
src.attack_hand(user)
return
/obj/machinery/computer/curer/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/curer/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
return
/obj/machinery/computer/curer/attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
var/dat
if(curing)
dat = "Antibody production in progress"
else if(virusing)
dat = "Virus production in progress"
else if(container)
// see if there's any blood in the container
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in container.reagents.reagent_list
if(B)
dat = "Blood sample inserted."
dat += "<BR><A href='?src=\ref[src];antibody=1'>Begin antibody production</a>"
else
dat += "<BR>Please check container contents."
dat += "<BR><A href='?src=\ref[src];eject=1'>Eject container</a>"
else
dat = "Please insert a container."
user << browse(dat, "window=computer;size=400x500")
onclose(user, "computer")
return
/obj/machinery/computer/curer/process()
..()
if(stat & (NOPOWER|BROKEN))
return
use_power(500)
//src.updateDialog()
if(curing)
curing -= 1
if(curing == 0)
if(container)
createcure(container)
return
/obj/machinery/computer/curer/Topic(href, href_list)
if(..())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if (href_list["antibody"])
curing = 10
else if(href_list["eject"])
container.loc = src.loc
container = null
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/curer/proc/createcure(var/obj/item/weapon/reagent_containers/container)
var/obj/item/weapon/reagent_containers/glass/beaker/product = new(src.loc)
var/datum/reagent/blood/B = locate() in container.reagents.reagent_list
var/list/data = list()
data["antibodies"] = B.data["antibodies"]
product.reagents.add_reagent("antibodies",30,data)
state("The [src.name] Buzzes", "blue")
/obj/machinery/computer/curer/proc/createvirus(var/datum/disease2/disease/virus2)
var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc)
implanter.name = "Viral implanter (MAJOR BIOHAZARD)"
implanter.works = 3
state("The [src.name] Buzzes", "blue")
@@ -0,0 +1,185 @@
/obj/machinery/computer/diseasesplicer
name = "Disease Splicer"
icon = 'computer.dmi'
icon_state = "crew"
var/datum/disease2/effectholder/memorybank = null
var/analysed = 0
var/obj/item/weapon/virusdish/dish = null
var/burning = 0
var/splicing = 0
var/scanning = 0
/obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/mob/user as mob)
if(istype(I, /obj/item/weapon/screwdriver))
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)
user << "\blue The broken glass falls out."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
new /obj/item/weapon/shard( src.loc )
//var/obj/item/weapon/circuitboard/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( A )
for (var/obj/C in src)
C.loc = src.loc
//A.circuit = M
A.state = 3
A.icon_state = "3"
A.anchored = 1
del(src)
else
user << "\blue You disconnect the monitor."
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
//var/obj/item/weapon/circuitboard/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( A )
for (var/obj/C in src)
C.loc = src.loc
//A.circuit = M
A.state = 4
A.icon_state = "4"
A.anchored = 1
del(src)
if(istype(I,/obj/item/weapon/virusdish))
var/mob/living/carbon/c = user
if(!dish)
dish = I
c.drop_item()
I.loc = src
if(istype(I,/obj/item/weapon/diseasedisk))
user << "You upload the contents of the disk into the buffer"
memorybank = I:effect
//else
src.attack_hand(user)
return
/obj/machinery/computer/diseasesplicer/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
/obj/machinery/computer/diseasesplicer/attack_paw(var/mob/user as mob)
return src.attack_hand(user)
return
/obj/machinery/computer/diseasesplicer/attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
var/dat
if(splicing)
dat = "Splicing in progress"
else if(scanning)
dat = "Splicing in progress"
else if(burning)
dat = "Data disk burning in progress"
else
if(dish)
dat = "Virus dish inserted"
dat += "<BR>Current DNA strand : "
if(memorybank)
dat += "<A href='?src=\ref[src];splice=1'>"
if(analysed)
dat += "[memorybank.effect.name] ([5-memorybank.effect.stage])"
else
dat += "Unknown DNA strand ([5-memorybank.effect.stage])"
dat += "</a>"
dat += "<BR><A href='?src=\ref[src];disk=1'>Burn DNA Sequence to data storage disk</a>"
else
dat += "Empty"
dat += "<BR><BR>"
if(dish)
if(dish.virus2)
if(dish.growth >= 50)
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
dat += "<BR><A href='?src=\ref[src];grab=\ref[e]'> DNA strand"
if(dish.analysed)
dat += ": [e.effect.name]"
dat += " (5-[e.effect.stage])</a>"
else
dat += "<BR>Insufficent cells to attempt gene splicing"
else
dat += "<BR>No virus found in dish"
dat += "<BR><BR><A href='?src=\ref[src];eject=1'>Eject disk</a>"
else
dat += "<BR>Please insert dish"
user << browse(dat, "window=computer;size=400x500")
onclose(user, "computer")
return
/obj/machinery/computer/diseasesplicer/process()
if(stat & (NOPOWER|BROKEN))
return
use_power(500)
//src.updateDialog()
if(scanning)
scanning -= 1
if(!scanning)
state("The [src.name] beeps", "blue")
if(splicing)
splicing -= 1
if(!splicing)
state("The [src.name] pings", "blue")
if(burning)
burning -= 1
if(!burning)
var/obj/item/weapon/diseasedisk/d = new /obj/item/weapon/diseasedisk(src.loc)
if(analysed)
d.name = "[memorybank.effect.name] GNA disk (Stage: [5-memorybank.effect.stage])"
else
d.name = "Unknown GNA disk (Stage: [5-memorybank.effect.stage])"
d.effect = memorybank
state("The [src.name] zings", "blue")
return
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
if(..())
return
if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.machine = src
if (href_list["grab"])
memorybank = locate(href_list["grab"])
analysed = dish.analysed
del(dish)
dish = null
scanning = 10
else if(href_list["eject"])
dish.loc = src.loc
dish = null
else if(href_list["splice"])
for(var/datum/disease2/effectholder/e in dish.virus2.effects)
if(e.stage == memorybank.stage)
e.effect = memorybank.effect
splicing = 10
dish.virus2.spreadtype = "Blood"
else if(href_list["disk"])
burning = 10
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/item/weapon/diseasedisk
name = "Blank GNA disk"
icon = 'items.dmi'
icon_state = "datadisk0"
var/datum/disease2/effectholder/effect = null
var/stage = 1
/obj/item/weapon/diseasedisk/premade/New()
name = "Blank GNA disk (stage: [5-stage])"
effect = new /datum/disease2/effectholder
effect.effect = new /datum/disease2/effect/invisible
effect.stage = stage
+169
View File
@@ -0,0 +1,169 @@
/obj/machinery/disease2/incubator/
name = "Pathogenic incubator"
density = 1
anchored = 1
icon = 'virology.dmi'
icon_state = "incubator"
var/obj/item/weapon/virusdish/dish
var/obj/item/weapon/reagent_containers/glass/beaker = null
var/radiation = 0
var/on = 0
var/power = 0
var/foodsupply = 0
var/toxins = 0
ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
if (prob(50))
del(src)
return
blob_act()
if (prob(25))
del(src)
meteorhit()
del(src)
return
attackby(var/obj/B as obj, var/mob/user as mob)
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe))
if(src.beaker)
if(istype(beaker,/obj/item/weapon/reagent_containers/syringe))
user << "A syringe is already loaded into the machine."
else
user << "A beaker is already loaded into the machine."
return
src.beaker = B
user.drop_item()
B.loc = src
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
user << "You add the syringe to the machine!"
src.updateUsrDialog()
else
user << "You add the beaker to the machine!"
src.updateUsrDialog()
else
if(istype(B,/obj/item/weapon/virusdish))
if(src.dish)
user << "A dish is already loaded into the machine."
return
src.dish = B
user.drop_item()
B.loc = src
if(istype(B,/obj/item/weapon/virusdish))
user << "You add the dish to the machine!"
src.updateUsrDialog()
Topic(href, href_list)
if(stat & BROKEN) return
if(usr.stat || usr.restrained()) return
if(!in_range(src, usr)) return
if (href_list["ejectchem"])
if(beaker)
beaker.loc = src.loc
beaker = null
if(!dish)
return
usr.machine = src
if (href_list["power"])
on = !on
if(on)
icon_state = "incubator_on"
else
icon_state = "incubator"
if (href_list["ejectdish"])
if(dish)
dish.loc = src.loc
dish = null
if (href_list["rad"])
radiation += 10
if (href_list["flush"])
radiation = 0
toxins = 0
foodsupply = 0
src.add_fingerprint(usr)
src.updateUsrDialog()
attack_hand(mob/user as mob)
if(stat & BROKEN)
return
user.machine = src
var/dat = ""
if(!dish)
dat = "Please insert dish into the incubator.<BR>"
var/string = "Off"
if(on)
string = "On"
dat += "Power status : <A href='?src=\ref[src];power=1'>[string]</a>"
dat += "<BR>"
dat += "Food supply : [foodsupply]"
dat += "<BR>"
dat += "Radiation Levels : [radiation] RADS : <A href='?src=\ref[src];rad=1'>Radiate</a>"
dat += "<BR>"
dat += "Toxins : [toxins]"
dat += "<BR><BR>"
if(beaker)
dat += "Eject chemicals : <A href='?src=\ref[src];ejectchem=1'> Eject</a>"
dat += "<BR>"
if(dish)
dat += "Eject Virus dish : <A href='?src=\ref[src];ejectdish=1'> Eject</a>"
dat += "<BR>"
dat += "<BR><BR>"
dat += "<A href='?src=\ref[src];flush=1'>Flush system</a><BR>"
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse("<TITLE>Pathogenic incubator</TITLE>incubator menu:<BR><BR>[dat]", "window=incubator;size=575x400")
onclose(user, "incubator")
return
process()
if(dish && on && dish.virus2)
use_power(50,EQUIP)
if(!powered(EQUIP))
on = 0
icon_state = "incubator"
if(foodsupply)
foodsupply -= 1
dish.growth += 3
if(dish.growth >= 100)
state("The [src.name] pings", "blue")
if(radiation)
if(radiation > 50 & prob(5))
dish.virus2.majormutate()
if(dish.info)
dish.info = "OUTDATED : [dish.info]"
dish.analysed = 0
state("The [src.name] beeps", "blue")
else if(prob(5))
dish.virus2.minormutate()
radiation -= 1
if(toxins && prob(5))
dish.virus2.infectionchance -= 1
if(toxins > 50)
dish.virus2 = null
else if(!dish)
on = 0
icon_state = "incubator"
if(beaker)
if(!beaker.reagents.remove_reagent("virusfood",5))
foodsupply += 10
if(!beaker.reagents.remove_reagent("toxins",1))
toxins += 1
+158
View File
@@ -0,0 +1,158 @@
/obj/machinery/disease2/isolator/
name = "Pathogenic Isolator"
density = 1
anchored = 1
icon = 'virology.dmi'
icon_state = "isolator"
var/datum/disease2/disease/virus2 = null
var/isolating = 0
var/beaker = null
ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
if (prob(50))
del(src)
return
blob_act()
if (prob(25))
del(src)
meteorhit()
del(src)
return
attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob)
if(!istype(B,/obj/item/weapon/reagent_containers/syringe))
return
if(src.beaker)
user << "A syringe is already loaded into the machine."
return
src.beaker = B
user.drop_item()
B.loc = src
if(istype(B,/obj/item/weapon/reagent_containers/syringe))
user << "You add the syringe to the machine!"
src.updateUsrDialog()
icon_state = "isolator_in"
Topic(href, href_list)
if(stat & BROKEN) return
if(usr.stat || usr.restrained()) return
if(!in_range(src, usr)) return
usr.machine = src
if(!beaker) return
var/datum/reagents/R = beaker:reagents
if (href_list["isolate"])
var/datum/reagent/blood/Blood
for(var/datum/reagent/blood/B in R.reagent_list)
if(B)
Blood = B
break
if(Blood.data["virus2"])
virus2 = Blood.data["virus2"]
isolating = 40
icon_state = "isolator_processing"
src.updateUsrDialog()
return
else if (href_list["main"])
attack_hand(usr)
return
else if (href_list["eject"])
beaker:loc = src.loc
beaker = null
icon_state = "isolator"
src.updateUsrDialog()
return
attack_hand(mob/user as mob)
if(stat & BROKEN)
return
user.machine = src
var/dat = ""
if(!beaker)
dat = "Please insert sample into the isolator.<BR>"
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
else if(isolating)
dat = "Isolating"
else
var/datum/reagents/R = beaker:reagents
dat += "<A href='?src=\ref[src];eject=1'>Eject</A><BR><BR>"
if(!R.total_volume)
dat += "[beaker] is empty."
else
dat += "Contained reagents:<BR>"
for(var/datum/reagent/blood/G in R.reagent_list)
dat += " [G.name]: <A href='?src=\ref[src];isolate=[G.id]'>Isolate</a>"
user << browse("<TITLE>Pathogenic Isolator</TITLE>Isolator menu:<BR><BR>[dat]", "window=isolator;size=575x400")
onclose(user, "isolator")
return
process()
if(isolating > 0)
isolating -= 1
if(isolating == 0)
var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc)
d.virus2 = virus2.getcopy()
virus2 = null
icon_state = "isolator_in"
/obj/item/weapon/virusdish
name = "Virus containment/growth dish"
icon = 'items.dmi'
icon_state = "implantcase-b"
var/datum/disease2/disease/virus2 = null
var/growth = 0
var/info = 0
var/analysed = 0
reagents = list()
/obj/item/weapon/virusdish/random
name = "Virus Sample"
/obj/item/weapon/virusdish/random/New()
..()
// add a random virus to this dish
src.virus2 = new /datum/disease2/disease
src.virus2.makerandom()
growth = rand(5, 50)
/obj/item/weapon/virusdish/attackby(var/obj/item/weapon/W as obj,var/mob/living/carbon/user as mob)
if(istype(W,/obj/item/weapon/hand_labeler) || istype(W,/obj/item/weapon/reagent_containers/syringe))
return
..()
if(prob(50))
user << "The dish shatters"
if(virus2.infectionchance > 0)
// spread around some pathogens
for(var/i = 0, i<= (growth / 3), i++)
var/obj/virus/V = new(src.loc)
V.disease = virus2.getcopy()
del src
/obj/item/weapon/virusdish/examine()
usr << "This is a virus containment dish"
if(src.info)
usr << "It has the following information about its contents"
usr << src.info
/obj/machinery/proc/state(var/msg)
for(var/mob/O in hearers(src, null))
O.show_message("\icon[src] \blue [msg]", 2)
@@ -0,0 +1,30 @@
/obj/machinery/disease2/monkeycloner
name = "Monkey dispensor"
icon = 'cloning.dmi'
icon_state = "pod_0"
density = 1
anchored = 1
var/cloning = 0
/obj/machinery/disease2/monkeycloner/attack_hand()
if(!cloning)
cloning = 150
icon_state = "pod_g"
/obj/machinery/disease2/monkeycloner/process()
if(stat & (NOPOWER|BROKEN))
return
use_power(500)
//src.updateDialog()
if(cloning)
cloning -= 1
if(!cloning)
new /mob/living/carbon/monkey(src.loc)
icon_state = "pod_0"
return
+4 -4
View File
@@ -21,19 +21,19 @@
if(2)
if(prob(3))
affected_mob << "\red You feel a stabbing pain in your abdomen!"
affected_mob.stunned = rand(2,3)
affected_mob.Stun(rand(2,3))
affected_mob.adjustToxLoss(1)
if(3)
if(prob(1))
if (affected_mob.nutrition > 100)
affected_mob.stunned = rand(4,6)
affected_mob.Stun(rand(4,6))
affected_mob << "\red You throw up!"
var/turf/location = affected_mob.loc
if (istype(location, /turf/simulated))
location.add_vomit_floor(affected_mob)
affected_mob.nutrition -= 95
affected_mob:adjustToxLoss(-1)
affected_mob.adjustToxLoss(-1)
else
affected_mob << "\red You gag as you want to throw up, but there's nothing in your stomach!"
affected_mob.weakened += 10
affected_mob.Weaken(10)
affected_mob.adjustToxLoss(3)
+1 -1
View File
@@ -59,7 +59,7 @@
affected_mob << "\red You lose consciousness..."
for(var/mob/O in viewers(affected_mob, null))
O.show_message("[affected_mob] suddenly collapses", 1)
affected_mob.paralysis = rand(5,10)
affected_mob.Paralyse(rand(5,10))
if(prob(1))
affected_mob.emote("snore")
if(prob(15))
+1 -1
View File
@@ -60,7 +60,7 @@
affected_mob << "You feel very strange."
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head!"
affected_mob.paralysis += 2
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red Your stomach churns."
if(3)
@@ -36,7 +36,7 @@
affected_mob.take_organ_damage(5)
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head."
affected_mob.paralysis += 2
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red You can feel something move...inside."
if(4)
+1 -1
View File
@@ -36,7 +36,7 @@
affected_mob.take_organ_damage(5)
if (prob(4))
affected_mob << "\red You feel a stabbing pain in your head."
affected_mob.paralysis += 2
affected_mob.Paralyse(2)
if (prob(4))
affected_mob << "\red You can feel something move...inside."
if(4)
+6 -4
View File
@@ -2,8 +2,9 @@
name = "Inflict Handler"
desc = "This spell blinds and/or destroys/damages/heals and/or weakens/stuns the target."
var/amt_weaken = 0
var/amt_paralysis = 0 //stun
var/amt_weakened = 0
var/amt_paralysis = 0
var/amt_stunned = 0
//set to negatives for healing
var/amt_dam_fire = 0
@@ -43,8 +44,9 @@
target.adjustToxLoss(amt_dam_tox)
target.oxyloss += amt_dam_oxy
//disabling
target.weakened += amt_weaken
target.paralysis += amt_paralysis
target.Weaken(amt_weakened)
target.Paralyse(amt_paralysis)
target.Stun(amt_stunned)
target.eye_blind += amt_eye_blind
target.eye_blurry += amt_eye_blurry
+2 -2
View File
@@ -115,8 +115,8 @@ Also, you never added distance checking after target is selected. I've went ahea
victim.mind.current = victim
//Here we paralyze both mobs and knock them out for a time.
caster.paralysis += paralysis_amount_caster
victim.paralysis += paralysis_amount_victim
caster.Paralyse(paralysis_amount_caster)
victim.Paralyse(paralysis_amount_victim)
//After a certain amount of time the victim gets a message about being in a different body.
spawn(msg_wait)
+1 -1
View File
@@ -24,7 +24,7 @@
proj_trail_icon_state = "magicmd"
/obj/effect/proc_holder/spell/targeted/inflict_handler/magic_missile
amt_weaken = 5
amt_weakened = 5
amt_dam_fire = 10
/obj/effect/proc_holder/spell/targeted/genetic/mutate
+2 -1
View File
@@ -7,4 +7,5 @@
var/appendix_op_stage = 0.0
var/datum/disease2/disease/virus2 = null
var/list/datum/disease2/disease/resistances2 = list()
var/list/datum/disease2/disease/resistances2 = list()
var/antibodies = 0
-7
View File
@@ -446,9 +446,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
/mob/proc/adjustBruteLoss(var/amount)
bruteloss = max(bruteloss + amount, 0)
/mob/proc/setBruteLoss(var/amount)
bruteloss = amount
/mob/proc/getOxyLoss()
return oxyloss
@@ -473,10 +470,6 @@ the mob is also allowed to move without any sort of restriction. For instance, i
/mob/proc/adjustFireLoss(var/amount)
fireloss = max(fireloss + amount, 0)
/mob/proc/setFireLoss(var/amount)
fireloss = amount
/mob/proc/getCloneLoss()
return cloneloss
+73 -1
View File
@@ -192,7 +192,7 @@
..()
//Feeding, chasing food, FOOOOODDDD
if(alive && !resting && !buckled)
if(alive && !restrained() )
turns_since_scan++
if(turns_since_scan > 5)
turns_since_scan = 0
@@ -239,6 +239,78 @@
dir = i
sleep(1)
/mob/living/simple_animal/corgi/Ian/restrained()
if(resting || buckled)
return 1
return 0
/mob/living/simple_animal/corgi/Ian/verb/stoppull()
set name = "Stop pulling"
set category = "IC"
pulling = null
/mob/living/simple_animal/corgi/Ian/Move()
if(restrained())
pulling = null
return
var/turf/old_loc
var/turf/new_loc
if(isturf(loc))
old_loc = src.loc
else
return //in a container, cannot move
..()
if(isturf(loc))
new_loc = src.loc
else
return //in a container, cannot move
if(old_loc == new_loc)
return //has not moved
if(pulling)
if(isturf(old_loc) && isturf(pulling.loc))
if(get_dist(src.loc,old_loc) > 1)
world << "get_dist(src.loc,pulling.loc)"
pulling = null
return
else
pulling = null
return
if(istype(pulling,/obj/item))
var/obj/item/I = pulling
if(I.w_class > 4)
pulling = null
return
if(I.anchored)
pulling = null
return
I.loc = old_loc
return
if(ismob(pulling))
var/mob/M = pulling
if(!M.stat)
pulling = null
return //cannot drag live people
if(M.anchored)
pulling = null
return
if(M.restrained())
pulling = null
return
M.loc = old_loc
return
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
name = "Corgi meat"
desc = "Tastes like... well you know..."
+9 -2
View File
@@ -168,8 +168,15 @@
anchored = 1.0
opacity = 0
density = 0
pixel_x = -1
pixel_y = -1
/obj/effect/sign/pods
desc = "A warning sign which reads 'ESCAPE PODS'"
name = "ESCAPE PODS"
icon = 'decals.dmi'
icon_state = "pods"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/fire
desc = "A warning sign which reads 'EXTREME TEMPERATURES'"
+2 -2
View File
@@ -53,13 +53,13 @@
/obj/item/clothing/head/redcoat
name = "Redcoat hat"
icon_state = "redcoat"
desc = "I guess it's a redhad."
desc = "I guess it's a redhead."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/mailman
name = "Mailman Hat"
icon_state = "mailman"
desc = "Right-on-time mail ervice head wear."
desc = "Right-on-time mail service head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/plaguedoctorhat
+2 -2
View File
@@ -213,7 +213,7 @@
return
else if (bullets == 0)
user.weakened += 5
user.Weaken(5)
for(var/mob/O in viewers(world.view, user))
O.show_message(text("\red [] realized they were out of ammo and starting scrounging for some!", user), 1)
@@ -236,7 +236,7 @@
else if (M.lying && src.bullets == 0)
for(var/mob/O in viewers(M, null))
if (O.client) O.show_message(text("\red <B>[] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!</B>", user, M), 1, "\red You hear someone fall", 2)
user.weakened += 5
user.Weaken(5)
return
/obj/item/toy/crayonbox
+2
View File
@@ -97,6 +97,8 @@
vote = new /datum/vote()
// coffinhandler = new /datum/coffinhandler()
radio_controller = new /datum/controller/radio()
//main_hud1 = new /obj/hud()
data_core = new /obj/datacore()
+1 -1
View File
@@ -279,7 +279,7 @@
M.disabilities |= 1
M << "\red Your eyes feel strange."
if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),2))
if(inj || prob(15))
if(inj || prob(5))
M << "\blue Your muscles hurt."
M.mutations |= HULK
if (isblockon(getblock(M.dna.struc_enzymes, 3,3),3))
@@ -241,9 +241,9 @@
O.name = text("monkey ([])",copytext(md5(usr.real_name), 2, 6))
O.setToxLoss(usr.getToxLoss())
O.setBruteLoss(usr.getBruteLoss())
O.adjustBruteLoss(usr.getBruteLoss())
O.setOxyLoss(usr.getOxyLoss())
O.setFireLoss(usr.getFireLoss())
O.adjustFireLoss(usr.getFireLoss())
O.stat = usr.stat
O.a_intent = "hurt"
for (var/obj/item/weapon/implant/I in implants)
@@ -336,9 +336,9 @@
updateappearance(O,O.dna.uni_identity)
domutcheck(O, null)
O.setToxLoss(usr.getToxLoss())
O.setBruteLoss(usr.getBruteLoss())
O.adjustBruteLoss(usr.getBruteLoss())
O.setOxyLoss(usr.getOxyLoss())
O.setFireLoss(usr.getFireLoss())
O.adjustFireLoss(usr.getFireLoss())
O.stat = usr.stat
for (var/obj/item/weapon/implant/I in implants)
I.loc = O
@@ -383,9 +383,9 @@
//usr.bruteloss = 0
usr.setOxyLoss(0)
usr.setCloneLoss(0)
usr.paralysis = 0
usr.stunned = 0
usr.weakened = 0
usr.SetParalysis(0)
usr.SetStunned(0)
usr.SetWeakened(0)
usr.radiation = 0
//usr.health = 100
//usr.updatehealth()
@@ -269,9 +269,9 @@ Movement impairing would indicate drugs and the like.*/
var/mob/living/carbon/human/U = affecting
//Wouldn't need to track adrenaline boosters if there was a miracle injection to get rid of paralysis and the like instantly.
//For now, adrenaline boosters ARE the miracle injection. Well, radium, really.
U.paralysis = 0
U.stunned = 0
U.weakened = 0
U.SetParalysis(0)
U.SetStunned(0)
U.SetWeakened(0)
/*
Due to lag, it was possible to adrenaline boost but remain helpless while life.dm resets player stat.
This lead to me and others spamming adrenaline boosters because they failed to kick in on time.
+3 -4
View File
@@ -24,14 +24,13 @@
/datum/game_mode/meteor/process()
if(nometeors) return
if(prob(80))
/*if(prob(80))
spawn()
dust_swarm("norm")
else
spawn()
dust_swarm("strong")
if(prob(10)) meteor_wave()
else spawn_meteors()
dust_swarm("strong")*/
spawn() spawn_meteors(6)
/datum/game_mode/meteor/declare_completion()
+16 -11
View File
@@ -6,19 +6,19 @@
/var/const/meteors_in_wave = 50
/var/const/meteors_in_small_wave = 10
/proc/meteor_wave()
/proc/meteor_wave(var/number = meteors_in_wave)
if(!ticker || wavesecret)
return
wavesecret = 1
for(var/i = 0 to meteors_in_wave)
for(var/i = 0 to number)
spawn(rand(10,100))
spawn_meteor()
spawn(meteor_wave_delay)
wavesecret = 0
/proc/spawn_meteors()
for(var/i = 0; i < meteors_in_small_wave; i++)
/proc/spawn_meteors(var/number = meteors_in_small_wave)
for(var/i = 0; i < number; i++)
spawn(0)
spawn_meteor()
@@ -36,23 +36,23 @@
do
switch(pick(1,2,3,4))
if(1) //NORTH
starty = world.maxy-1
starty = world.maxy-3
startx = rand(1, world.maxx-1)
endy = 1
endx = rand(1, world.maxx-1)
if(2) //EAST
starty = rand(1,world.maxy-1)
startx = world.maxx-1
startx = world.maxx-3
endy = rand(1, world.maxy-1)
endx = 1
if(3) //SOUTH
starty = 1
starty = 3
startx = rand(1, world.maxx-1)
endy = world.maxy-1
endx = rand(1, world.maxx-1)
if(4) //WEST
starty = rand(1, world.maxy-1)
startx = 1
startx = 3
endy = rand(1,world.maxy-1)
endx = world.maxx-1
@@ -67,9 +67,9 @@
var/obj/effect/meteor/M
switch(rand(1, 100))
if(1 to 10)
if(1 to 20)
M = new /obj/effect/meteor/big( pickedstart )
if(11 to 75)
if(21 to 75)
M = new /obj/effect/meteor( pickedstart )
if(76 to 100)
M = new /obj/effect/meteor/small( pickedstart )
@@ -137,7 +137,12 @@
if(!M.stat && !istype(M, /mob/living/silicon/ai)) //bad idea to shake an ai's view
shake_camera(M, 3, 1)
if (A)
explosion(src.loc, 0, 1, 2, 3, 0)
if(isobj(A))
del(A)
else
A.meteorhit(src)
src.hits--
return
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
if (--src.hits <= 0)
if(prob(15) && !istype(A, /obj/structure/grille))
+3 -3
View File
@@ -76,7 +76,7 @@
del(B)
step_to(A,M,0)
if (get_dist(A,M) == 0)
M.weakened += 5
M.Weaken(5)
M.take_overall_damage(0,10)
del(A)
return
@@ -560,8 +560,8 @@
spawn(500)
U << "Something about your body doesn't seem quite right..."
U.paralysis += 20
H.paralysis += 20
U.Paralyse(20)
H.Paralyse(20)
spawn(600)
H.verbs += /mob/proc/swap
+6 -9
View File
@@ -238,15 +238,12 @@
else
M.oxyloss = 0
M.updatehealth()
M.paralysis -= 4
M.weakened -= 4
M.stunned -= 4
if (M.paralysis < 1)
M.paralysis = 1
if (M.weakened < 1)
M.weakened = 1
if (M.stunned < 1)
M.stunned = 1
M.AdjustParalysis(-4)
M.AdjustWeakened(-4)
M.AdjustStunned(-4)
M.Paralyse(1)
M.Weaken(1)
M.Stun(1)
if (M:reagents.get_reagent_amount("inaprovaline") < 5)
M:reagents.add_reagent("inaprovaline", 5)
return
+4 -6
View File
@@ -242,16 +242,14 @@ Auto Patrol: []"},
var/mob/living/carbon/M = src.target
var/maxstuns = 4
if (istype(M, /mob/living/carbon/human))
if (M.weakened < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 10
if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = 10
if (M.stunned < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 10
M.Stun(10)
M.Weaken(10)
else
M.weakened = 10
M.Weaken(10)
M.stuttering = 10
M.stunned = 10
M.Stun(10)
maxstuns--
if (maxstuns <= 0)
target = null
+2 -2
View File
@@ -768,8 +768,8 @@
else
src.visible_message("\red [src] knocks over [M]!")
M.pulling = null
M.stunned = 8
M.weakened = 5
M.Stun(8)
M.Weaken(5)
M.lying = 1
..()
+5 -7
View File
@@ -223,16 +223,14 @@ Auto Patrol: []"},
var/mob/living/carbon/M = src.target
var/maxstuns = 4
if(istype(M, /mob/living/carbon/human))
if(M.weakened < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 10
if(M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
if(M.stuttering < 10 && (!(M.mutations & HULK)))
M.stuttering = 10
if(M.stunned < 10 && (!(M.mutations & HULK)) /*&& (!istype(M:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 10
M.Stun(10)
M.Weaken(10)
else
M.weakened = 10
M.Weaken(10)
M.stuttering = 10
M.stunned = 10
M.Stun(10)
maxstuns--
if(maxstuns <= 0)
target = null
+2 -2
View File
@@ -461,7 +461,7 @@
src.occupant.rejuv = 10
src.occupant.adjustCloneLoss(190) //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
src.occupant.adjustBrainLoss(90)
src.occupant.paralysis += 4
src.occupant.Paralyse(4)
//Here let's calculate their health so the pod doesn't immediately eject them!!!
src.occupant.health = (src.occupant.getBruteLoss() + src.occupant.getToxLoss() + src.occupant.getOxyLoss() + src.occupant.getCloneLoss())
@@ -545,7 +545,7 @@
return
else if(src.occupant.health < src.heal_level)
src.occupant.paralysis = 4
src.occupant.Paralyse(4)
//Slowly get that clone healed and finished.
src.occupant.adjustCloneLoss(-2)
+1 -1
View File
@@ -166,7 +166,7 @@
occupant.stat = 1
if(occupant.bodytemperature < T0C)
occupant.sleeping = max(5, (1/occupant.bodytemperature)*2000)
occupant.paralysis = max(5, (1/occupant.bodytemperature)*3000)
occupant.Paralyse(max(5, (1/occupant.bodytemperature)*3000))
if(air_contents.oxygen > 2)
if(occupant.getOxyLoss()) occupant.adjustOxyLoss(-1)
else
+2 -3
View File
@@ -607,9 +607,8 @@ About the new airlock wires panel:
M << "\red [user] headbutts the airlock."
var/datum/organ/external/affecting = H.get_organ("head")
affecting.take_damage(10, 0)
H.stunned = 8
H.weakened = 5
H.UpdateDamage()
H.Stun(8)
H.Weaken(5)
H.UpdateDamageIcon()
else
for(var/mob/M in viewers(src, null))
+1 -1
View File
@@ -77,7 +77,7 @@
if (istype(O, /mob/living/carbon/alien))//So aliens don't get flashed (they have no external eyes)/N
continue
O.weakened = src.strength
O.Weaken(strength)
if ((O.eye_stat > 15 && prob(O.eye_stat + 50)))
flick("e_flash", O:flash)
O.eye_stat += rand(1, 2)
+1 -1
View File
@@ -258,7 +258,7 @@
cremating = 1
locked = 1
for (var/mob/living/M in contents)
M:stunned = 100 //You really dont want to place this inside the loop.
M.Stun(100) //You really dont want to place this inside the loop.
spawn(1)
for(var/i=1 to 10)
sleep(10)
+32 -26
View File
@@ -5,6 +5,7 @@
density = 1
anchored = 1
var/unwrenched = 0
var/wait = 0
/obj/machinery/pipedispenser/attack_paw(user as mob)
return src.attack_hand(user)
@@ -49,16 +50,20 @@
usr.machine = src
src.add_fingerprint(usr)
if(href_list["make"])
var/p_type = text2num(href_list["make"])
var/p_dir = text2num(href_list["dir"])
var/obj/item/pipe/P = new (/*usr.loc*/ src.loc, pipe_type=p_type, dir=p_dir)
P.update()
if(!wait)
var/p_type = text2num(href_list["make"])
var/p_dir = text2num(href_list["dir"])
var/obj/item/pipe/P = new (/*usr.loc*/ src.loc, pipe_type=p_type, dir=p_dir)
P.update()
wait = 1
spawn(10)
wait = 0
if(href_list["makemeter"])
new /obj/item/pipe_meter(/*usr.loc*/ src.loc)
/* for(var/mob/M in viewers(1, src))
if ((M.client && M.machine == src))
src.attack_hand(M)*/
if(!wait)
new /obj/item/pipe_meter(/*usr.loc*/ src.loc)
wait = 1
spawn(15)
wait = 0
return
/obj/machinery/pipedispenser/attackby(var/obj/item/W as obj, var/mob/user as mob)
@@ -128,23 +133,24 @@
usr.machine = src
src.add_fingerprint(usr)
if(href_list["dmake"])
var/p_type = text2num(href_list["dmake"])
var/obj/structure/disposalconstruct/C = new (src.loc)
switch(p_type)
if(0)
C.ptype = 0
if(1)
C.ptype = 1
if(2)
C.ptype = 2
if(3)
C.ptype = 4
if(4)
C.ptype = 5
if(!wait)
var/p_type = text2num(href_list["dmake"])
var/obj/structure/disposalconstruct/C = new (src.loc)
switch(p_type)
if(0)
C.ptype = 0
if(1)
C.ptype = 1
if(2)
C.ptype = 2
if(3)
C.ptype = 4
if(4)
C.ptype = 5
C.update()
usr << browse(null, "window=pipedispenser")
usr.machine = null
C.update()
wait = 1
spawn(15)
wait = 0
return
+2 -2
View File
@@ -70,9 +70,9 @@
var/obj/item/weapon/melee/baton/B = O
if (B.charges > 0 && B.status == 1)
flick("baton_active", src)
user.stunned = 10
user.Stun(10)
user.stuttering = 10
user.weakened = 10
user.Weaken(10)
if(isrobot(user))
var/mob/living/silicon/robot/R = user
R.cell.charge -= 20
+7 -11
View File
@@ -275,9 +275,9 @@ var/list/sacrificed = list()
affecting.heal_damage(1000, 1000)
corpse_to_raise.setToxLoss(0)
corpse_to_raise.setOxyLoss(0)
corpse_to_raise.paralysis = 0
corpse_to_raise.stunned = 0
corpse_to_raise.weakened = 0
corpse_to_raise.SetParalysis(0)
corpse_to_raise.SetStunned(0)
corpse_to_raise.SetWeakened(0)
corpse_to_raise.radiation = 0
corpse_to_raise.buckled = null
if (corpse_to_raise.handcuffed)
@@ -914,12 +914,10 @@ var/list/sacrificed = list()
usr.say("Fuu ma'jin!")
for(var/mob/living/carbon/C in viewers(src))
flick("e_flash", C.flash)
if (C.weakened < 1 && (!(C.mutations & HULK))) //Copied this off baton code
C.weakened = 1
if (C.stuttering < 1 && (!(C.mutations & HULK)))
C.stuttering = 1
if (C.stunned < 1 && (!(C.mutations & HULK)))
C.stunned = 1
C.Weaken(1)
C.Stun(1)
C.show_message("\red The rune explodes in a bright flash.", 3)
del(src)
else ///When invoked as talisman, stun and mute the target mob.
@@ -929,10 +927,8 @@ var/list/sacrificed = list()
flick("e_flash", T.flash)
if (!(T.mutations & HULK))
T.silent += 15
if (!(T.mutations & HULK))
T.weakened += 25
if (!(T.mutations & HULK))
T.stunned += 25
T.Weaken(25)
T.Stun(25)
return
/////////////////////////////////////////TWENTY-FIFTH RUNE
+2 -2
View File
@@ -61,7 +61,7 @@
if(temp)
switch(damtype)
if("brute")
H.paralysis += 1
H.Paralyse(1)
temp.take_damage(rand(force/2, force), 0)
if("fire")
temp.take_damage(0, rand(force/2, force))
@@ -79,7 +79,7 @@
else
switch(damtype)
if("brute")
M.paralysis += 1
M.Paralyse(1)
M.take_overall_damage(rand(force/2, force))
if("fire")
M.take_overall_damage(0, rand(force/2, force))
+3 -3
View File
@@ -129,10 +129,10 @@
M.sleeping = 0
M.stuttering += 20
M.ear_deaf += 30
M.weakened = 3
M.Weaken(3)
if(prob(30))
M.stunned = 10
M.paralysis += 4
M.Stun(10)
M.Paralyse(4)
else
M.make_jittery(500)
/* //else the mousetraps are useless
+1 -1
View File
@@ -145,7 +145,7 @@ var/const
GoIdle() //so it doesn't jump the people that tear it off
if(!sterile) target.paralysis = max(target.paralysis,MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
if(!sterile) target.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME))
Impregnate(target)
+2 -2
View File
@@ -818,8 +818,8 @@
M.pulling = null
M << "\blue You slipped on the PDA!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 8
M.weakened = 5
M.Stun(8)
M.Weaken(5)
//AI verb and proc for sending PDA messages.
+3 -4
View File
@@ -41,9 +41,8 @@
if(iscarbon(M))
var/safety = M:eyecheck()
if(safety <= 0)
if(M.weakened <= 10)
M.weakened = 10
flick("e_flash", M.flash)
M.Weaken(10)
flick("e_flash", M.flash)
if(ishuman(M) && ishuman(user))
if(user.mind in ticker.mode.head_revolutionaries)
@@ -65,7 +64,7 @@
flashfail = 1
else if(issilicon(M))
M.weakened = max(user.weakened, rand(5,10))
M.Weaken(rand(5,10))
if(isrobot(user))
spawn(0)
+3 -3
View File
@@ -884,8 +884,8 @@ steam.start() -- spawns the effect
M.pulling = null
M << "\blue You slipped on the foam!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 5
M.weakened = 2
M.Stun(5)
M.Weaken(2)
/datum/effect/effect/system/foam_spread
@@ -1094,7 +1094,7 @@ steam.start() -- spawns the effect
for(var/mob/M in viewers(1, location))
if (prob (50 * amount))
M << "\red The explosion knocks you down."
M.weakened += rand (1, 5)
M.Weaken(rand(1,5))
return
else
var/devastation = -1
+2 -4
View File
@@ -340,8 +340,6 @@ mob/proc/flash_weak_pain()
/obj/item/proc/IsShield()
return 0
/obj/item/proc/eyestab(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
var/mob/living/carbon/human/H = M
@@ -405,8 +403,8 @@ mob/proc/flash_weak_pain()
M << "\red You drop what you're holding and clutch at your eyes!"
M.drop_item()
M.eye_blurry += 10
M.paralysis += 1
M.weakened += 4
M.Paralyse(1)
M.Weaken(4)
if (prob(M.eye_stat - 10 + 1))
if(M.stat != 2)
M << "\red You go blind!"
+4 -4
View File
@@ -11,12 +11,12 @@
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
user.cell.charge -= 30
if (M.weakened < 5)
M.weakened = 5
M.Weaken(5)
if (M.stuttering < 5)
M.stuttering = 5
if (M.stunned < 5)
M.stunned = 5
M.Stun(5)
for(var/mob/O in viewers(M, null))
if (O.client)
O.show_message("\red <B>[user] has prodded [M] with an electrically-charged arm!</B>", 1, "\red You hear someone fall", 2)
@@ -16,8 +16,8 @@ BIKE HORN
M.pulling = null
M << "\blue You slipped on the [name]!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 4
M.weakened = 2
M.Stun(4)
M.Weaken(2)
/obj/item/weapon/reagent_containers/food/snacks/grown/bluetomato/HasEntered(AM as mob|obj)
if (istype(AM, /mob/living/carbon))
@@ -28,8 +28,8 @@ BIKE HORN
M.pulling = null
M << "\blue You slipped on the [name]!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 8
M.weakened = 5
M.Stun(8)
M.Weaken(5)
/obj/item/weapon/soap/HasEntered(AM as mob|obj) //EXACTLY the same as bananapeel for now, so it makes sense to put it in the same dm -- Urist
if (istype(AM, /mob/living/carbon))
@@ -40,8 +40,8 @@ BIKE HORN
M.pulling = null
M << "\blue You slipped on the [name]!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 3
M.weakened = 2
M.Stun(3)
M.Weaken(2)
/obj/item/weapon/soap/afterattack(atom/target, mob/user as mob)
if(istype(target,/obj/effect/decal/cleanable))
+8 -8
View File
@@ -172,19 +172,19 @@ FLASHBANG
if(eye_safety < 1)
flick("e_flash", M.flash)
M.eye_stat += rand(1, 3)
M.stunned = max(M.stunned,2)
M.weakened = max(M.weakened,10)
M.Stun(2)
M.Weaken(10)
//Now applying sound
if((get_dist(M, T) <= 2 || src.loc == M.loc || src.loc == M))
if(ear_safety > 0)
M.stunned = max(M.stunned,2)
M.weakened = max(M.weakened,1)
M.Stun(2)
M.Weaken(1)
else
M.stunned = max(M.stunned,10)
M.weakened = max(M.weakened,3)
M.Stun(10)
M.Weaken(3)
if ((prob(14) || (M == src.loc && prob(70))))
M.ear_damage += rand(1, 10)
else
@@ -193,12 +193,12 @@ FLASHBANG
else if(get_dist(M, T) <= 5)
if(!ear_safety)
M.stunned = max(M.stunned,8)
M.Stun(8)
M.ear_damage += rand(0, 3)
M.ear_deaf = max(M.ear_deaf,10)
else if(!ear_safety)
M.stunned = max(M.stunned,4)
M.Stun(4)
M.ear_damage += rand(0, 1)
M.ear_deaf = max(M.ear_deaf,5)
@@ -108,7 +108,7 @@ Deathnettle
else
user.take_organ_damage(0,force)
if(prob(50))
user.paralysis += 5
user.Paralyse(5)
user << "\red You are stunned by the Deathnettle when you try picking it up!"
/obj/item/weapon/grown/deathnettle/attack(mob/living/carbon/M as mob, mob/user as mob)
@@ -120,8 +120,8 @@ Deathnettle
M.eye_blurry += force/7
if(prob(20))
M.paralysis += force/6
M.weakened += force/15
M.Paralyse(force/6)
M.Weaken(force/15)
M.drop_item()
/obj/item/weapon/grown/deathnettle/afterattack(atom/A as mob|obj, mob/user as mob)
+8 -10
View File
@@ -50,7 +50,7 @@ KNIFE
if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
user.Paralyse(2)
return
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
@@ -63,11 +63,9 @@ KNIFE
return
var/time = rand(2, 6)
if (prob(75))
if (M.paralysis < time && (!(M.mutations & HULK)) )
M.paralysis = time
M.Paralyse(time)
else
if (M.stunned < time && (!(M.mutations & HULK)) )
M.stunned = time
M.Stun(time)
if(M.stat != 2) M.stat = 1
for(var/mob/O in viewers(M, null))
O.show_message(text("\red <B>[] has been knocked unconscious!</B>", M), 1, "\red You hear someone fall.", 2)
@@ -109,7 +107,7 @@ KNIFE
if((user.mutations & CLUMSY) && prob(50)) //What if he's a clown?
M << "\red You accidentally slam yourself with the [src]!"
M.weakened += 1
M.Weaken(1)
user.take_organ_damage(2)
if(prob(50))
playsound(M, 'trayhit1.ogg', 50, 1)
@@ -132,7 +130,7 @@ KNIFE
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
if(prob(15))
M.weakened += 3
M.Weaken(3)
M.take_organ_damage(3)
else
M.take_organ_damage(5)
@@ -173,7 +171,7 @@ KNIFE
for(var/mob/O in viewers(M, null))
O.show_message(text("\red <B>[] slams [] with the tray!</B>", user, M), 1)
if(prob(10))
M.stunned = rand(1,3)
M.Stun(rand(1,3))
M.take_organ_damage(3)
return
else
@@ -197,13 +195,13 @@ KNIFE
for(var/mob/O in viewers(M, null))
O.show_message(text("\red <B>[] slams [] in the face with the tray!</B>", user, M), 1)
if(prob(30))
M.stunned = rand(2,4)
M.Stun(rand(2,4))
M.take_organ_damage(4)
return
else
M.take_organ_damage(8)
if(prob(30))
M.weakened+=2
M.Weaken(2)
return
return
@@ -57,8 +57,6 @@ MEDICAL
if (affecting.heal_damage(src.heal_brute, src.heal_burn))
H.UpdateDamageIcon()
else
H.UpdateDamage()
M.updatehealth()
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
@@ -105,7 +105,7 @@ STUN BATON
src.status = !( src.status )
if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red You grab the stunbaton on the wrong side."
usr.paralysis += 60
usr.Paralyse(60)
return
if (src.status)
user << "\blue The baton is now on."
@@ -121,7 +121,7 @@ STUN BATON
/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob)
if ((usr.mutations & CLUMSY) && prob(50))
usr << "\red You grab the stunbaton on the wrong side."
usr.weakened += 30
usr.Weaken(30)
return
src.add_fingerprint(user)
var/mob/living/carbon/human/H = M
@@ -136,8 +136,7 @@ STUN BATON
if (status == 0 || (status == 1 && charges ==0))
if(user.a_intent == "hurt")
if(!..()) return
if (M.weakened < 5 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 5
M.Weaken(5)
for(var/mob/O in viewers(M))
if (O.client) O.show_message("\red <B>[M] has been beaten with the stun baton by [user]!</B>", 1)
if(status == 1 && charges == 0)
@@ -159,12 +158,10 @@ STUN BATON
R.cell.charge -= 20
else
charges--
if (M.weakened < 1 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 1
if (M.stuttering < 1 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = 1
if (M.stunned < 1 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 1
M.Stun(1)
M.Weaken(1)
else
playsound(src.loc, 'Egloves.ogg', 50, 1, -1)
if(isrobot(user))
@@ -172,12 +169,10 @@ STUN BATON
R.cell.charge -= 20
else
charges--
if (M.weakened < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 10
if (M.stuttering < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = 10
if (M.stunned < 10 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 10
M.Stun(10)
M.Weaken(10)
user.lastattacked = M
M.lastattacker = user
for(var/mob/O in viewers(M))
@@ -193,7 +188,7 @@ STUN BATON
/obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob)
if ((user.mutations & CLUMSY) && prob(50))
user << "\red You club yourself over the head."
user.weakened = max(3 * force, user.weakened)
user.Weaken(3 * force)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.apply_damage(2*force, BRUTE, "head")
@@ -208,19 +203,15 @@ STUN BATON
if (user.a_intent == "hurt")
if(!..()) return
playsound(src.loc, "swing_hit", 50, 1, -1)
if (M.weakened < 8 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 8
if (M.stuttering < 8 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stuttering = 8
if (M.stunned < 8 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 8
M.Stun(8)
M.Weaken(8)
for(var/mob/O in viewers(M))
if (O.client) O.show_message("\red <B>[M] has been beaten with the police baton by [user]!</B>", 1, "\red You hear someone fall", 2)
else
playsound(src.loc, 'Genhit.ogg', 50, 1, -1)
if (M.weakened < 5 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.weakened = 5
if (M.stunned < 5 && (!(M.mutations & HULK)) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/)
M.stunned = 5
M.Stun(5)
M.Weaken(5)
for(var/mob/O in viewers(M))
if (O.client) O.show_message("\red <B>[M] has been stunned with the police baton by [user]!</B>", 1, "\red You hear someone fall", 2)
+1 -2
View File
@@ -138,8 +138,7 @@
s.set_up(3, 1, M)
s.start()
if (M.weakened < 10)
M.weakened = 10
M.Weaken(10)
if ((src.master && src.wires & 1))
src.master.receive_signal()
+3 -5
View File
@@ -19,7 +19,7 @@
if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
user.Paralyse(2)
return
@@ -36,11 +36,9 @@
return
var/time = rand(2, 6)
if (prob(75))
if (M.paralysis < time)// && (!M.ishulk))
M.paralysis = time
M.Paralyse(time)
else
if (M.stunned < time)// && (!M.ishulk))
M.stunned = time
M.Stun(time)
if(M.stat != 2) M.stat = 1
for(var/mob/O in viewers(M, null))
O.show_message(text("\red <B>[] has been knocked unconscious!</B>", M), 1, "\red You hear someone fall.", 2)
+1 -1
View File
@@ -169,7 +169,7 @@ SHARDS
var/mob/living/carbon/human/H = M
if(!H.shoes)
var/datum/organ/external/affecting = H.get_organ(pick("l_leg", "r_leg"))
H.weakened = max(3, H.weakened)
H.Weaken(3)
affecting.take_damage(5, 0)
H.UpdateDamageIcon()
H.updatehealth()
+1 -2
View File
@@ -197,8 +197,7 @@
M << "\red <B>You feel a deep shock course through your body!</B>"
sleep(1)
M.burn_skin(85)
if(M.stunned < 600)
M.stunned = 600
M.Stun(600)
for(var/mob/M in hearers(src, null))
M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
+1 -3
View File
@@ -13,8 +13,6 @@
for(var/datum/organ/external/affecting in H.organs)
if(affecting.heal_damage(heal_amt, heal_amt))
H.UpdateDamageIcon()
else
H.UpdateDamage()
return
/obj/item/weapon/storage/bible/attack(mob/M as mob, mob/living/user as mob)
@@ -38,7 +36,7 @@
if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 20
user.Paralyse(20)
return
// if(..() == BLOCKED)
+3 -5
View File
@@ -14,7 +14,7 @@
if ((user.mutations & CLUMSY) && prob(50))
user << "\red The [src] slips out of your hand and hits your head."
user.take_organ_damage(10)
user.paralysis += 2
user.Paralyse(2)
return
@@ -29,11 +29,9 @@
return
var/time = rand(2, 6)
if (prob(75))
if (M.paralysis < time && (!(M.mutations & HULK)) )
M.paralysis = time
M.Paralyse(time)
else
if (M.stunned < time && (!(M.mutations & HULK)) )
M.stunned = time
M.Stun(time)
if(M.stat != 2) M.stat = 1
for(var/mob/O in viewers(M, null))
O.show_message(text("\red <B>[] has been knocked unconscious!</B>", M), 1, "\red You hear someone fall.", 2)
+8 -8
View File
@@ -123,7 +123,7 @@ TABLE AND RACK OBJECT INTERATIONS
user << "\red You need a better grip to do that!"
return
G.affecting.loc = src.loc
G.affecting.weakened = 5
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the table.", G.assailant, G.affecting)
@@ -133,11 +133,11 @@ TABLE AND RACK OBJECT INTERATIONS
if (istype(W, /obj/item/weapon/wrench))
user << "\blue Now disassembling table"
playsound(src.loc, 'Ratchet.ogg', 50, 1)
sleep(50)
new /obj/item/weapon/table_parts( src.loc )
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
//SN src = null
del(src)
if(do_after(user,50))
new /obj/item/weapon/table_parts( src.loc )
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
//SN src = null
del(src)
return
if(isrobot(user))
@@ -169,7 +169,7 @@ TABLE AND RACK OBJECT INTERATIONS
user << "\red You need a better grip to do that!"
return
G.affecting.loc = src.loc
G.affecting.weakened = 5
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the wooden table.", G.assailant, G.affecting)
@@ -211,7 +211,7 @@ TABLE AND RACK OBJECT INTERATIONS
user << "\red You need a better grip to do that!"
return
G.affecting.loc = src.loc
G.affecting.weakened = 5
G.affecting.Weaken(5)
for(var/mob/O in viewers(world.view, src))
if (O.client)
O << text("\red [] puts [] on the reinforced table.", G.assailant, G.affecting)
+5 -3
View File
@@ -15,7 +15,9 @@
del(src)
/obj/effect/mine/proc/triggerstun(obj)
obj:stunned += 30
if(ismob(obj))
var/mob/M = obj
M.Stun(30)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
@@ -130,11 +132,11 @@
if("feet")
if(!H.shoes)
affecting = H.get_organ(pick("l_leg", "r_leg"))
H.weakened = max(3, H.weakened)
H.Weaken(3)
if("l_hand", "r_hand")
if(!H.gloves)
affecting = H.get_organ(type)
H.stunned = max(3, H.stunned)
H.Stun(3)
if(affecting)
affecting.take_damage(1, 0)
H.UpdateDamageIcon()
+1 -1
View File
@@ -94,7 +94,7 @@ client/verb/Toggle_Soundscape()
if ("AI Sat Ext") sound = pick('ambiruntime.ogg','ambimalf.ogg')
if ("AI Satellite") sound = pick('ambimalf.ogg')
if ("AI Satellite Teleporter Room") sound = pick('ambiruntime.ogg','ambimalf.ogg')
if ("Bar") sound = pick('title1.ogg')
if ("Bar") sound = pick('null.ogg')
if ("AI Upload Foyer") sound = pick('ambimalf.ogg', 'null.ogg')
if ("AI Upload Chamber") sound = pick('ambimalf.ogg','null.ogg')
if ("Mine")
+21 -55
View File
@@ -187,8 +187,8 @@
step(M, M.dir)
M << "\blue You slipped on the wet floor!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 8
M.weakened = 5
M.Stun(8)
M.Weaken(5)
else
M.inertia_dir = 0
return
@@ -198,8 +198,8 @@
step(M, M.dir)
M << "\blue You slipped on the wet floor!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.stunned = 8
M.weakened = 5
M.Stun(8)
M.Weaken(5)
else
M.inertia_dir = 0
return
@@ -215,7 +215,7 @@
M.take_organ_damage(2) // Was 5 -- TLE
M << "\blue You slipped on the floor!"
playsound(src.loc, 'slip.ogg', 50, 1, -3)
M.weakened = 10
M.Weaken(10)
..()
@@ -618,8 +618,12 @@
return
/turf/simulated/wall/meteorhit(obj/M as obj)
if (M.icon_state == "flaming")
if (prob(15))
dismantle_wall()
else if(prob(70))
ReplaceWithPlating()
else
ReplaceWithLattice()
return 0
@@ -1193,7 +1197,7 @@ turf/simulated/floor/return_siding_icon_state()
else if(ticker.mode.name == "extended"||ticker.mode.name == "sandbox") Sandbox_Spacemove(A)
else
if (src.x <= 2)
if (src.x <= 2 || A.x >= (world.maxx - 1) || src.y <= 2 || A.y >= (world.maxy - 1))
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
del(A)
return
@@ -1206,63 +1210,25 @@ turf/simulated/floor/return_siding_icon_state()
return
A.z = move_to_z
A.x = world.maxx - 2
spawn (0)
if ((A && A.loc))
A.loc.Entered(A)
else if (A.x >= (world.maxx - 1))
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
del(A)
return
var/move_to_z_str = pickweight(accessable_z_levels)
if(src.x <= 2)
A.x = world.maxx - 2
var/move_to_z = text2num(move_to_z_str)
else if (A.x >= (world.maxx - 1))
A.x = 3
if(!move_to_z)
return
else if (src.y <= 2)
A.y = world.maxy - 2
A.z = move_to_z
A.x = 3
spawn (0)
if ((A && A.loc))
A.loc.Entered(A)
else if (src.y <= 2)
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
del(A)
return
else if (A.y >= (world.maxy - 1))
A.y = 3
var/move_to_z_str = pickweight(accessable_z_levels)
var/move_to_z = text2num(move_to_z_str)
if(!move_to_z)
return
A.z = move_to_z
A.y = world.maxy - 2
spawn (0)
if ((A && A.loc))
A.loc.Entered(A)
else if (A.y >= (world.maxy - 1))
if(istype(A, /obj/effect/meteor)||istype(A, /obj/effect/space_dust))
del(A)
return
var/move_to_z_str = pickweight(accessable_z_levels)
var/move_to_z = text2num(move_to_z_str)
if(!move_to_z)
return
A.z = move_to_z
A.y = 3
spawn (0)
if ((A && A.loc))
A.loc.Entered(A)
// if(istype(A, /obj/structure/closet/coffin))
// coffinhandler.Add(A)
/turf/space/proc/Sandbox_Spacemove(atom/movable/A as mob|obj)
var/cur_x
+1 -1
View File
@@ -168,7 +168,7 @@
if(confirm == "Yes")
suiciding = 1
setOxyLoss(100)
setBruteLoss(100)
adjustBruteLoss(100 - getBruteLoss())
setToxLoss(100)
setCloneLoss(100)
+6 -5
View File
@@ -58,20 +58,21 @@
///////////////////////////////////////////////////////***
/////////////////////////////////////////////////////green
/obj/item/weapon/vial/green/drink(user)
/obj/item/weapon/vial/green/drink(mob/living/user as mob)
var/A = src
src = null
del(A)
switch(pick(1,2,3))
if(1)
spawn(300)
user:gib()
user.gib()
if(2)
user:weakened += 5
user:contract_disease(new /datum/disease/gbs,1)
user.Weaken(5)
user.contract_disease(new /datum/disease/gbs,1)
if(3)
spawn(200)
user:contract_disease(new /datum/disease/gbs,1)
user.contract_disease(new /datum/disease/gbs,1)
/obj/item/weapon/vial/green/shatter()
var/A = src
var/atom/sourceloc = get_turf(src.loc)
+18 -8
View File
@@ -556,7 +556,7 @@
W.dropped(M)
W.layer = initial(W.layer)
//teleport person to cell
M.paralysis += 5
M.Paralyse(5)
sleep(5) //so they black out before warping
M.loc = pick(prisonwarp)
if(istype(M, /mob/living/carbon/human))
@@ -623,7 +623,7 @@
W.loc = M.loc
W.dropped(M)
W.layer = initial(W.layer)
M.paralysis += 5
M.Paralyse(5)
sleep(5)
M.loc = pick(tdome1)
spawn(50)
@@ -649,7 +649,7 @@
W.loc = M.loc
W.dropped(M)
W.layer = initial(W.layer)
M.paralysis += 5
M.Paralyse(5)
sleep(5)
M.loc = pick(tdome2)
spawn(50)
@@ -664,7 +664,7 @@
if(istype(M, /mob/living/silicon/ai))
alert("The AI can't be sent to the thunderdome you jerk!", null, null, null, null, null)
return
M.paralysis += 5
M.Paralyse(5)
sleep(5)
M.loc = pick(tdomeadmin)
spawn(50)
@@ -694,7 +694,7 @@
var/mob/living/carbon/human/observer = M
observer.equip_if_possible(new /obj/item/clothing/under/suit_jacket(observer), observer.slot_w_uniform)
observer.equip_if_possible(new /obj/item/clothing/shoes/black(observer), observer.slot_shoes)
M.paralysis += 5
M.Paralyse(5)
sleep(5)
M.loc = pick(tdomeobserve)
spawn(50)
@@ -1209,7 +1209,7 @@
if(loc.z > 1 || prisonwarped.Find(H))
//don't warp them if they aren't ready or are already there
continue
H.paralysis += 5
H.Paralyse(5)
if(H.wear_id)
var/obj/item/weapon/card/id/id = H.get_idcard()
for(var/A in id.access)
@@ -1441,14 +1441,24 @@
message_admins("[key_name_admin(usr)] broke all lights", 1)
lightsout(0,0)
if("virus")
if(alert("Do you want this to be a random disease or do you have something in mind?",,"Random","Choose")=="Random")
var/answer = alert("Do you want this to be a random disease or do you have something in mind?",,"Virus2","Random","Choose")
if(answer=="Random")
viral_outbreak()
message_admins("[key_name_admin(usr)] has triggered a virus outbreak", 1)
else
else if(answer == "Choose")
var/list/viruses = list("fake gbs","gbs","magnitis","wizarditis",/*"beesease",*/"brain rot","cold","retrovirus","flu","pierrot's throat","rhumba beat")
var/V = input("Choose the virus to spread", "BIOHAZARD") in viruses
viral_outbreak(V)
message_admins("[key_name_admin(usr)] has triggered a virus outbreak of [V]", 1)
else
var/lesser = (alert("Do you want to infect the mob with a major or minor disease?",,"Major","Minor") == "Minor")
var/mob/living/carbon/victim = input("Select a mob to infect", "Virus2") as null|mob in world
if(!istype(victim)) return
if(lesser)
infect_mob_random_lesser(victim)
else
infect_mob_random_greater(victim)
message_admins("[key_name_admin(usr)] has infected [victim] with a [lesser ? "minor" : "major"] virus2.", 1)
if("retardify")
if (src.rank in list("Badmin", "Game Admin", "Game Master"))
for(var/mob/living/carbon/human/H in world)
+4 -4
View File
@@ -24,7 +24,7 @@
for(var/obj/item/W in M)
M.drop_from_slot(W)
//teleport person to cell
M.paralysis += 5
M.Paralyse(5)
sleep(5) //so they black out before warping
M.loc = pick(prisonwarp)
if(istype(M, /mob/living/carbon/human))
@@ -484,9 +484,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
M.setToxLoss(0)
//M.bruteloss = 0
M.setOxyLoss(0)
M.paralysis = 0
M.stunned = 0
M.weakened = 0
M.SetParalysis(0)
M.SetStunned(0)
M.SetWeakened(0)
M.radiation = 0
//M.health = 100
M.nutrition = 400
+55 -49
View File
@@ -96,7 +96,7 @@ datum
blood
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null)
data = new/list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"virus2"=null,"antibodies"=0)
name = "Blood"
id = "blood"
reagent_state = LIQUID
@@ -119,6 +119,15 @@ datum
else
infect_virus2(M,self.data["virus2"],1)
if(istype(M,/mob/living/carbon))
// add the host's antibodies to their blood
self.data["antibodies"] |= M:antibodies
// check if the blood has antibodies that cure our disease
if(self.data["antibodies"] & M:virus2.antigen) if(prob(10))
M:virus2.dead = 1
/*
if(self.data["virus"])
var/datum/disease/V = self.data["virus"]
@@ -372,8 +381,8 @@ datum
if(15 to 25)
M:drowsyness = max(M:drowsyness, 20)
if(25 to INFINITY)
M:paralysis = max(M:paralysis, 20)
M:drowsyness = max(M:drowsyness, 30)
M.Paralyse(20)
M.drowsyness = max(M:drowsyness, 30)
data++
..()
return
@@ -398,17 +407,17 @@ datum
if(15 to 25)
M:drowsyness = max(M:drowsyness, 20)
if(25 to INFINITY)
M:sleeping = 1
M:oxyloss = 0
M:weakened = 0
M:stunned = 0
M:paralysis = 0
M.sleeping = 1
M.oxyloss = 0
M.SetWeakened(0)
M.SetStunned(0)
M.SetParalysis(0)
M.dizziness = 0
M:drowsyness = 0
M:stuttering = 0
M:slurring = 0
M:confused = 0
M:jitteriness = 0
M.drowsyness = 0
M.stuttering = 0
M.slurring = 0
M.confused = 0
M.jitteriness = 0
..()
return
@@ -661,7 +670,6 @@ datum
var/datum/organ/external/affecting = M:get_organ("head")
if(affecting)
affecting.take_damage(25, 0)
M:UpdateDamage()
M:UpdateDamageIcon()
M:emote("scream")
M << "\red Your face has become disfigured!"
@@ -708,7 +716,6 @@ datum
return
var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(35, 0)
M:UpdateDamage()
M:UpdateDamageIcon()
M:emote("scream")
M << "\red Your face has become disfigured!"
@@ -724,7 +731,6 @@ datum
if(istype(M, /mob/living/carbon/human))
var/datum/organ/external/affecting = M:get_organ("head")
affecting.take_damage(30, 0)
M:UpdateDamage()
M:UpdateDamageIcon()
M:emote("scream")
M << "\red Your face has become disfigured!"
@@ -1221,11 +1227,11 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom ///This can even heal dead people.
M:cloneloss = 0
M:oxyloss = 0
M:radiation = 0
M:heal_organ_damage(5,5)
M:adjustToxLoss(-5)
M.cloneloss = 0
M.setOxyLoss(0)
M.radiation = 0
M.heal_organ_damage(5,5)
M.adjustToxLoss(-5)
if(holder.has_reagent("toxin"))
holder.remove_reagent("toxin", 5)
if(holder.has_reagent("stoxin"))
@@ -1248,25 +1254,25 @@ datum
holder.remove_reagent("carpotoxin", 5)
if(holder.has_reagent("zombiepowder"))
holder.remove_reagent("zombiepowder", 5)
M:brainloss = 0
M.brainloss = 0
M.disabilities = 0
M.sdisabilities = 0
M:eye_blurry = 0
M:eye_blind = 0
M:disabilities &= ~1
M:sdisabilities &= ~1
M:weakened = 0
M:stunned = 0
M:paralysis = 0
M:silent = 0
M.eye_blurry = 0
M.eye_blind = 0
M.disabilities &= ~1
M.sdisabilities &= ~1
M.SetWeakened(0)
M.SetStunned(0)
M.SetParalysis(0)
M.silent = 0
M.dizziness = 0
M:drowsyness = 0
M:stuttering = 0
M:slurring = 0
M:confused = 0
if(!M:sleeping_willingly)
M:sleeping = 0
M:jitteriness = 0
M.drowsyness = 0
M.stuttering = 0
M.slurring = 0
M.confused = 0
if(!M.sleeping_willingly)
M.sleeping = 0
M.jitteriness = 0
for(var/datum/disease/D in M.viruses)
D.spread = "Remissive"
D.stage--
@@ -1285,10 +1291,10 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M:drowsyness = max(M:drowsyness-5, 0)
if(M:paralysis) M:paralysis--
if(M:stunned) M:stunned--
if(M:weakened) M:weakened--
if(prob(60)) M:adjustToxLoss(1)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
if(prob(60)) M.adjustToxLoss(1)
..()
return
@@ -1465,10 +1471,10 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M:adjustOxyLoss(0.5)
M:adjustToxLoss(0.5)
M:weakened = max(M:weakened, 10)
M:silent = max(M:silent, 10)
M.adjustOxyLoss(0.5)
M.adjustToxLoss(0.5)
M.Weaken(10)
M.silent = max(M:silent, 10)
..()
return
@@ -1713,9 +1719,9 @@ datum
return
M:emote("scream")
M << "\red You're sprayed directly in the eyes with pepperspray!"
M.eye_blurry = max(M.eye_blurry, 60)
M.eye_blind = max(M.eye_blind, 12)
M:weakened = max(M:weakened, 20)
M.eye_blurry = max(M.eye_blurry, 5)
M.eye_blind = max(M.eye_blind, 2)
M.Paralyse(1)
M.drop_item()
frostoil
@@ -3059,7 +3065,7 @@ datum
color = "#664300" // rgb: 102, 67, 0
on_mob_life(var/mob/living/M as mob)
M.stunned = 2
M.Stun(2)
if(!data) data = 1
data++
M.dizziness +=3
+2 -2
View File
@@ -310,7 +310,7 @@ datum
continue
flick("e_flash", M.flash)
M.weakened = 15
M.Weaken(15)
if(4 to 5)
if(hasvar(M, "glasses"))
@@ -318,7 +318,7 @@ datum
continue
flick("e_flash", M.flash)
M.stunned = 5
M.Stun(5)
napalm
name = "Napalm"
+4 -3
View File
@@ -935,9 +935,9 @@
B.data["viruses"] += new D.type
if(B.data["virus2"])
if(T.virus2)
B.data["virus2"] = T.virus2.getcopy()
// not sure why it was checking if(B.data["virus2"]), but it seemed wrong
if(T.virus2)
B.data["virus2"] = T.virus2.getcopy()
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
if(T.resistances&&T.resistances.len)
@@ -950,6 +950,7 @@
temp_chem += R.name
temp_chem[R.name] = R.volume
B.data["trace_chem"] = list2params(temp_chem)
B.data["antibodies"] = T.antibodies
//debug
//for(var/D in B.data)
// world << "Data [D] = [B.data[D]]"
+33 -3
View File
@@ -64,6 +64,15 @@
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
/obj/item/clothing/suit/armor/reactive
name = "Reactive Teleport Armor"
desc = "Someone seperated our Research Director from his own head!"
var/active = 0.0
icon_state = "reactiveoff"
item_state = "reactiveoff"
slowdown = 1
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/suit/storage/armourrigvest
name = "armour rig vest"
@@ -75,9 +84,30 @@
allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/pepperspray,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
armor = list(melee = 50, bullet = 15, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0)
ng/suit/armor/reactive/IsShield()
if(active)
return 1
return 0
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob)
src.active = !( src.active )
if (src.active)
user << "\blue The reactive armor is now active."
src.icon_state = "reactive"
src.item_state = "reactive"
else
user << "\blue The reactive armor is now inactive."
src.icon_state = "reactiveoff"
src.item_state = "reactiveoff"
src.add_fingerprint(user)
return
/obj/item/clothing/suit/armor/reactive/emp_act(severity)
active = 0
src.icon_state = "reactiveoff"
src.item_state = "reactiveoff"
..()
+1 -1
View File
@@ -176,7 +176,7 @@
AfterAttack(var/mob/living/target)
if(prob(stunchance))
if(target.weakened <= 0)
target.weakened += rand(10, 15)
target.Weaken(rand(10, 15))
for(var/mob/O in viewers(src, null))
O.show_message("\red <B>[src]</B> knocks down [target]!", 1)
playsound(loc, 'pierce.ogg', 25, 1, -1)
+4 -8
View File
@@ -36,16 +36,12 @@
proc/clamp_values()
stunned = 0
paralysis = 0
weakened = 0
AdjustStunned(0)
AdjustParalysis(0)
AdjustWeakened(0)
sleeping = 0
setBruteLoss(max(getBruteLoss(), 0))
setToxLoss(max(getToxLoss(), 0))
setOxyLoss(max(getOxyLoss(), 0))
setFireLoss(max(getFireLoss(), 0))
if(stat)
stat = 0
stat = CONSCIOUS
return
@@ -15,4 +15,7 @@
if(facehugger.stat == CONSCIOUS)
var/image/activeIndicator = image('alien.dmi', loc = facehugger, icon_state = "facehugger_active")
activeIndicator.override = 1
client.images += activeIndicator
client.images += activeIndicator
/mob/living/carbon/alien/IsAdvancedToolUser()
return has_fine_manipulation
@@ -80,16 +80,16 @@
health = 150 - (getOxyLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(src.sleeping)
src.paralysis = max(src.paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(src.resting)
src.weakened = max(src.weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
death()
@@ -100,20 +100,20 @@
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
if(src.stat != 2) src.stat = 1
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (src.stat != 2) //Alive.
if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
if (src.stunned > 0)
src.stunned--
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened--
AdjustWeakened(-1)
src.lying = 1
src.stat = 0
if (src.paralysis > 0)
src.paralysis--
AdjustParalysis(-1)
src.blinded = 1
src.lying = 1
src.stat = 1
@@ -192,7 +192,7 @@
if(M in stomach_contents)
stomach_contents.Remove(M)
M.loc = loc
M.paralysis += 10
Paralyse(10)
for(var/mob/O in viewers(src, null))
O.show_message(text("\green <B>[src] hurls out the contents of their stomach!</B>"), 1)
return
@@ -81,16 +81,16 @@
health = 150 - (getOxyLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(src.sleeping)
src.paralysis = max(src.paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(src.resting)
src.weakened = max(src.weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
death()
@@ -101,20 +101,20 @@
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
if(src.stat != 2) src.stat = 1
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (src.stat != 2) //Alive.
if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
if (src.stunned > 0)
src.stunned--
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened--
AdjustWeakened(-1)
src.lying = 1
src.stat = 0
if (src.paralysis > 0)
src.paralysis--
AdjustParalysis(-1)
src.blinded = 1
src.lying = 1
src.stat = 1
@@ -87,7 +87,7 @@
message = "<B>The [src.name]</B> jumps!"
m_type = 1
if("collapse")
if (!src.paralysis) src.paralysis += 2
Paralyse(2)
message = text("<B>[]</B> collapses!", src)
m_type = 2
if ("me")
@@ -117,7 +117,7 @@
if(3.0)
b_loss += 30
if (prob(50) && !shielded)
paralysis += 1
Paralyse(1)
ear_damage += 15
ear_deaf += 60
@@ -542,12 +542,10 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>The [M.name] has shocked []!</B>", src), 1)
if (weakened < power)
weakened = power
Weaken(power)
if (stuttering < power)
stuttering = power
if (stunned < power)
stunned = power
Stun(power)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
@@ -577,12 +575,12 @@
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if (weakened < 5)
weakened = 5
Weaken(5)
if (stuttering < 5)
stuttering = 5
if (stunned < 5)
stunned = 5
Stun(5)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>", 1, "\red You hear someone fall.", 2)
@@ -649,7 +647,7 @@
if (M.mutations & HULK)//HULK SMASH
damage += 14
spawn(0)
paralysis += 5
Paralyse(5)
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
@@ -657,8 +655,7 @@
playsound(loc, "punch", 25, 1, -1)
visible_message("\red <B>[M] has [attack_verb]ed [src]!</B>")
if (damage > 9||prob(5))//Regular humans have a very small chance of weakening an alien.
if (weakened < 10)
weakened = rand(1,5)
Weaken(1,5)
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has weakened []!</B>", M, src), 1, "\red You hear someone fall.", 2)
@@ -672,15 +669,14 @@
if ("disarm")
if (!lying)
var/randn = rand(1, 100)
if (randn <= 5)//Very small chance to push an alien down.
weakened = 2
if (prob(5))//Very small chance to push an alien down.
Weaken(2)
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has pushed down []!</B>", M, src), 1)
else
if (randn <= 50)
if (prob(50))
drop_item()
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
@@ -715,9 +711,9 @@ In all, this is a lot like the monkey code. /N
if(!sleeping_willingly)
sleeping = 0
resting = 0
if (paralysis >= 3) paralysis -= 3
if (stunned >= 3) stunned -= 3
if (weakened >= 3) weakened -= 3
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\blue [M.name] nuzzles [] trying to wake it up!", src), 1)
@@ -80,9 +80,9 @@
proc
clamp_values()
stunned = max(min(stunned, 20),0)
paralysis = max(min(paralysis, 20), 0)
weakened = max(min(weakened, 20), 0)
SetStunned(min(stunned, 20))
SetParalysis(min(paralysis, 20))
SetWeakened(min(weakened, 20))
sleeping = max(min(sleeping, 20), 0)
adjustBruteLoss(0)
adjustToxLoss(0)
@@ -95,7 +95,7 @@
if (src.disabilities & 2)
if ((prob(1) && src.paralysis < 10 && src.r_epil < 1))
src << "\red You have a seizure!"
src.paralysis = max(10, src.paralysis)
Paralyse(10)
if (src.disabilities & 4)
if ((prob(5) && src.paralysis <= 1 && src.r_ch_cou < 1))
src.drop_item()
@@ -104,7 +104,7 @@
return
if (src.disabilities & 8)
if ((prob(10) && src.paralysis <= 1 && src.r_Tourette < 1))
src.stunned = max(10, src.stunned)
Stun(10)
spawn( 0 )
emote("twitch")
return
@@ -132,13 +132,13 @@
if (src.mutations & HULK && src.health <= 25)
src.mutations &= ~HULK
src << "\red You suddenly feel very weak."
src.weakened = 3
Weaken(3)
emote("collapse")
if (src.radiation)
if (src.radiation > 100)
src.radiation = 100
src.weakened = 10
Weaken(10)
src << "\red You feel weak."
emote("collapse")
@@ -157,7 +157,7 @@
src.adjustToxLoss(1)
if(prob(5))
src.radiation -= 5
src.weakened = 3
Weaken(3)
src << "\red You feel weak."
emote("collapse")
src.updatehealth()
@@ -377,7 +377,7 @@
src.eye_blurry = max(2, src.eye_blurry)
if (prob(5))
src.sleeping = 1
src.paralysis = 5
src.Paralyse(5)
confused = max(0, confused - 1)
// decrement dizziness counter, clamped to 0
@@ -396,16 +396,16 @@
health = 100 - (getOxyLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(src.sleeping)
src.paralysis = max(src.paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(src.resting)
src.weakened = max(src.weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
death()
@@ -416,20 +416,20 @@
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
if(src.stat != 2) src.stat = 1
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (src.stat != 2) //Alive.
if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
if (src.stunned > 0)
src.stunned--
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened--
AdjustWeakened(-1)
src.lying = 1
src.stat = 0
if (src.paralysis > 0)
src.paralysis--
AdjustParalysis(-1)
src.blinded = 1
src.lying = 1
src.stat = 1
@@ -82,16 +82,16 @@
health = 250 - (getOxyLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(src.sleeping)
src.paralysis = max(src.paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(src.resting)
src.weakened = max(src.weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead || src.brain_op_stage == 4.0)
death()
@@ -102,20 +102,20 @@
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
if(src.stat != 2) src.stat = 1
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (src.stat != 2) //Alive.
if (src.paralysis || src.stunned || src.weakened) //Stunned etc.
if (src.stunned > 0)
src.stunned--
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened--
AdjustWeakened(-1)
src.lying = 1
src.stat = 0
if (src.paralysis > 0)
src.paralysis--
AdjustParalysis(-1)
src.blinded = 1
src.lying = 1
src.stat = 1
@@ -84,7 +84,7 @@
message = "<B>The [src.name]</B> jumps!"
m_type = 1
if("collapse")
if (!src.paralysis) src.paralysis += 2
Paralyse(2)
message = text("<B>[]</B> collapses!", src)
m_type = 2
if ("me")
@@ -105,7 +105,7 @@
if(3.0)
b_loss += 30
if (prob(50))
paralysis += 1
Paralyse(1)
ear_damage += 15
ear_deaf += 60
@@ -358,12 +358,12 @@
if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien.
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if (weakened < 5)
weakened = 5
Weaken(5)
if (stuttering < 5)
stuttering = 5
if (stunned < 5)
stunned = 5
Stun(5)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>", 1, "\red You hear someone fall.", 2)
@@ -428,7 +428,7 @@
if (M.mutations & HULK)
damage += 5
spawn(0)
paralysis += 1
Paralyse(1)
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
@@ -437,8 +437,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has [attack_verb]ed []!</B>", M, src), 1)
if (damage > 4.9)
if (weakened < 10)
weakened = rand(10, 15)
Weaken(rand(10,15))
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has weakened []!</B>", M, src), 1, "\red You hear someone fall.", 2)
@@ -468,9 +467,9 @@
if(!sleeping_willingly)
sleeping = 0
resting = 0
if (paralysis >= 3) paralysis -= 3
if (stunned >= 3) stunned -= 3
if (weakened >= 3) weakened -= 3
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\blue [M.name] nuzzles [] trying to wake it up!", src), 1)
@@ -78,14 +78,10 @@
proc
clamp_values()
stunned = max(min(stunned, 20),0)
paralysis = max(min(paralysis, 20), 0)
weakened = max(min(weakened, 20), 0)
SetStunned(min(stunned, 20))
SetParalysis(min(paralysis, 20))
SetWeakened(min(weakened, 20))
sleeping = max(min(sleeping, 20), 0)
setBruteLoss(max(getBruteLoss(), 0))
setToxLoss(max(getToxLoss(), 0))
setOxyLoss(max(getOxyLoss(), 0))
adjustFireLoss(0)
handle_mutations_and_radiation()
@@ -118,7 +114,7 @@
if (radiation)
if (radiation > 100)
radiation = 100
weakened = 10
Weaken(10)
src << "\red You feel weak."
emote("collapse")
@@ -137,7 +133,7 @@
adjustToxLoss(1)
if(prob(5))
radiation -= 5
weakened = 3
Weaken(3)
src << "\red You feel weak."
emote("collapse")
updatehealth()
@@ -306,7 +302,7 @@
eye_blurry = max(2, eye_blurry)
if (prob(5))
sleeping = 1
paralysis = 5
Paralyse(5)
confused = max(0, confused - 1)
// decrement dizziness counter, clamped to 0
@@ -325,16 +321,16 @@
health = 25 - (getOxyLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(sleeping)
paralysis = max(paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(resting)
weakened = max(weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
death()
@@ -345,20 +341,20 @@
if(!reagents.has_reagent("inaprovaline")) oxyloss++
if(stat != 2) stat = 1
paralysis = max(paralysis, 5)
Paralyse(5)
if (stat != 2) //Alive.
if (paralysis || stunned || weakened) //Stunned etc.
if (stunned > 0)
stunned--
AdjustStunned(-1)
stat = 0
if (weakened > 0)
weakened--
AdjustWeakened(-1)
lying = 1
stat = 0
if (paralysis > 0)
paralysis--
AdjustParalysis(-1)
blinded = 1
lying = 1
stat = 1
+13 -13
View File
@@ -42,9 +42,9 @@
clamp_values()
stunned = max(stunned,0)
paralysis = max(paralysis, 0)
weakened = max(weakened, 0)
AdjustParalysis(0)
AdjustStunned(0)
AdjustWeakened(0)
adjustBruteLoss(0)
adjustFireLoss(0)
adjustOxyLoss(0)
@@ -55,7 +55,7 @@
if (radiation)
if (radiation > 100)
radiation = 100
weakened = 10
Weaken(10)
src << "\red You feel weak."
switch(radiation)
@@ -70,7 +70,7 @@
adjustToxLoss(1)
if(prob(5))
radiation -= 5
weakened = 3
Weaken(3)
src << "\red You feel weak."
// emote("collapse")
updatehealth()
@@ -139,7 +139,7 @@
eye_blurry = max(2, eye_blurry)
if (prob(5))
sleeping = 1
paralysis = 5
Paralyse(5)
confused = max(0, confused - 1)
// decrement dizziness counter, clamped to 0
@@ -156,14 +156,14 @@
health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 25) paralysis = max(paralysis, 3)
if(getOxyLoss() > 25) Paralyse(3)
if(sleeping)
paralysis = max(paralysis, 5)
Paralyse(5)
if (prob(1) && health) spawn(0) emote("snore")
if(resting)
weakened = max(weakened, 5)
Weaken(5)
if(stat != 2 && (!container && (health < config.health_threshold_dead || (config.revival_brain_life >= 0 && ((world.time - timeofhostdeath) > config.revival_brain_life )))))
death()
@@ -174,20 +174,20 @@
if(!reagents.has_reagent("inaprovaline")) oxyloss++
if(stat != 2) stat = 1
paralysis = max(paralysis, 5)
Paralyse(5)
if (stat != 2) //Alive.
if (paralysis || stunned || weakened) //Stunned etc.
if (stunned > 0)
stunned--
AdjustStunned(-1)
stat = 0
if (weakened > 0)
weakened--
AdjustWeakened(-1)
lying = 1
stat = 0
if (paralysis > 0)
paralysis--
AdjustParalysis(-1)
blinded = 1
lying = 1
stat = 1
+5 -5
View File
@@ -134,9 +134,9 @@
"\red You hear a heavy electrical crack." \
)
// if(src.stunned < shock_damage) src.stunned = shock_damage
src.stunned = max(src.stunned,10)//This should work for now, more is really silly and makes you lay there forever
Stun(10)//This should work for now, more is really silly and makes you lay there forever
// if(src.weakened < 20*siemens_coeff) src.weakened = 20*siemens_coeff
src.weakened = max(src.weakened,10)
Weaken(10)
return shock_damage
@@ -167,9 +167,9 @@
if(!src.sleeping_willingly)
src.sleeping = 0
src.resting = 0
if (src.paralysis >= 3) src.paralysis -= 3
if (src.stunned >= 3) src.stunned -= 3
if (src.weakened >= 3) src.weakened -= 3
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
playsound(src.loc, 'thudswoosh.ogg', 50, 1, -1)
M.visible_message( \
"\blue [M] shakes [src] trying to wake [t_him] up!", \
@@ -400,8 +400,7 @@
m_type = 2
if ("collapse")
if (!src.paralysis)
src.paralysis += 2
Paralyse(2)
message = "<B>[src]</B> collapses!"
m_type = 2
+43 -11
View File
@@ -266,7 +266,7 @@
ear_damage += 15
ear_deaf += 60
if (prob(50) && !shielded)
paralysis += 10
Paralyse(10)
for(var/datum/organ/external/temp in organs)
switch(temp.name)
@@ -1196,12 +1196,10 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>The [M.name] has shocked []!</B>", src), 1)
if (weakened < power)
weakened = power
Weaken(power)
if (stuttering < power)
stuttering = power
if (stunned < power)
stunned = power
Stun(power)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
@@ -2281,11 +2279,6 @@ It can still be worn/put on as normal.
src.health = 100
src.stat = 0
return
adjustBruteLoss(-getBruteLoss())
adjustFireLoss(-getFireLoss())
for(var/datum/organ/external/O in organs)
src.adjustBruteLoss(O.brute_dam)
src.adjustFireLoss(O.burn_dam)
src.health = 100 - src.getOxyLoss() - src.getToxLoss() - src.getFireLoss() - src.getBruteLoss() - src.getCloneLoss()
@@ -2296,4 +2289,43 @@ It can still be worn/put on as normal.
if((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )))
return 1
return 0
return 0
/mob/living/carbon/human/getBruteLoss()
var/amount = 0.0
for(var/datum/organ/external/O in organs)
amount+= O.brute_dam
return amount
/mob/living/carbon/human/adjustBruteLoss(var/amount)
if(amount > 0)
take_overall_damage(amount, 0)
else
heal_overall_damage(-amount, 0)
/mob/living/carbon/human/getFireLoss()
var/amount = 0.0
for(var/datum/organ/external/O in organs)
amount+= O.burn_dam
return amount
/mob/living/carbon/human/adjustFireLoss(var/amount)
if(amount > 0)
take_overall_damage(0, amount)
else
heal_overall_damage(0, -amount)
/mob/living/carbon/human/Stun(amount)
if(mutations & HULK)
return
..()
/mob/living/carbon/human/Weaken(amount)
if(mutations & HULK)
return
..()
/mob/living/carbon/human/Paralyse(amount)
if(mutations & HULK)
return
..()
@@ -54,8 +54,7 @@
var/randn = rand(1, 100)
if (randn <= 90)
playsound(loc, 'pierce.ogg', 25, 1, -1)
if (weakened < 15)
weakened = rand(10, 15)
Weaken(rand(15,20))
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has tackled down []!</B>", M, src), 1)
@@ -3,22 +3,10 @@
if(istype(E, /datum/organ/external))
if (E.heal_damage(brute, burn))
UpdateDamageIcon()
else
UpdateDamage()
else
return 0
return
/mob/living/carbon/human/proc/UpdateDamage()
adjustBruteLoss(-getBruteLoss())
adjustFireLoss(-getFireLoss())
for(var/datum/organ/external/O in organs)
if(istype(O, /datum/organ/external))
adjustBruteLoss(O.brute_dam)
adjustFireLoss(O.burn_dam)
return
// new damage icon system
// now constructs damage icon for each organ from mask * damage field
@@ -27,7 +15,6 @@
body_standing = list()
del(body_lying)
body_lying = list()
UpdateDamage()
for(var/datum/organ/external/O in organs)
var/icon/DI = new /icon('dam_human.dmi', O.damage_state) // the damage icon for whole human
DI.Blend(new /icon('dam_mask.dmi', O.icon_name), ICON_MULTIPLY) // mask with this organ's pixels
@@ -47,19 +47,34 @@ emp_act
/mob/living/carbon/human/proc/check_shields(var/damage = 0, var/attack_text = "the attack")
if(l_hand && istype(l_hand, /obj/item))//Current base is the prob(50-d/3)
var/obj/item/I = l_hand
if(l_hand && istype(l_hand, /obj/item/weapon))//Current base is the prob(50-d/3)
var/obj/item/weapon/I = l_hand
if(I.IsShield() && (prob(50 - round(damage / 3))))
visible_message("\red <B>[src] blocks [attack_text] with the [l_hand.name]!</B>")
return 1
if(r_hand && istype(r_hand, /obj/item))
var/obj/item/I = r_hand
if(r_hand && istype(r_hand, /obj/item/weapon))
var/obj/item/weapon/I = r_hand
if(I.IsShield() && (prob(50 - round(damage / 3))))
visible_message("\red <B>[src] blocks [attack_text] with the [r_hand.name]!</B>")
return 1
if(wear_suit && istype(wear_suit, /obj/item/))
var/obj/item/I = wear_suit
if(I.IsShield() && (prob(35)))
visible_message("\red <B>The reactive teleport system flings [src] clear of [attack_text]!</B>")
var/list/turfs = new/list()
for(var/turf/T in orange(6))
if(istype(T,/turf/space)) continue
if(T.density) continue
if(T.x>world.maxx-6 || T.x<6) continue
if(T.y>world.maxy-6 || T.y<6) continue
turfs += T
if(!turfs.len) turfs += pick(/turf in orange(6))
var/turf/picked = pick(turfs)
if(!isturf(picked)) return
src.loc = picked
return 1
return 0
/mob/living/carbon/human/emp_act(severity)
for(var/obj/O in src)
if(!O) continue
+34 -21
View File
@@ -98,9 +98,9 @@
proc
clamp_values()
stunned = max(min(stunned, 20),0)
paralysis = max(min(paralysis, 20), 0)
weakened = max(min(weakened, 20), 0)
SetStunned(min(stunned, 20))
SetParalysis(min(paralysis, 20))
SetWeakened(min(weakened, 20))
sleeping = max(min(sleeping, 20), 0)
adjustBruteLoss(0)
adjustToxLoss(0)
@@ -126,7 +126,7 @@
if(O == src)
continue
O.show_message(text("\red <B>[src] starts having a seizure!"), 1)
paralysis = max(10, paralysis)
Paralyse(10)
make_jittery(1000)
if (disabilities & 4)
if ((prob(5) && paralysis <= 1 && r_ch_cou < 1))
@@ -136,7 +136,7 @@
return
if (disabilities & 8)
if ((prob(10) && paralysis <= 1 && r_Tourette < 1))
stunned = max(10, stunned)
Stun(10)
spawn( 0 )
switch(rand(1, 3))
if(1)
@@ -160,7 +160,7 @@
if(1)
say(pick("IM A PONY NEEEEEEIIIIIIIIIGH", "without oxigen blob don't evoluate?", "CAPTAINS A COMDOM", "[pick("", "that faggot traitor")] [pick("joerge", "george", "gorge", "gdoruge")] [pick("mellens", "melons", "mwrlins")] is grifing me HAL;P!!!", "can u give me [pick("telikesis","halk","eppilapse")]?", "THe saiyans screwed", "Bi is THE BEST OF BOTH WORLDS>", "I WANNA PET TEH monkeyS", "stop grifing me!!!!", "SOTP IT#"))
if(2)
say(pick("fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom"))
say(pick("FUS RO DAH","fucking 4rries!", "stat me", ">my face", "roll it easy!", "waaaaaagh!!!", "red wonz go fasta", "FOR TEH EMPRAH", "lol2cat", "dem dwarfs man, dem dwarfs", "SPESS MAHREENS", "hwee did eet fhor khayosss", "lifelike texture ;_;", "luv can bloooom"))
if(3)
emote("drool")
@@ -173,13 +173,13 @@
if (mutations & HULK && health <= 25)
mutations &= ~HULK
src << "\red You suddenly feel very weak."
weakened = 3
Weaken(3)
emote("collapse")
if (radiation)
if (radiation > 100)
radiation = 100
weakened = 10
Weaken(10)
src << "\red You feel weak."
emote("collapse")
@@ -198,7 +198,7 @@
adjustToxLoss(1)
if(prob(5))
radiation -= 5
weakened = 3
Weaken(3)
src << "\red You feel weak."
emote("collapse")
updatehealth()
@@ -357,7 +357,7 @@
if(!co2overloadtime) // If it's the first breath with too much CO2 in it, lets start a counter, then have them pass out after 12s or so.
co2overloadtime = world.time
else if(world.time - co2overloadtime > 120)
paralysis = max(paralysis, 3)
Paralyse(3)
oxyloss += 3 // Lets hurt em a little, let them know we mean business
if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
oxyloss += 8
@@ -378,7 +378,7 @@
for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
var/SA_pp = (SA.moles/breath.total_moles())*breath_pressure
if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit
paralysis = max(paralysis, 3) // 3 gives them one second to wake up and run away a bit!
Paralyse(3) // 3 gives them one second to wake up and run away a bit!
if(SA_pp > SA_sleep_min) // Enough to make us sleep as well
sleeping = max(sleeping, 2)
else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
@@ -646,7 +646,7 @@
eye_blurry = max(2, eye_blurry)
if (prob(5))
sleeping = 1
paralysis = 5
Paralyse(5)
confused = max(0, confused - 1)
// decrement dizziness counter, clamped to 0
@@ -665,16 +665,16 @@
// health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 50) paralysis = max(paralysis, 3)
if(getOxyLoss() > 50) Paralyse(3)
if(sleeping)
paralysis = max(paralysis, 3)
Paralyse(3)
if (prob(10) && health) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(resting)
weakened = max(weakened, 3)
Weaken(3)
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
death()
@@ -685,7 +685,7 @@
if(!reagents.has_reagent("inaprovaline")) oxyloss++
if(stat != 2) stat = 1
paralysis = max(paralysis, 5)
Paralyse(5)
if (stat != 2) //Alive.
if (silent)
@@ -693,14 +693,14 @@
if (paralysis || stunned || weakened || (changeling && changeling.changeling_fakedeath)) //Stunned etc.
if (stunned > 0)
stunned--
AdjustStunned(-1)
stat = 0
if (weakened > 0)
weakened--
AdjustWeakened(-1)
lying = 1
stat = 0
if (paralysis > 0)
paralysis--
AdjustParalysis(-1)
blinded = 1
lying = 1
stat = 1
@@ -994,15 +994,28 @@
if(!virus2)
for(var/mob/living/carbon/M in oviewers(4,src))
// the following is silly since it lets you infect people through glass
/*for(var/mob/living/carbon/M in oviewers(4,src))
if(M.virus2)
infect_virus2(src,M.virus2)
infect_virus2(src,M.virus2)*/
// instead we're going to use little floating disease objects
for(var/obj/virus/V in src.loc) if(src.get_infection_chance())
infect_virus2(src,V.disease)
for(var/obj/effect/decal/cleanable/blood/B in view(4, src))
if(B.virus2)
infect_virus2(src,B.virus2)
else
virus2.activate(src)
// activate may have deleted the virus
if(!virus2) return
// check if we're immune
if(virus2.antigen & src.antibodies) virus2.dead = 1
if(src.get_infection_chance())
var/obj/virus/V = new(src.loc)
V.disease = src.virus2
return
@@ -413,7 +413,7 @@
//if(!src.rejuv) src.oxyloss++
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss+=10
if(src.stat != 2) src.stat = 1
if(src.stat != DEAD) src.stat = UNCONSCIOUS
if(prob(30))
if(getOxyLoss()>0) oxyloss = max(getOxyLoss()-1, 0)
@@ -423,23 +423,22 @@
if(getBruteLoss()>0) bruteloss = max(getBruteLoss()-1,0)
if (src.stat == 2)
if (src.stat == DEAD)
src.lying = 1
src.blinded = 1
src.stat = 2
else
if (src.paralysis || src.stunned || src.weakened || (changeling && changeling.changeling_fakedeath)) //Stunned etc.
if (src.stunned > 0)
src.stunned = 0
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened = 0
AdjustWeakened(-1)
src.lying = 0
src.stat = 0
if (src.paralysis > 0)
src.paralysis = 0
AdjustParalysis(-1)
src.blinded = 0
src.lying = 0
src.stat = 0
@@ -84,7 +84,7 @@
message = "<B>The [src.name]</B> jumps!"
m_type = 1
if("collapse")
if (!src.paralysis) src.paralysis += 2
Paralyse(2)
message = text("<B>[]</B> collapses!", src)
m_type = 2
if("deathgasp")
+18 -18
View File
@@ -90,16 +90,16 @@
clamp_values()
stunned = max(stunned,0)
paralysis = max(paralysis, 0)
weakened = max(weakened, 0)
AdjustStunned(0)
AdjustParalysis(0)
AdjustWeakened(0)
handle_disabilities()
if (src.disabilities & 2)
if ((prob(1) && src.paralysis < 10 && src.r_epil < 1))
src << "\red You have a seizure!"
src.paralysis = max(10, src.paralysis)
Paralyse(10)
if (src.disabilities & 4)
if ((prob(5) && src.paralysis <= 1 && src.r_ch_cou < 1))
src.drop_item()
@@ -108,7 +108,7 @@
return
if (src.disabilities & 8)
if ((prob(10) && src.paralysis <= 1 && src.r_Tourette < 1))
src.stunned = max(10, src.stunned)
Stun(10)
spawn( 0 )
emote("twitch")
return
@@ -135,13 +135,13 @@
if (src.mutations & HULK && src.health <= 25)
src.mutations &= ~HULK
src << "\red You suddenly feel very weak."
src.weakened = 3
Weaken(3)
emote("collapse")
if (src.radiation)
if (src.radiation > 100)
src.radiation = 100
src.weakened = 10
Weaken(10)
src << "\red You feel weak."
emote("collapse")
@@ -157,7 +157,7 @@
src.adjustToxLoss(1)
if(prob(5))
src.radiation -= 5
src.weakened = 3
Weaken(3)
src << "\red You feel weak."
emote("collapse")
src.updatehealth()
@@ -304,7 +304,7 @@
if(!co2overloadtime) // If it's the first breath with too much CO2 in it, lets start a counter, then have them pass out after 12s or so.
co2overloadtime = world.time
else if(world.time - co2overloadtime > 120)
src.paralysis = max(src.paralysis, 3)
Paralyse(3)
oxyloss += 3 // Lets hurt em a little, let them know we mean business
if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
oxyloss += 8
@@ -325,7 +325,7 @@
for(var/datum/gas/sleeping_agent/SA in breath.trace_gases)
var/SA_pp = (SA.moles/breath.total_moles())*breath_pressure
if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit
src.paralysis = max(src.paralysis, 3) // 3 gives them one second to wake up and run away a bit!
Paralyse(3) // 3 gives them one second to wake up and run away a bit!
if(SA_pp > SA_sleep_min) // Enough to make us sleep as well
src.sleeping = max(src.sleeping, 2)
else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning
@@ -387,7 +387,7 @@
src.eye_blurry = max(2, src.eye_blurry)
if (prob(5))
src.sleeping = 1
src.paralysis = 5
Paralyse(5)
confused = max(0, confused - 1)
// decrement dizziness counter, clamped to 0
@@ -404,14 +404,14 @@
health = 100 - (getOxyLoss() + getToxLoss() + getFireLoss() + getBruteLoss() + getCloneLoss())
if(getOxyLoss() > 25) paralysis = max(paralysis, 3)
if(getOxyLoss() > 25) Paralyse(3)
if(src.sleeping)
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (prob(1) && health) spawn(0) emote("snore")
if(src.resting)
src.weakened = max(src.weakened, 5)
Weaken(5)
if(health < config.health_threshold_dead && stat != 2)
death()
@@ -422,20 +422,20 @@
if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
if(src.stat != 2) src.stat = 1
src.paralysis = max(src.paralysis, 5)
Paralyse(5)
if (src.stat != 2) //Alive.
if (src.paralysis || src.stunned || src.weakened || (changeling && changeling.changeling_fakedeath)) //Stunned etc.
if (src.stunned > 0)
src.stunned--
AdjustStunned(-1)
src.stat = 0
if (src.weakened > 0)
src.weakened--
AdjustWeakened(-1)
src.lying = 1
src.stat = 0
if (src.paralysis > 0)
src.paralysis--
AdjustParalysis(-1)
src.blinded = 1
src.lying = 1
src.stat = 1
+11 -14
View File
@@ -161,12 +161,11 @@
if(M.a_intent == "hurt")
if(M.gloves.cell.charge >= 2500)
M.gloves.cell.charge -= 2500
if (weakened < 5)
weakened = 5
Weaken(5)
if (stuttering < 5)
stuttering = 5
if (stunned < 5)
stunned = 5
Stun(5)
for(var/mob/O in viewers(src, null))
if (O.client)
O.show_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>", 1, "\red You hear someone fall", 2)
@@ -198,7 +197,7 @@
if (prob(40))
damage = rand(10, 15)
if (paralysis < 5)
paralysis = rand(10, 15)
Paralyse(rand(10, 15))
spawn( 0 )
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -235,7 +234,7 @@
else
if (!( paralysis ))
if (prob(25))
paralysis = 2
Paralyse(2)
playsound(loc, 'thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -270,7 +269,7 @@
if (damage >= 25)
damage = rand(20, 40)
if (paralysis < 15)
paralysis = rand(10, 15)
Paralyse(rand(10, 15))
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has wounded [name]!</B>", M), 1)
@@ -310,7 +309,7 @@
playsound(loc, 'pierce.ogg', 25, 1, -1)
var/damage = 5
if(prob(95))
weakened = rand(10, 15)
Weaken(rand(10,15))
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>[] has tackled down [name]!</B>", M), 1)
@@ -368,12 +367,10 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red <B>The [M.name] has shocked []!</B>", src), 1)
if (weakened < power)
weakened = power
Weaken(power)
if (stuttering < power)
stuttering = power
if (stunned < power)
stunned = power
Stun(power)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(5, 1, src)
@@ -562,7 +559,7 @@
adjustBruteLoss(30)
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
if (prob(50))
paralysis += 10
Paralyse(10)
else
return
@@ -571,7 +568,7 @@
adjustFireLoss(60)
health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss()
if (prob(50))
paralysis += 10
Paralyse(10)
/obj/effect/equip_e/monkey/process()
if (item)
+3 -3
View File
@@ -42,11 +42,11 @@
if(!effect || (blocked >= 2)) return 0
switch(effecttype)
if(STUN)
stunned = max(stunned,(effect/(blocked+1)))
Stun(effect/(blocked+1))
if(WEAKEN)
weakened = max(weakened,(effect/(blocked+1)))
Weaken(effect/(blocked+1))
if(PARALYZE)
paralysis = max(paralysis,(effect/(blocked+1)))
Paralyse(effect/(blocked+1))
if(IRRADIATE)
radiation += min((effect - (effect*getarmor(null, "rad"))), 0)//Rads auto check armor
if(STUTTER)

Some files were not shown because too many files have changed in this diff Show More