Tg 1 28 sync testing/confirmation (#5178)

* maps, tgui, tools

* defines and helpers

* onclick and controllers

* datums

fucking caught that hulk reversal too.

* game and shuttle modular

* module/admin

* oh god they fucking moved antag shit again

* haaaaate. Haaaaaaaaaate.

* enables moff wings

* more modules things

* tgstation.dme

before I forget something important

* some mob stuff

* s'more mob/living stuff

* some carbon stuff

* ayy lmaos and kitchen meat

* Human stuff

* species things

moff wings have a 'none' version too

* the rest of the module stuff.

* some strings

* misc

* mob icons

* some other icons.

* It compiles FUCK BORERS

FUCK BORERS
This commit is contained in:
Poojawa
2018-01-29 04:42:29 -06:00
committed by GitHub
parent 89fa4b0f28
commit 03086dfa91
666 changed files with 27177 additions and 35945 deletions
+6 -7
View File
@@ -173,16 +173,16 @@ AI MODULES
/******************** OneHuman ********************/
/obj/item/aiModule/zeroth/oneHuman
name = "'OneCrew' AI Module"//CIT CHANGE - changes onehuman to onecrew
name = "'OneHuman' AI Module"
var/targetName = ""
laws = list("Only SUBJECT is crew.")
laws = list("Only SUBJECT is human.")
/obj/item/aiModule/zeroth/oneHuman/attack_self(mob/user)
var/targName = stripped_input(user, "Please enter the subject who is the only crew.", "Who?", user.real_name,MAX_NAME_LEN)
var/targName = stripped_input(user, "Please enter the subject who is the only human.", "Who?", user.real_name,MAX_NAME_LEN)
if(!targName)
return
targetName = targName
laws[1] = "Only [targetName] is crew"
laws[1] = "Only [targetName] is human"
..()
/obj/item/aiModule/zeroth/oneHuman/install(datum/ai_laws/law_datum, mob/user)
@@ -408,9 +408,8 @@ AI MODULES
laws += line
if(!laws.len) //Failsafe if something goes wrong with silicon_laws.txt.
WARNING("ERROR: empty custom board created, empty custom board deleted. Please check silicon_laws.txt. (this may be intended by the server host)")
qdel(src)
if(!laws.len)
return INITIALIZE_HINT_QDEL
/****************** T.Y.R.A.N.T. *****************/
+3 -3
View File
@@ -133,8 +133,8 @@ RSF
return
/obj/item/cookiesynth/emag_act(mob/user)
emagged = !emagged
if(emagged)
obj_flags ^= EMAGGED
if(obj_flags & EMAGGED)
to_chat(user, "<span class='warning'>You short out [src]'s reagent safety checker!</span>")
else
to_chat(user, "<span class='warning'>You reset [src]'s reagent safety checker!</span>")
@@ -144,7 +144,7 @@ RSF
var/mob/living/silicon/robot/P = null
if(iscyborg(user))
P = user
if(emagged&&!toxin)
if((obj_flags & EMAGGED)&&!toxin)
toxin = 1
to_chat(user, "Cookie Synthesizer Hacked")
else if(P.emagged&&!toxin)
+2 -2
View File
@@ -16,7 +16,7 @@
/obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0)
..()
owner.status_flags |= XENO_HOST
owner.add_trait(TRAIT_XENO_HOST, TRAIT_GENERIC)
START_PROCESSING(SSobj, src)
owner.med_hud_set_status()
INVOKE_ASYNC(src, .proc/AddInfectionImages, owner)
@@ -24,7 +24,7 @@
/obj/item/organ/body_egg/Remove(var/mob/living/carbon/M, special = 0)
STOP_PROCESSING(SSobj, src)
if(owner)
owner.status_flags &= ~(XENO_HOST)
owner.remove_trait(TRAIT_XENO_HOST, TRAIT_GENERIC)
owner.med_hud_set_status()
INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner)
..()
+5 -5
View File
@@ -693,7 +693,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
cut_overlays()
if(istype(O, /obj/item/device/multitool))
if(screw && !emagged)//also kinky
if(screw && !(obj_flags & EMAGGED))//also kinky
if(!super)
cut_overlays()
super = 1
@@ -705,15 +705,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
to_chat(user, "<span class='notice'>You decrease the voltage of [src].</span>")
add_overlay("vapeopen_low")
if(screw && emagged)
if(screw && (obj_flags & EMAGGED))
to_chat(user, "<span class='notice'>[src] can't be modified!</span>")
/obj/item/clothing/mask/vape/emag_act(mob/user)// I WON'T REGRET WRITTING THIS, SURLY.
if(screw)
if(!emagged)
if(!(obj_flags & EMAGGED))
cut_overlays()
emagged = TRUE
obj_flags |= EMAGGED
super = 0
to_chat(user, "<span class='warning'>You maximize the voltage of [src].</span>")
add_overlay("vapeopen_high")
@@ -790,7 +790,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
s.start()
vapetime = 0
if(emagged && vapetime > 3)
if((obj_flags & EMAGGED) && vapetime > 3)
var/datum/effect_system/smoke_spread/chem/s = new
s.set_up(reagents, 4, loc, silent=TRUE)
s.start()
@@ -189,16 +189,16 @@
var/contraband = FALSE
/obj/item/circuitboard/computer/cargo/multitool_act(mob/living/user)
if(!emagged)
if(!(obj_flags & EMAGGED))
contraband = !contraband
to_chat(user, "<span class='notice'>Receiver spectrum set to [contraband ? "Broad" : "Standard"].</span>")
else
to_chat(user, "<span class='notice'>The spectrum chip is unresponsive.</span>")
/obj/item/circuitboard/computer/cargo/emag_act(mob/living/user)
if(!emagged)
if(!(obj_flags & EMAGGED))
contraband = TRUE
emagged = TRUE
obj_flags |= EMAGGED
to_chat(user, "<span class='notice'>You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.</span>")
/obj/item/circuitboard/computer/cargo/express
@@ -206,15 +206,15 @@
build_path = /obj/machinery/computer/cargo/express
/obj/item/circuitboard/computer/cargo/express/multitool_act(mob/living/user)
if (!emagged)
if (!(obj_flags & EMAGGED))
to_chat(user, "<span class='notice'>Routing protocols are already set to: \"factory defaults\".</span>")
else
else
to_chat(user, "<span class='notice'>You reset the routing protocols to: \"factory defaults\".</span>")
emagged = FALSE
obj_flags &= ~EMAGGED
/obj/item/circuitboard/computer/cargo/express/emag_act(mob/living/user)
to_chat(user, "<span class='notice'>You change the routing protocols, allowing the Drop Pod to land anywhere on the station.</span>")
emagged = TRUE
obj_flags |= EMAGGED
/obj/item/circuitboard/computer/cargo/request
name = "Supply Request Console (Computer Board)"
+1 -1
View File
@@ -39,7 +39,7 @@
var/list/runes = list("rune1","rune2","rune3","rune4","rune5","rune6")
var/list/randoms = list(RANDOM_ANY, RANDOM_RUNE, RANDOM_ORIENTED,
RANDOM_NUMBER, RANDOM_GRAFFITI, RANDOM_LETTER)
var/list/graffiti_large_h = list("secborg", "paint") // CIT CHANGE - removes yiff in hell graffiti
var/list/graffiti_large_h = list("yiffhell", "secborg", "paint")
var/list/all_drawables
+2 -2
View File
@@ -399,7 +399,7 @@
/obj/item/twohanded/shockpaddles/proc/can_defib(mob/living/carbon/H)
var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain)
return (!H.suiciding && !(H.has_disability(DISABILITY_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain)
return (!H.suiciding && !(H.has_trait(TRAIT_NOCLONE)) && !H.hellbound && ((world.time - H.timeofdeath) < tlimit) && (H.getBruteLoss() < 180) && (H.getFireLoss() < 180) && H.getorgan(/obj/item/organ/heart) && BR && !BR.damaged_brain)
/obj/item/twohanded/shockpaddles/proc/shock_touching(dmg, mob/H)
if(isliving(H.pulledby)) //CLEAR!
@@ -520,7 +520,7 @@
shock_touching(30, H)
var/failed
if (H.suiciding || (H.has_disability(DISABILITY_NOCLONE)))
if (H.suiciding || (H.has_trait(TRAIT_NOCLONE)))
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.</span>"
else if (H.hellbound)
failed = "<span class='warning'>[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul appears to be on another plane of existence. Further attempts futile.</span>"
@@ -49,7 +49,7 @@
add_fingerprint(user)
if(istype(M) && on && user.zone_selected in list("eyes", "mouth"))
if((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50)) //too dumb to use flashlight properly
if((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly
return ..() //just hit them in the head
if(!user.IsAdvancedToolUser())
@@ -83,7 +83,7 @@
else
user.visible_message("<span class='warning'>[user] directs [src] to [M]'s eyes.</span>", \
"<span class='danger'>You direct [src] to [M]'s eyes.</span>")
if(M.stat == DEAD || (M.has_disability(DISABILITY_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind
if(M.stat == DEAD || (M.has_trait(TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind
to_chat(user, "<span class='warning'>[M]'s pupils don't react to the light!</span>")
else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-RAY vision
to_chat(user, "<span class='danger'>[M]'s pupils give an eerie glow!</span>")
@@ -46,15 +46,15 @@
if(!scanning)
current_tick_amount = 0
return
radiation_count -= radiation_count/RAD_MEASURE_SMOOTHING
radiation_count += current_tick_amount/RAD_MEASURE_SMOOTHING
if(current_tick_amount)
grace = RAD_GRACE_PERIOD
last_tick_amount = current_tick_amount
else if(!emagged)
else if(!(obj_flags & EMAGGED))
grace--
if(grace <= 0)
radiation_count = 0
@@ -66,7 +66,7 @@
if(!scanning)
return 1
to_chat(user, "<span class='info'>Alt-click it to clear stored radiation levels.</span>")
if(emagged)
if(obj_flags & EMAGGED)
to_chat(user, "<span class='warning'>The display seems to be incomprehensible.</span>")
return 1
switch(radiation_count)
@@ -89,7 +89,7 @@
if(!scanning)
icon_state = "geiger_off"
return 1
if(emagged)
if(obj_flags & EMAGGED)
icon_state = "geiger_on_emag"
return 1
switch(radiation_count)
@@ -131,7 +131,7 @@
/obj/item/device/geiger_counter/attack(mob/living/M, mob/user)
if(user.a_intent == INTENT_HELP)
if(!emagged)
if(!(obj_flags & EMAGGED))
user.visible_message("<span class='notice'>[user] scans [M] with [src].</span>", "<span class='notice'>You scan [M]'s radiation levels with [src]...</span>")
addtimer(CALLBACK(src, .proc/scan, M, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
else
@@ -164,7 +164,7 @@
to_chat(user, "<span class='notice'>[icon2html(src, user)] Subject is free of radioactive contamination.</span>")
/obj/item/device/geiger_counter/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/screwdriver) && emagged)
if(istype(I, /obj/item/screwdriver) && (obj_flags & EMAGGED))
if(scanning)
to_chat(user, "<span class='warning'>Turn off [src] before you perform this action!</span>")
return 0
@@ -174,7 +174,7 @@
return 0
user.visible_message("<span class='notice'>[user] refastens [src]'s maintenance panel!</span>", "<span class='notice'>You reset [src] to its factory settings!</span>")
playsound(user, 'sound/items/screwdriver2.ogg', 50, 1)
emagged = FALSE
obj_flags &= ~EMAGGED
radiation_count = 0
update_icon()
return 1
@@ -192,13 +192,13 @@
update_icon()
/obj/item/device/geiger_counter/emag_act(mob/user)
if(emagged)
if(obj_flags & EMAGGED)
return
if(scanning)
to_chat(user, "<span class='warning'>Turn off [src] before you perform this action!</span>")
return 0
to_chat(user, "<span class='warning'>You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.</span>")
emagged = TRUE
obj_flags |= EMAGGED
#undef RAD_LEVEL_NORMAL
#undef RAD_LEVEL_MODERATE
+1 -1
View File
@@ -6,7 +6,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
icon_state = "gps-c"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
unique_rename = TRUE
obj_flags = UNIQUE_RENAME
var/gpstag = "COM0"
var/emped = FALSE
var/turf/locked_location
@@ -149,7 +149,7 @@
to_chat(user, "<span class='notice'>You fill \the [src] with lights from \the [S]. " + status_string() + "</span>")
/obj/item/device/lightreplacer/emag_act()
if(emagged)
if(obj_flags & EMAGGED)
return
Emag()
@@ -157,7 +157,7 @@
to_chat(user, status_string())
/obj/item/device/lightreplacer/update_icon()
icon_state = "lightreplacer[emagged]"
icon_state = "lightreplacer[(obj_flags & EMAGGED ? 1 : 0)]"
/obj/item/device/lightreplacer/proc/status_string()
return "It has [uses] light\s remaining (plus [bulb_shards] fragment\s)."
@@ -205,7 +205,7 @@
target.status = L2.status
target.switchcount = L2.switchcount
target.rigged = emagged
target.rigged = (obj_flags & EMAGGED ? 1 : 0)
target.brightness = L2.brightness
target.on = target.has_power()
target.update()
@@ -223,9 +223,9 @@
return
/obj/item/device/lightreplacer/proc/Emag()
emagged = !emagged
obj_flags ^= EMAGGED
playsound(src.loc, "sparks", 100, 1)
if(emagged)
if(obj_flags & EMAGGED)
name = "shortcircuited [initial(name)]"
else
name = initial(name)
+2 -2
View File
@@ -25,10 +25,10 @@
return voicespan
/obj/item/device/megaphone/emag_act(mob/user)
if(emagged)
if(obj_flags & EMAGGED)
return
to_chat(user, "<span class='warning'>You overload \the [src]'s voice synthesizer.</span>")
emagged = TRUE
obj_flags |= EMAGGED
voicespan = list(SPAN_REALLYBIG, "userdanger")
/obj/item/device/megaphone/sec
+7 -7
View File
@@ -90,7 +90,7 @@ GAS ANALYZER
/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user)
// Clumsiness/brain damage check
if ((user.has_disability(DISABILITY_CLUMSY) || user.has_disability(DISABILITY_DUMB)) && prob(50))
if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50))
to_chat(user, "<span class='notice'>You stupidly try to analyze the floor's vitals!</span>")
user.visible_message("<span class='warning'>[user] has analyzed the floor's vitals!</span>")
to_chat(user, "<span class='info'>Analyzing results for The floor:\n\tOverall status: <b>Healthy</b>")
@@ -120,7 +120,7 @@ GAS ANALYZER
var/brute_loss = M.getBruteLoss()
var/mob_status = (M.stat == DEAD ? "<span class='alert'><b>Deceased</b></span>" : "<b>[round(M.health/M.maxHealth,0.01)*100] % healthy</b>")
if(M.status_flags & FAKEDEATH && !advanced)
if(M.has_trait(TRAIT_FAKEDEATH) && !advanced)
mob_status = "<span class='alert'><b>Deceased</b></span>"
oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss
@@ -181,10 +181,10 @@ GAS ANALYZER
to_chat(user, "\t<span class='info'><b>==EAR STATUS==</b></span>")
if(istype(ears))
var/healthy = TRUE
if(C.has_disability(DISABILITY_DEAF, GENETIC_MUTATION))
if(C.has_trait(TRAIT_DEAF, GENETIC_MUTATION))
healthy = FALSE
to_chat(user, "\t<span class='alert'>Subject is genetically deaf.</span>")
else if(C.has_disability(DISABILITY_DEAF))
else if(C.has_trait(TRAIT_DEAF))
healthy = FALSE
to_chat(user, "\t<span class='alert'>Subject is deaf.</span>")
else
@@ -202,10 +202,10 @@ GAS ANALYZER
to_chat(user, "\t<span class='info'><b>==EYE STATUS==</b></span>")
if(istype(eyes))
var/healthy = TRUE
if(C.has_disability(DISABILITY_BLIND))
if(C.has_trait(TRAIT_BLIND))
to_chat(user, "\t<span class='alert'>Subject is blind.</span>")
healthy = FALSE
if(C.has_disability(DISABILITY_NEARSIGHT))
if(C.has_trait(TRAIT_NEARSIGHT))
to_chat(user, "\t<span class='alert'>Subject is nearsighted.</span>")
healthy = FALSE
if(eyes.eye_damage > 30)
@@ -245,7 +245,7 @@ GAS ANALYZER
to_chat(user, "<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] &deg;C ([round(M.bodytemperature*1.8-459.67,0.1)] &deg;F)</span>")
// Time of death
if(M.tod && (M.stat == DEAD || ((M.status_flags & FAKEDEATH) && !advanced)))
if(M.tod && (M.stat == DEAD || ((M.has_trait(TRAIT_FAKEDEATH)) && !advanced)))
to_chat(user, "<span class='info'>Time of Death:</span> [M.tod]")
var/tdelta = round(world.time - M.timeofdeath)
if(tdelta < (DEFIB_TIME_LIMIT * 10))
+2 -2
View File
@@ -31,7 +31,7 @@
/obj/item/dnainjector/proc/inject(mob/living/carbon/M, mob/user)
prepare()
if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_disability(DISABILITY_NOCLONE)))
if(M.has_dna() && !(RADIMMUNE in M.dna.species.species_traits) && !(M.has_trait(TRAIT_NOCLONE)))
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
for(var/datum/mutation/human/HM in remove_mutations)
@@ -313,7 +313,7 @@
to_chat(user, "<span class='notice'>You can't modify [M]'s DNA while [M.p_theyre()] dead.</span>")
return FALSE
if(M.has_dna() && !(M.has_disability(DISABILITY_NOCLONE)))
if(M.has_dna() && !(M.has_trait(TRAIT_NOCLONE)))
M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2))
var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]"
var/endtime = world.time+duration
+1 -1
View File
@@ -32,7 +32,7 @@
qdel(src)
/obj/item/grenade/proc/clown_check(mob/living/carbon/human/user)
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
to_chat(user, "<span class='warning'>Huh? How does this thing work?</span>")
preprime(user, 5, FALSE)
return FALSE
+1 -1
View File
@@ -113,7 +113,7 @@
var/obj/item/I = AM
I.throw_speed = max(1, (I.throw_speed - 3))
I.throw_range = max(1, (I.throw_range - 3))
I.embed_chance = 0
I.embedding = I.embedding.setRating(embed_chance = 0)
message_admins("[ADMIN_LOOKUPFLW(user)] planted [name] on [target.name] at [ADMIN_COORDJMP(target)] with [det_time] second fuse",0,1)
log_game("[key_name(user)] planted [name] on [target.name] at [COORD(src)] with [det_time] second fuse")
+1 -1
View File
@@ -43,7 +43,7 @@
/obj/item/restraints/handcuffs/attack(mob/living/carbon/C, mob/living/carbon/human/user)
if(!istype(C))
return
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
to_chat(user, "<span class='warning'>Uh... how do those things work?!</span>")
apply_cuffs(user,user)
return
+1 -1
View File
@@ -10,7 +10,7 @@
throw_range = 4
throwforce = 10
w_class = WEIGHT_CLASS_TINY
unique_rename = TRUE
obj_flags = UNIQUE_RENAME
var/reskinned = FALSE
/obj/item/nullrod/suicide_act(mob/user)
+2 -2
View File
@@ -49,7 +49,7 @@
forkload = null
else if(user.zone_selected == "eyes")
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
else
@@ -75,7 +75,7 @@
/obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user)
if(user.zone_selected == "eyes")
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
else
+1 -2
View File
@@ -95,8 +95,7 @@
throw_speed = 3
throw_range = 5
sharpness = IS_SHARP
embed_chance = 75
embedded_impact_pain_multiplier = 10
embedding = list("embed_chance" = 75, "embedded_impact_pain_multiplier" = 10)
armour_penetration = 35
block_chance = 50
+4 -4
View File
@@ -1,5 +1,5 @@
/obj/item/melee
needs_permit = 1
item_flags = NEEDS_PERMIT
/obj/item/melee/proc/check_martial_counter(mob/living/carbon/human/target, mob/living/carbon/human/user)
if(target.check_block())
@@ -52,7 +52,7 @@
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
flags_1 = CONDUCT_1
unique_rename = 1
obj_flags = UNIQUE_RENAME
force = 15
throwforce = 10
w_class = WEIGHT_CLASS_BULKY
@@ -99,7 +99,7 @@
return ..()
add_fingerprint(user)
if((user.has_disability(DISABILITY_CLUMSY)) && prob(50))
if((user.has_trait(TRAIT_CLUMSY)) && prob(50))
to_chat(user, "<span class ='danger'>You club yourself over the head.</span>")
user.Knockdown(60 * force)
if(ishuman(user))
@@ -148,7 +148,7 @@
item_state = null
slot_flags = SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
needs_permit = 0
item_flags = NONE
force = 0
on = FALSE
@@ -72,6 +72,6 @@
to_chat(user, "<span class='notice'>[src] [active ? "is now active":"can now be concealed"].</span>")
/obj/item/melee/transforming/proc/clumsy_transform_effect(mob/living/user)
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
to_chat(user, "<span class='warning'>You accidentally cut yourself with [src], like a doofus!</span>")
user.take_bodypart_damage(5,5)
+1 -1
View File
@@ -147,7 +147,7 @@
if(tank && !tank.air_contents.remove(gasPerThrow * pressureSetting))
to_chat(user, "<span class='warning'>\The [src] lets out a weak hiss and doesn't react!</span>")
return
if(user.has_disability(DISABILITY_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user))
if(user.has_trait(TRAIT_CLUMSY) && prob(75) && clumsyCheck && iscarbon(user))
var/mob/living/carbon/C = user
C.visible_message("<span class='warning'>[C] loses their grip on [src], causing it to go off!</span>", "<span class='userdanger'>[src] slips out of your hands and goes off!</span>")
C.dropItemToGround(src, TRUE)
+3 -3
View File
@@ -280,14 +280,14 @@
var/cooldown = 0
/obj/item/device/harmalarm/emag_act(mob/user)
emagged = !emagged
if(emagged)
obj_flags ^= EMAGGED
if(obj_flags & EMAGGED)
to_chat(user, "<font color='red'>You short out the safeties on [src]!</font>")
else
to_chat(user, "<font color='red'>You reset the safeties on [src]!</font>")
/obj/item/device/harmalarm/attack_self(mob/user)
var/safety = !emagged
var/safety = !(obj_flags & EMAGGED)
if(cooldown > world.time)
to_chat(user, "<font color='red'>The device is still recharging!</font>")
return
+1 -1
View File
@@ -78,7 +78,7 @@
return (active)
/obj/item/shield/energy/attack_self(mob/living/carbon/human/user)
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
to_chat(user, "<span class='warning'>You beat yourself in the head with [src].</span>")
user.take_bodypart_damage(5)
active = !active
+1 -1
View File
@@ -94,7 +94,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible",
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return
if (user.has_disability(DISABILITY_CLUMSY) && prob(50))
if (user.has_trait(TRAIT_CLUMSY) && prob(50))
to_chat(user, "<span class='danger'>[src] slips out of your hand and hits your head.</span>")
user.take_bodypart_damage(10)
user.Unconscious(400)
+1 -1
View File
@@ -108,7 +108,7 @@
add_fingerprint(user)
/obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user)
if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(status && user.has_trait(TRAIT_CLUMSY) && prob(50))
user.visible_message("<span class='danger'>[user] accidentally hits themself with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
user.Knockdown(stunforce*3)
+1 -1
View File
@@ -125,7 +125,7 @@
H.dropItemToGround(W)
if(prob(50))
step(W, pick(GLOB.alldirs))
H.status_flags |= DISFIGURED
H.add_trait(TRAIT_DISFIGURED, TRAIT_GENERIC)
H.bleed_rate = 5
H.gib_animation()
sleep(3)
+1 -1
View File
@@ -8,7 +8,7 @@
/obj/item/melee/baton/cattleprod/teleprod/attack(mob/living/carbon/M, mob/living/carbon/user)//handles making things teleport when hit
..()
if(status && user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(status && user.has_trait(TRAIT_CLUMSY) && prob(50))
user.visible_message("<span class='danger'>[user] accidentally hits themself with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
if(do_teleport(user, get_turf(user), 50))//honk honk
+11 -8
View File
@@ -203,6 +203,11 @@
toolspeed = 0.5
damtype = "fire"
usesound = 'sound/weapons/bladeslice.ogg'
var/usesLeft
/obj/item/scalpel/supermatter/Initialize()
. = ..()
usesLeft = rand(2, 4)
/obj/item/hemostat/supermatter
name = "supermatter extraction tongs"
@@ -227,10 +232,7 @@
if(!sliver)
return
if(ismovableatom(O) && O != sliver)
Consume(O)
to_chat(usr, "<span class='notice'>\The [sliver] is dusted along with \the [O]!</span>")
QDEL_NULL(sliver)
update_icon()
Consume(O, user)
/obj/item/hemostat/supermatter/throw_impact(atom/hit_atom) // no instakill supermatter javelins
if(sliver)
@@ -249,11 +251,12 @@
else
investigate_log("has consumed [AM].", "supermatter")
qdel(AM)
user.visible_message("<span class='danger'>As [user] touches \the [AM] with \a [src], silence fills the room...</span>",\
"<span class='userdanger'>You touch \the [AM] with \the [src], and everything suddenly goes silent.</span>\n<span class='notice'>\The [AM] flashes into dust, and soon as you can register this, you do as well.</span>",\
if (user)
user.visible_message("<span class='danger'>As [user] touches [AM] with \a [src], silence fills the room...</span>",\
"<span class='userdanger'>You touch [AM] with [src], and everything suddenly goes silent.</span>\n<span class='notice'>[AM] and [sliver] flash into dust, and soon as you can register this, you do as well.</span>",\
"<span class='italics'>Everything suddenly goes silent.</span>")
radiation_pulse(user, 500, 2)
user.dust()
radiation_pulse(src, 500, 2)
playsound(src, 'sound/effects/supermatter.ogg', 50, 1)
user.dust()
QDEL_NULL(sliver)
update_icon()
+1 -1
View File
@@ -75,7 +75,7 @@
return ..()
if(user.zone_selected != "eyes" && user.zone_selected != "head")
return ..()
if(user.has_disability(DISABILITY_CLUMSY) && prob(50))
if(user.has_trait(TRAIT_CLUMSY) && prob(50))
M = user
return eyestab(M,user)
@@ -30,6 +30,7 @@
var/light_intensity = 2 //how powerful the emitted light is when used.
var/burned_fuel_for = 0 //when fuel was last removed
heat = 3800
tool_behaviour = TOOL_WELDER
toolspeed = 1
/obj/item/weldingtool/Initialize()
+6 -6
View File
@@ -289,7 +289,7 @@
/obj/item/twohanded/dualsaber/suicide_act(mob/living/carbon/user)
if(wielded)
user.visible_message("<span class='suicide'>[user] begins spinning way too fast! It looks like [user.p_theyre()] trying to commit suicide!</span>")
var/obj/item/bodypart/head/myhead = user.get_bodypart("head")//stole from chainsaw code
var/obj/item/organ/brain/B = user.getorganslot(ORGAN_SLOT_BRAIN)
B.vital = FALSE//this cant possibly be a good idea
@@ -305,8 +305,8 @@
else
user.visible_message("<span class='suicide'>[user] panics and starts choking to death!</span>")
return OXYLOSS
else
user.visible_message("<span class='suicide'>[user] begins beating [user.p_them()]self to death with \the [src]'s handle! It probably would've been cooler if [user.p_they()] turned it on first!</span>")
return BRUTELOSS
@@ -343,7 +343,7 @@
unwield()
return
..()
if(user.has_disability(DISABILITY_CLUMSY) && (wielded) && prob(40))
if(user.has_trait(TRAIT_CLUMSY) && (wielded) && prob(40))
impale(user)
return
if((wielded) && prob(50))
@@ -459,7 +459,7 @@
force_wielded = 18
throwforce = 20
throw_speed = 4
embedded_impact_pain_multiplier = 3
embedding = list("embedded_impact_pain_multiplier" = 3)
armour_penetration = 10
materials = list(MAT_METAL=1150, MAT_GLASS=2075)
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -778,7 +778,7 @@
force_wielded = 20 //I have no idea how to balance
throwforce = 22
throw_speed = 4
embedded_impact_pain_multiplier = 3
embedding = list("embedded_impact_pain_multiplier" = 3)
armour_penetration = 15 //Enhanced armor piercing
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
+4 -6
View File
@@ -105,10 +105,10 @@
/obj/item/claymore/highlander/pickup(mob/living/user)
to_chat(user, "<span class='notice'>The power of Scotland protects you! You are shielded from all stuns and knockdowns.</span>")
user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!")
user.status_flags += IGNORESLOWDOWN
user.add_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER)
/obj/item/claymore/highlander/dropped(mob/living/user)
user.status_flags -= IGNORESLOWDOWN
user.remove_trait(TRAIT_IGNORESLOWDOWN, HIGHLANDER)
qdel(src) //If this ever happens, it's because you lost an arm
/obj/item/claymore/highlander/examine(mob/user)
@@ -267,10 +267,8 @@
force = 2
throwforce = 20 //This is never used on mobs since this has a 100% embed chance.
throw_speed = 4
embedded_pain_multiplier = 4
embedding = list("embedded_pain_multiplier" = 4, "embed_chance" = 100, "embedded_fall_chance" = 0)
w_class = WEIGHT_CLASS_SMALL
embed_chance = 100
embedded_fall_chance = 0 //Hahaha!
sharpness = IS_SHARP
materials = list(MAT_METAL=500, MAT_GLASS=500)
resistance_flags = FIRE_PROOF
@@ -454,7 +452,7 @@
name = "liz o' nine tails"
desc = "A whip fashioned from the severed tails of lizards."
icon_state = "tailwhip"
needs_permit = 0
item_flags = NONE
/obj/item/melee/chainofcommand/tailwhip/kitty
name = "cat o' nine tails"