mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
Merge Conflict Fix, Attempt 2
This commit is contained in:
@@ -37,12 +37,12 @@
|
||||
if(!istype(T))
|
||||
return
|
||||
add_underlay(T, node1, turn(dir, -180))
|
||||
|
||||
|
||||
if(istype(src, /obj/machinery/atmospherics/tvalve/mirrored))
|
||||
add_underlay(T, node2, turn(dir, 90))
|
||||
else
|
||||
add_underlay(T, node2, turn(dir, -90))
|
||||
|
||||
|
||||
add_underlay(T, node3, dir)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/hide(var/i)
|
||||
@@ -172,9 +172,6 @@
|
||||
/obj/machinery/atmospherics/tvalve/attack_ai(mob/user as mob)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/tvalve/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(usr)
|
||||
update_icon(1)
|
||||
@@ -224,7 +221,7 @@
|
||||
src.connected_to = c
|
||||
node3 = target
|
||||
break
|
||||
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
|
||||
@@ -419,7 +416,7 @@
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node3 = target
|
||||
break
|
||||
|
||||
|
||||
update_icon()
|
||||
update_underlays()
|
||||
|
||||
|
||||
@@ -132,9 +132,6 @@
|
||||
/obj/machinery/atmospherics/valve/attack_ai(mob/user as mob)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/valve/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/valve/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(usr)
|
||||
update_icon(1)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/////Initial Building/////
|
||||
//////////////////////////
|
||||
|
||||
/hook/startup/proc/makeDatumRefLists()
|
||||
/proc/makeDatumRefLists()
|
||||
var/list/paths
|
||||
|
||||
//Hair - Initialise all /datum/sprite_accessory/hair into an list indexed by hair-style name
|
||||
|
||||
@@ -558,16 +558,10 @@ Turf and target are seperate in case you want to teleport some distance from a t
|
||||
moblist.Add(M)
|
||||
for(var/mob/new_player/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/carbon/monkey/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/carbon/slime/M in sortmob)
|
||||
moblist.Add(M)
|
||||
for(var/mob/living/simple_animal/M in sortmob)
|
||||
moblist.Add(M)
|
||||
// for(var/mob/living/silicon/hivebot/M in world)
|
||||
// mob_list.Add(M)
|
||||
// for(var/mob/living/silicon/hive_mainframe/M in world)
|
||||
// mob_list.Add(M)
|
||||
return moblist
|
||||
|
||||
//E = MC^2
|
||||
@@ -1265,37 +1259,15 @@ proc/get_mob_with_client_list()
|
||||
return
|
||||
|
||||
//Finds the distance between two atoms, in pixels
|
||||
/proc/getPixelDistance(var/atom/A, var/atom/B)
|
||||
//centered = 0 counts from turf edge to edge
|
||||
//centered = 1 counts from turf center to turf center
|
||||
//of course mathematically this is just adding world.icon_size on again
|
||||
/proc/getPixelDistance(var/atom/A, var/atom/B, var/centered = 1)
|
||||
if(!istype(A)||!istype(B))
|
||||
return 0
|
||||
|
||||
var/_x1 = A.x
|
||||
var/_x2 = B.x
|
||||
var/_y1 = A.y
|
||||
var/_y2 = B.y
|
||||
|
||||
//Ensure _x1 is bigger, simplicity
|
||||
if(_x2 > _x1)
|
||||
var/tx = _x1
|
||||
_x1 = _x2
|
||||
_x2 = tx
|
||||
|
||||
//Ensure _y1 is bigger, simplicity
|
||||
if(_y2 > _y1)
|
||||
var/ty = _y1
|
||||
_y1 = _y2
|
||||
_y2 = ty
|
||||
|
||||
//DY/DX
|
||||
var/dx = _x1 - _x2 + A.pixel_x + B.pixel_x
|
||||
var/dy = _y1 - _y2 + A.pixel_y + B.pixel_y
|
||||
|
||||
//Distance check
|
||||
if(dx == 0 && dy == 0) //No distance, don't bother calculating
|
||||
return 0
|
||||
|
||||
. = sqrt(((dx**2) + (dy**2)))
|
||||
|
||||
. = bounds_dist(A, B) + sqrt((((A.pixel_x+B.pixel_x)**2) + ((A.pixel_y+B.pixel_y)**2)))
|
||||
if(centered)
|
||||
. += world.icon_size
|
||||
|
||||
/proc/get(atom/loc, type)
|
||||
while(loc)
|
||||
|
||||
@@ -174,10 +174,10 @@ datum/hud/New(mob/owner)
|
||||
var/ui_color = mymob.client.prefs.UI_style_color
|
||||
var/ui_alpha = mymob.client.prefs.UI_style_alpha
|
||||
|
||||
if(ishuman(mymob))
|
||||
human_hud(ui_style, ui_color, ui_alpha) // Pass the player the UI style chosen in preferences
|
||||
else if(ismonkey(mymob))
|
||||
if(issmall(mymob))
|
||||
monkey_hud(ui_style)
|
||||
else if(ishuman(mymob))
|
||||
human_hud(ui_style, ui_color, ui_alpha) // Pass the player the UI style chosen in preferences
|
||||
else if(isbrain(mymob))
|
||||
brain_hud(ui_style)
|
||||
else if( islarva(mymob) || isfacehugger(mymob) )
|
||||
|
||||
@@ -50,39 +50,6 @@
|
||||
/mob/living/RestrainedClickOn(var/atom/A)
|
||||
return
|
||||
|
||||
/*
|
||||
Monkeys
|
||||
*/
|
||||
/mob/living/carbon/monkey/UnarmedAttack(var/atom/A)
|
||||
A.attack_paw(src)
|
||||
/atom/proc/attack_paw(mob/user as mob)
|
||||
return
|
||||
|
||||
/*
|
||||
Monkey RestrainedClickOn() was apparently the
|
||||
one and only use of all of the restrained click code
|
||||
(except to stop you from doing things while handcuffed);
|
||||
moving it here instead of various hand_p's has simplified
|
||||
things considerably
|
||||
*/
|
||||
/mob/living/carbon/monkey/RestrainedClickOn(var/atom/A)
|
||||
if(..())
|
||||
return
|
||||
if(a_intent != "harm" || !ismob(A)) return
|
||||
if(is_muzzled())
|
||||
return
|
||||
var/mob/living/carbon/ML = A
|
||||
var/dam_zone = ran_zone(pick("chest", "l_hand", "r_hand", "l_leg", "r_leg"))
|
||||
var/armor = ML.run_armor_check(dam_zone, "melee")
|
||||
if(prob(75))
|
||||
ML.apply_damage(rand(1,3), BRUTE, dam_zone, armor)
|
||||
for(var/mob/O in viewers(ML, null))
|
||||
O.show_message("\red <B>[name] has bit [ML]!</B>", 1)
|
||||
if(armor >= 2) return
|
||||
else
|
||||
for(var/mob/O in viewers(ML, null))
|
||||
O.show_message("\red <B>[src] has attempted to bite [ML]!</B>", 1)
|
||||
|
||||
/*
|
||||
Aliens
|
||||
Defaults to same as monkey in most places
|
||||
@@ -90,7 +57,7 @@
|
||||
/mob/living/carbon/alien/UnarmedAttack(var/atom/A)
|
||||
A.attack_alien(src)
|
||||
/atom/proc/attack_alien(mob/user as mob)
|
||||
attack_paw(user)
|
||||
attack_hand(user)
|
||||
return
|
||||
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
|
||||
return
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/**
|
||||
* Podman hook.
|
||||
* Called in podmen.dm when someone is brought back as a Diona.
|
||||
* Parameters: var/mob/living/carbon/monkey/diona
|
||||
* Parameters: var/mob/living/carbon/primitive/diona
|
||||
*/
|
||||
/hook/harvest_podman
|
||||
|
||||
|
||||
+1
-41
@@ -137,7 +137,7 @@ datum/mind
|
||||
)
|
||||
var/text = ""
|
||||
var/mob/living/carbon/human/H = current
|
||||
if (istype(current, /mob/living/carbon/human) || istype(current, /mob/living/carbon/monkey))
|
||||
if (istype(current, /mob/living/carbon/human))
|
||||
/** Impanted**/
|
||||
if(H.is_loyalty_implanted(H))
|
||||
text = "Loyalty Implant:<a href='?src=\ref[src];implant=remove'>Remove</a>|<b>Implanted</b></br>"
|
||||
@@ -343,13 +343,6 @@ datum/mind
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (istype(current, /mob/living/carbon/human))
|
||||
text += "<a href='?src=\ref[src];monkey=healthy'>healthy</a>|<a href='?src=\ref[src];monkey=infected'>infected</a>|<b>HUMAN</b>|other"
|
||||
else if (istype(current, /mob/living/carbon/monkey))
|
||||
var/found = 0
|
||||
|
||||
if(found)
|
||||
text += "<a href='?src=\ref[src];monkey=healthy'>healthy</a>|<b>INFECTED</b>|<a href='?src=\ref[src];monkey=human'>human</a>|other"
|
||||
else
|
||||
text += "<b>HEALTHY</b>|<a href='?src=\ref[src];monkey=infected'>infected</a>|<a href='?src=\ref[src];monkey=human'>human</a>|other"
|
||||
|
||||
else
|
||||
text += "healthy|infected|human|<b>OTHER</b>"
|
||||
@@ -1012,36 +1005,6 @@ datum/mind
|
||||
message_admins("[key_name_admin(usr)] has thrall'ed [current].")
|
||||
log_admin("[key_name(usr)] has thrall'ed [current].")
|
||||
|
||||
else if (href_list["monkey"])
|
||||
var/mob/living/L = current
|
||||
if (L.notransform)
|
||||
return
|
||||
switch(href_list["monkey"])
|
||||
if("healthy")
|
||||
if (usr.client.holder.rights & R_ADMIN)
|
||||
var/mob/living/carbon/human/H = current
|
||||
var/mob/living/carbon/monkey/M = current
|
||||
if (istype(H))
|
||||
log_admin("[key_name(usr)] attempting to monkeyize [key_name(current)]")
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to monkeyize [key_name_admin(current)]")
|
||||
src = null
|
||||
M = H.monkeyize()
|
||||
src = M.mind
|
||||
//world << "DEBUG: \"healthy\": M=[M], M.mind=[M.mind], src=[src]!"
|
||||
sleep(0) //because deleting of virus is done through spawn(0)
|
||||
if("human")
|
||||
var/mob/living/carbon/monkey/M = current
|
||||
if (istype(M))
|
||||
log_admin("[key_name(usr)] attempting to humanize [key_name(current)]")
|
||||
message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]")
|
||||
var/obj/item/weapon/dnainjector/m2h/m2h = new
|
||||
var/obj/item/weapon/implant/mobfinder = new(M) //hack because humanizing deletes mind --rastaf0
|
||||
src = null
|
||||
m2h.inject(M)
|
||||
src = mobfinder.loc:mind
|
||||
del(mobfinder)
|
||||
current.radiation -= 50
|
||||
|
||||
else if (href_list["silicon"])
|
||||
current.hud_updateflag |= (1 << SPECIALROLE_HUD)
|
||||
switch(href_list["silicon"])
|
||||
@@ -1396,9 +1359,6 @@ datum/mind
|
||||
mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist)
|
||||
mind.active = 1 //indicates that the mind is currently synced with a client
|
||||
|
||||
//MONKEY
|
||||
/mob/living/carbon/monkey/mind_initialize()
|
||||
..()
|
||||
|
||||
//slime
|
||||
/mob/living/carbon/slime/mind_initialize()
|
||||
|
||||
@@ -84,7 +84,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
|
||||
user << "Not when you're incapacitated."
|
||||
return 0
|
||||
|
||||
if(ishuman(user) || ismonkey(user))
|
||||
if(ishuman(user))
|
||||
if(user.is_muzzled())
|
||||
user << "Mmmf mrrfff!"
|
||||
return 0
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
range = 7
|
||||
cooldown_min = 30 //30 deciseconds reduction per rank
|
||||
selection_type = "range"
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human)
|
||||
|
||||
action_icon_state = "spell_horse"
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
if("gib")
|
||||
target.gib()
|
||||
if("gib_brain")
|
||||
if(ishuman(target) || ismonkey(target))
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/C = target
|
||||
if(C.brain_op_stage != 4) // Their brain is already taken out
|
||||
var/obj/item/organ/brain/B = new(C.loc)
|
||||
|
||||
@@ -799,11 +799,13 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
cost = 30
|
||||
containername = "farwa crate"
|
||||
|
||||
/*
|
||||
/datum/supply_packs/organic/wolpin
|
||||
name = "Wolpin crate"
|
||||
contains = list (/obj/item/weapon/storage/box/wolpincubes)
|
||||
cost = 30
|
||||
containername = "wolpin crate"
|
||||
*/
|
||||
|
||||
/datum/supply_packs/organic/skrell
|
||||
name = "Neaera crate"
|
||||
|
||||
@@ -251,10 +251,6 @@
|
||||
return src.master.attackby(a, b, c)
|
||||
return
|
||||
|
||||
/atom/movable/overlay/attack_paw(a, b, c)
|
||||
if (src.master)
|
||||
return src.master.attack_paw(a, b, c)
|
||||
return
|
||||
|
||||
/atom/movable/overlay/attack_hand(a, b, c)
|
||||
if (src.master)
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
return
|
||||
if(usr.restrained() || usr.stat || usr.weakened || usr.stunned || usr.paralysis || usr.resting) //are you cuffed, dying, lying, stunned or other
|
||||
return
|
||||
if (!ishuman(usr) && !ismonkey(usr)) //Make sure they're a mob that has dna
|
||||
if (!ishuman(usr)) //Make sure they're a mob that has dna
|
||||
usr << "\blue Try as you might, you can not climb up into the scanner."
|
||||
return
|
||||
if (src.occupant)
|
||||
@@ -417,8 +417,6 @@
|
||||
return
|
||||
return
|
||||
*/
|
||||
/obj/machinery/computer/scan_consolenew/attack_paw(user as mob)
|
||||
attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/scan_consolenew/attack_ai(user as mob)
|
||||
src.add_hiddenprint(user)
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
invocation_type = "none"
|
||||
range = 7
|
||||
selection_type = "range"
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human)
|
||||
include_user = 0
|
||||
|
||||
action_icon_state = "genetic_incendiary"
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
selection_type = "range"
|
||||
include_user = 1
|
||||
// centcomm_cancast = 0
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
var/list/compatible_mobs = list(/mob/living/carbon/human)
|
||||
|
||||
action_icon_state = "genetic_cryo"
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
|
||||
action_icon_state = "genetic_eat"
|
||||
|
||||
var/list/types_allowed=list(/obj/item,/mob/living/simple_animal, /mob/living/carbon/monkey, /mob/living/carbon/human)
|
||||
var/list/types_allowed=list(/obj/item,/mob/living/simple_animal, /mob/living/carbon/human)
|
||||
|
||||
/obj/effect/proc_holder/spell/wizard/targeted/eat/choose_targets(mob/user = usr)
|
||||
var/list/targets = new /list()
|
||||
|
||||
+84
-159
@@ -5,166 +5,91 @@
|
||||
block=MONKEYBLOCK
|
||||
|
||||
/datum/dna/gene/monkey/can_activate(var/mob/M,var/flags)
|
||||
return istype(M, /mob/living/carbon/human) || istype(M,/mob/living/carbon/monkey)
|
||||
return istype(M, /mob/living/carbon/human)
|
||||
|
||||
/datum/dna/gene/monkey/activate(var/mob/living/M, var/connected, var/flags)
|
||||
if(!istype(M,/mob/living/carbon/human))
|
||||
/datum/dna/gene/monkey/activate(var/mob/living/carbon/human/H, var/connected, var/flags)
|
||||
if(!istype(H,/mob/living/carbon/human))
|
||||
// testing("Cannot monkey-ify [M], type is [M.type].")
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.notransform = 1
|
||||
var/list/implants = list() //Try to preserve implants.
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
W.loc = null
|
||||
|
||||
if(!connected)
|
||||
for(var/obj/item/W in (H.contents-implants))
|
||||
if (W==H.w_uniform) // will be teared
|
||||
continue
|
||||
H.unEquip(W)
|
||||
M.notransform = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/atom/movable/overlay/animation = new( M.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("h2monkey", animation)
|
||||
sleep(48)
|
||||
qdel(animation)
|
||||
|
||||
|
||||
var/mob/living/carbon/monkey/O = null
|
||||
if(H.species.primitive)
|
||||
O = new H.species.primitive(src)
|
||||
else
|
||||
H.gib() //Trying to change the species of a creature with no primitive var set is messy.
|
||||
return
|
||||
|
||||
if(M)
|
||||
if (M.dna)
|
||||
O.dna = M.dna.Clone()
|
||||
M.dna = null
|
||||
|
||||
if (M.suiciding)
|
||||
O.suiciding = M.suiciding
|
||||
M.suiciding = null
|
||||
|
||||
|
||||
|
||||
|
||||
for(var/obj/T in (M.contents-implants))
|
||||
qdel(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(O) //transfer our mind to the cute little monkey
|
||||
|
||||
if (connected) //inside dna thing
|
||||
var/obj/machinery/dna_scannernew/C = connected
|
||||
O.loc = C
|
||||
C.occupant = O
|
||||
connected = null
|
||||
O.real_name = text("monkey ([])",copytext(md5(M.real_name), 2, 6))
|
||||
O.take_overall_damage(M.getBruteLoss() + 40, M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss() + 20)
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
O.a_intent = "hurt"
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
/datum/dna/gene/monkey/deactivate(var/mob/living/M, var/connected, var/flags)
|
||||
if(!istype(M,/mob/living/carbon/monkey))
|
||||
testing("Cannot humanize [M], type is [M.type].")
|
||||
return
|
||||
var/mob/living/carbon/monkey/Mo = M
|
||||
Mo.notransform = 1
|
||||
var/list/implants = list() //Still preserving implants
|
||||
for(var/obj/item/weapon/implant/W in Mo)
|
||||
implants += W
|
||||
W.loc = null
|
||||
if(!connected)
|
||||
for(var/obj/item/W in (Mo.contents-implants))
|
||||
Mo.unEquip(W)
|
||||
M.notransform = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/atom/movable/overlay/animation = new( M.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
del(animation)
|
||||
|
||||
var/mob/living/carbon/human/O
|
||||
if(Mo.greaterform)
|
||||
var/greatform = lowertext(Mo.greaterform)
|
||||
var/typepath = "/mob/living/carbon/human/"
|
||||
typepath += greatform
|
||||
O = new typepath(src, greatform)
|
||||
else
|
||||
O = new(src)
|
||||
|
||||
if (M.dna.GetUIState(DNA_UI_GENDER))
|
||||
O.gender = FEMALE
|
||||
else
|
||||
O.gender = MALE
|
||||
|
||||
if (M)
|
||||
if (M.dna)
|
||||
O.dna = M.dna.Clone()
|
||||
M.dna = null
|
||||
|
||||
if (M.suiciding)
|
||||
O.suiciding = M.suiciding
|
||||
M.suiciding = null
|
||||
|
||||
|
||||
//for(var/obj/T in M)
|
||||
// del(T)
|
||||
|
||||
O.loc = M.loc
|
||||
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(O) //transfer our mind to the human
|
||||
|
||||
if (connected) //inside dna thing
|
||||
var/obj/machinery/dna_scannernew/C = connected
|
||||
O.loc = C
|
||||
C.occupant = O
|
||||
connected = null
|
||||
|
||||
var/i
|
||||
while (!i)
|
||||
var/randomname
|
||||
if (O.gender == MALE)
|
||||
randomname = capitalize(pick(first_names_male) + " " + capitalize(pick(last_names)))
|
||||
else
|
||||
randomname = capitalize(pick(first_names_female) + " " + capitalize(pick(last_names)))
|
||||
if (findname(randomname))
|
||||
for(var/obj/item/W in H)
|
||||
if (W==H.w_uniform) // will be torn
|
||||
continue
|
||||
else
|
||||
O.real_name = randomname
|
||||
O.dna.real_name = randomname
|
||||
i++
|
||||
O.UpdateAppearance()
|
||||
O.take_overall_damage(M.getBruteLoss(), M.getFireLoss())
|
||||
O.adjustToxLoss(M.getToxLoss())
|
||||
O.adjustOxyLoss(M.getOxyLoss())
|
||||
O.stat = M.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
// O.update_icon = 1 //queue a full icon update at next life() call
|
||||
del(M)
|
||||
return
|
||||
H.unEquip(W)
|
||||
H.regenerate_icons()
|
||||
H.canmove = 0
|
||||
H.stunned = 1
|
||||
H.icon = null
|
||||
H.invisibility = 101
|
||||
for(var/t in H.organs)
|
||||
del(t)
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( H.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = H
|
||||
flick("h2monkey", animation)
|
||||
sleep(48)
|
||||
//animation = null
|
||||
|
||||
H.stunned = 0
|
||||
H.update_canmove()
|
||||
H.invisibility = initial(H.invisibility)
|
||||
|
||||
if(!H.species.primitive_form) //If the creature in question has no primitive set, this is going to be messy.
|
||||
H.gib()
|
||||
return
|
||||
|
||||
for(var/obj/item/W in H)
|
||||
H.unEquip(W)
|
||||
H.set_species(H.species.primitive_form)
|
||||
|
||||
if(H.hud_used)
|
||||
H.hud_used.monkey_hud()
|
||||
|
||||
H << "<B>You are now [H.species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return H
|
||||
|
||||
/datum/dna/gene/monkey/deactivate(var/mob/living/carbon/human/H, var/connected, var/flags)
|
||||
if(!istype(H,/mob/living/carbon/human))
|
||||
// testing("Cannot monkey-ify [M], type is [M.type].")
|
||||
return
|
||||
for(var/obj/item/W in H)
|
||||
if (W==H.w_uniform) // will be torn
|
||||
continue
|
||||
H.unEquip(W)
|
||||
H.regenerate_icons()
|
||||
H.canmove = 0
|
||||
H.stunned = 1
|
||||
H.icon = null
|
||||
H.invisibility = 101
|
||||
for(var/t in H.organs)
|
||||
del(t)
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( H.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = H
|
||||
flick("monkey2h", animation)
|
||||
sleep(48)
|
||||
//animation = null
|
||||
|
||||
H.stunned = 0
|
||||
H.update_canmove()
|
||||
H.invisibility = initial(H.invisibility)
|
||||
|
||||
if(!H.species.greater_form) //If the creature in question has no primitive set, this is going to be messy.
|
||||
H.gib()
|
||||
return
|
||||
|
||||
if(H.hud_used)
|
||||
H.hud_used.human_hud()
|
||||
|
||||
|
||||
for(var/obj/item/W in H)
|
||||
H.unEquip(W)
|
||||
H.set_species(H.species.greater_form)
|
||||
|
||||
H << "<B>You are now [H.species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return H
|
||||
@@ -47,7 +47,7 @@
|
||||
|
||||
//Fairly important to remember to return 1 on success >.<
|
||||
/obj/effect/proc_holder/changeling/proc/can_sting(var/mob/user, var/mob/target)
|
||||
if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards
|
||||
if(!ishuman(user)) //typecast everything from mob to carbon from this point onwards
|
||||
return 0
|
||||
if(req_human && !ishuman(user))
|
||||
user << "<span class='warning'>We cannot do that in this form!</span>"
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
//used in /mob/Stat()
|
||||
/obj/effect/proc_holder/changeling/proc/can_be_used_by(var/mob/user)
|
||||
if(!ishuman(user) && !ismonkey(user))
|
||||
if(!ishuman(user))
|
||||
return 0
|
||||
if(req_human && !ishuman(user))
|
||||
return 0
|
||||
|
||||
@@ -352,7 +352,7 @@ var/list/sting_paths
|
||||
/mob/proc/make_changeling()
|
||||
if(!mind)
|
||||
return
|
||||
if(!ishuman(src) && !ismonkey(src))
|
||||
if(!ishuman(src))
|
||||
return
|
||||
if(!mind.changeling)
|
||||
mind.changeling = new /datum/changeling(gender)
|
||||
@@ -360,7 +360,7 @@ var/list/sting_paths
|
||||
sting_paths = init_subtypes(/obj/effect/proc_holder/changeling)
|
||||
if(mind.changeling.purchasedpowers)
|
||||
remove_changeling_powers(1)
|
||||
|
||||
|
||||
add_language("Changeling")
|
||||
|
||||
for(var/language in languages)
|
||||
@@ -377,7 +377,7 @@ var/list/sting_paths
|
||||
var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste
|
||||
mind.changeling.absorbed_dna |= C.dna
|
||||
return 1
|
||||
|
||||
|
||||
//Used to dump the languages from the changeling datum into the actual mob.
|
||||
/mob/proc/changeling_update_languages(var/updated_languages)
|
||||
|
||||
@@ -400,7 +400,7 @@ var/list/sting_paths
|
||||
mimicing = ""
|
||||
|
||||
/mob/proc/remove_changeling_powers(var/keep_free_powers=0)
|
||||
if(ishuman(src) || ismonkey(src))
|
||||
if(ishuman(src))
|
||||
if(mind && mind.changeling)
|
||||
digitalcamo = 0
|
||||
mind.changeling.changeling_speak = 0
|
||||
|
||||
@@ -16,52 +16,18 @@
|
||||
return
|
||||
user << "<span class='warning'>Our genes cry out!</span>"
|
||||
|
||||
var/mob/living/carbon/C = user
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
//TODO replace with monkeyize proc
|
||||
if(!istype(H) || !H.species.primitive_form)
|
||||
src << "<span class='warning'>We cannot perform this ability in this form!</span>"
|
||||
return
|
||||
|
||||
H.visible_message("<span class='warning'>[H] transforms!</span>")
|
||||
changeling.geneticdamage = 30
|
||||
H << "<span class='warning'>Our genes cry out!</span>"
|
||||
var/list/implants = list() //Try to preserve implants.
|
||||
for(var/obj/item/weapon/implant/W in C)
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
|
||||
C.notransform = 1
|
||||
C.canmove = 0
|
||||
C.icon = null
|
||||
C.overlays.Cut()
|
||||
C.invisibility = 101
|
||||
|
||||
var/atom/movable/overlay/animation = new /atom/movable/overlay( C.loc )
|
||||
animation.icon_state = "blank"
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
flick("h2monkey", animation)
|
||||
sleep(30)
|
||||
del(animation)
|
||||
|
||||
var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey(src)
|
||||
O.dna = C.dna.Clone()
|
||||
C.dna = null
|
||||
|
||||
for(var/obj/item/W in C)
|
||||
C.unEquip(W)
|
||||
for(var/obj/T in C)
|
||||
del(T)
|
||||
|
||||
O.loc = C.loc
|
||||
O.name = "monkey ([copytext(md5(C.real_name), 2, 6)])"
|
||||
O.setToxLoss(C.getToxLoss())
|
||||
O.adjustBruteLoss(C.getBruteLoss())
|
||||
O.setOxyLoss(C.getOxyLoss())
|
||||
O.adjustFireLoss(C.getFireLoss())
|
||||
O.stat = C.stat
|
||||
O.a_intent = "harm"
|
||||
for(var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
|
||||
C.mind.transfer_to(O)
|
||||
O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
O.changeling_update_languages(changeling.absorbed_languages)
|
||||
|
||||
H.monkeyize()
|
||||
feedback_add_details("changeling_powers","LF")
|
||||
qdel(C)
|
||||
return 1
|
||||
@@ -82,7 +82,7 @@
|
||||
/obj/effect/proc_holder/changeling/sting/transformation/can_sting(var/mob/user, var/mob/target)
|
||||
if(!..())
|
||||
return
|
||||
if((HUSK in target.mutations) || (!ishuman(target) && !ismonkey(target)))
|
||||
if((HUSK in target.mutations) || (!ishuman(target)) )
|
||||
user << "<span class='warning'>Our sting appears ineffective against its DNA.</span>"
|
||||
return 0
|
||||
if(ishuman(target))
|
||||
@@ -95,7 +95,7 @@
|
||||
/obj/effect/proc_holder/changeling/sting/transformation/sting_action(var/mob/user, var/mob/target)
|
||||
add_logs(target, user, "stung", object="transformation sting", addition=" new identity is [selected_dna.real_name]")
|
||||
var/datum/dna/NewDNA = selected_dna
|
||||
if(ismonkey(target))
|
||||
if(issmall(target))
|
||||
user << "<span class='notice'>We stealthily sting [target.name].</span>"
|
||||
target.dna = NewDNA.Clone()
|
||||
target.real_name = NewDNA.real_name
|
||||
|
||||
@@ -679,42 +679,6 @@ var/list/sacrificed = list()
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
for(var/mob/living/carbon/monkey/M in src.loc)
|
||||
if (ticker.mode.name == "cult")
|
||||
if(M.mind == ticker.mode:sacrifice_target)
|
||||
if(cultsinrange.len >= 3)
|
||||
sacrificed += M.mind
|
||||
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
|
||||
else
|
||||
usr << "\red Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual."
|
||||
continue
|
||||
else
|
||||
if(prob(20))
|
||||
usr << "\red The Geometer of Blood accepts your meager sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, a mere monkey is not enough to satisfy Him."
|
||||
else
|
||||
usr << "\red The Geometer of Blood accepts your meager sacrifice."
|
||||
if(prob(20))
|
||||
ticker.mode.grant_runeword(usr)
|
||||
M.gib()
|
||||
/* for(var/mob/living/carbon/alien/A)
|
||||
for(var/mob/K in cultsinrange)
|
||||
K.say("Barhah hra zar'garis!")
|
||||
A.dust() /// A.gib() doesnt work for some reason, and dust() leaves that skull and bones thingy which we dont really need.
|
||||
if (ticker.mode.name == "cult")
|
||||
if(prob(75))
|
||||
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
|
||||
usr << "\red However, this alien is not enough to gain His favor."
|
||||
else
|
||||
usr << "\red The Geometer of Blood accepts your exotic sacrifice."
|
||||
return
|
||||
return fizzle() */
|
||||
|
||||
/////////////////////////////////////////SIXTEENTH RUNE
|
||||
|
||||
|
||||
@@ -1,167 +1,3 @@
|
||||
//this file left in for legacy support
|
||||
/*
|
||||
/proc/start_events()
|
||||
//changed to a while(1) loop since they are more efficient.
|
||||
//Moved the spawn in here to allow it to be called with advance proc call if it crashes.
|
||||
//and also to stop spawn copying variables from the game ticker
|
||||
spawn(3000)
|
||||
while(1)
|
||||
if(prob(50))//Every 120 seconds and prob 50 2-4 weak spacedusts will hit the station
|
||||
spawn(1)
|
||||
dust_swarm("weak")
|
||||
if(!event)
|
||||
//CARN: checks to see if random events are enabled.
|
||||
if(config.allow_random_events)
|
||||
if(prob(eventchance))
|
||||
event()
|
||||
hadevent = 1
|
||||
else
|
||||
Holiday_Random_Event()
|
||||
else
|
||||
event = 0
|
||||
sleep(1200)
|
||||
|
||||
/proc/event()
|
||||
event = 1
|
||||
|
||||
var/eventNumbersToPickFrom = list(1,2,4,5,6,7,8,9,10,11,12,13,14, 15) //so ninjas don't cause "empty" events.
|
||||
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
eventNumbersToPickFrom += 3
|
||||
switch(pick(eventNumbersToPickFrom))
|
||||
if(1)
|
||||
command_announcement.Announce("Meteors have been detected on collision course with the station.", "Meteor Alert", new_sound = 'sound/AI/meteors.ogg')
|
||||
spawn(100)
|
||||
meteor_wave()
|
||||
spawn_meteors()
|
||||
spawn(700)
|
||||
meteor_wave()
|
||||
spawn_meteors()
|
||||
|
||||
if(2)
|
||||
command_announcement.Announce("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert", new_sound = 'sound/AI/granomalies.ogg')
|
||||
var/turf/T = pick(blobstart)
|
||||
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
|
||||
spawn(rand(50, 300))
|
||||
del(bh)
|
||||
/*
|
||||
if(3) //Leaving the code in so someone can try and delag it, but this event can no longer occur randomly, per SoS's request. --NEO
|
||||
command_announcement.Announce("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert", new_sound = 'sound/AI/spanomalies.ogg')
|
||||
var/list/turfs = new
|
||||
var/turf/picked
|
||||
for(var/turf/simulated/floor/T in world)
|
||||
if((T.z in config.station_levels))
|
||||
turfs += T
|
||||
for(var/turf/simulated/floor/T in turfs)
|
||||
if(prob(20))
|
||||
spawn(50+rand(0,3000))
|
||||
picked = pick(turfs)
|
||||
var/obj/effect/portal/P = new /obj/effect/portal( T )
|
||||
P.target = picked
|
||||
P.creator = null
|
||||
P.icon = 'icons/obj/objects.dmi'
|
||||
P.failchance = 0
|
||||
P.icon_state = "anom"
|
||||
P.name = "wormhole"
|
||||
spawn(rand(300,600))
|
||||
del(P)
|
||||
*/
|
||||
if(3)
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
|
||||
if(4)
|
||||
mini_blob_event()
|
||||
|
||||
if(5)
|
||||
high_radiation_event()
|
||||
if(6)
|
||||
viral_outbreak()
|
||||
if(7)
|
||||
alien_infestation()
|
||||
if(8)
|
||||
prison_break()
|
||||
if(9)
|
||||
carp_migration()
|
||||
if(10)
|
||||
immovablerod()
|
||||
if(11)
|
||||
lightsout(1,2)
|
||||
if(12)
|
||||
appendicitis()
|
||||
if(13)
|
||||
IonStorm()
|
||||
if(14)
|
||||
spacevine_infestation()
|
||||
if(15)
|
||||
communications_blackout()
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/proc/viral_outbreak(var/virus = null)
|
||||
// command_announcement.Announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg')
|
||||
var/virus_type
|
||||
if(!virus)
|
||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/advance/flu,/datum/disease/advance/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
||||
else
|
||||
switch(virus)
|
||||
if("fake gbs")
|
||||
virus_type = /datum/disease/fake_gbs
|
||||
if("gbs")
|
||||
virus_type = /datum/disease/gbs
|
||||
if("magnitis")
|
||||
virus_type = /datum/disease/magnitis
|
||||
if("rhumba beat")
|
||||
virus_type = /datum/disease/rhumba_beat
|
||||
if("brain rot")
|
||||
virus_type = /datum/disease/brainrot
|
||||
if("cold")
|
||||
virus_type = /datum/disease/advance/cold
|
||||
if("retrovirus")
|
||||
virus_type = /datum/disease/dnaspread
|
||||
if("flu")
|
||||
virus_type = /datum/disease/advance/flu
|
||||
// if("t-virus")
|
||||
// virus_type = /datum/disease/t_virus
|
||||
if("pierrot's throat")
|
||||
virus_type = /datum/disease/pierrot_throat
|
||||
for(var/mob/living/carbon/human/H in shuffle(living_mob_list))
|
||||
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
var/turf/T = get_turf(H)
|
||||
if(!T)
|
||||
continue
|
||||
if(!(T.z in config.station_levels))
|
||||
continue
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
continue
|
||||
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if((!H.dna) || (H.sdisabilities & BLIND)) //A blindness disease would be the worst.
|
||||
continue
|
||||
var/datum/disease/dnaspread/D = new
|
||||
D.strain_data["name"] = H.real_name
|
||||
D.strain_data["UI"] = H.dna.uni_identity
|
||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
else
|
||||
var/datum/disease/D = new virus_type
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_announcement.Announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak7.ogg')
|
||||
*/
|
||||
|
||||
/proc/alien_infestation(var/spawncount = 1) // -- TLE
|
||||
//command_announcement.Announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
|
||||
var/list/vents = list()
|
||||
@@ -218,13 +54,6 @@
|
||||
else
|
||||
randmutg(H)
|
||||
domutcheck(H,null,MUTCHK_FORCED)
|
||||
for(var/mob/living/carbon/monkey/M in living_mob_list)
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T)
|
||||
continue
|
||||
if(!(T.z in config.station_levels))
|
||||
continue
|
||||
M.apply_effect((rand(15,75)),IRRADIATE,0)
|
||||
sleep(100)
|
||||
command_announcement.Announce("High levels of radiation detected near the station. Please report to the Med-bay if you feel strange.", "Anomaly Alert", new_sound = 'sound/AI/radiation.ogg')
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
mode.update_icon(H.mind)
|
||||
return 1
|
||||
|
||||
/hook/harvest_podman/proc/update_icon(mob/living/carbon/monkey/diona/D)
|
||||
/hook/harvest_podman/proc/update_icon(mob/living/carbon/primitive/diona/D)
|
||||
var/datum/game_mode/mutiny/mode = get_mutiny_mode()
|
||||
if (!mode) return 1
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
/obj/item/flag/nation/attackby(var/obj/item/weapon/W, var/mob/user, params)
|
||||
return
|
||||
|
||||
/obj/item/flag/nation/attack_paw()
|
||||
return
|
||||
|
||||
/obj/item/flag/nation/ex_act()
|
||||
return
|
||||
|
||||
@@ -80,7 +80,7 @@ var/bomb_set
|
||||
|
||||
if (istype(O, /obj/item/device/multitool) || istype(O, /obj/item/weapon/wirecutters))
|
||||
ui_interact(user)
|
||||
|
||||
|
||||
if (src.extended)
|
||||
if (istype(O, /obj/item/weapon/disk/nuclear))
|
||||
usr.drop_item()
|
||||
@@ -159,8 +159,6 @@ var/bomb_set
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/nuclearbomb/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
|
||||
if (src.extended)
|
||||
@@ -182,9 +180,9 @@ var/bomb_set
|
||||
|
||||
obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
ui_interact(user)
|
||||
|
||||
|
||||
/obj/machinery/nuclearbomb/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
var/data[0]
|
||||
var/data[0]
|
||||
var/uiwidth
|
||||
var/uiheight
|
||||
var/uititle
|
||||
@@ -197,12 +195,12 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
else
|
||||
data["authstatus"] = "Auth. S2"
|
||||
else
|
||||
if (src.timing)
|
||||
if (src.timing)
|
||||
data["authstatus"] = "Set"
|
||||
else
|
||||
data["authstatus"] = "Auth. S1"
|
||||
data["safe"] = src.safety ? "Safe" : "Engaged"
|
||||
data["time"] = src.timeleft
|
||||
data["safe"] = src.safety ? "Safe" : "Engaged"
|
||||
data["time"] = src.timeleft
|
||||
data["timer"] = src.timing
|
||||
data["safety"] = src.safety
|
||||
data["anchored"] = src.anchored
|
||||
@@ -217,7 +215,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
uititle = "Nuke Control Panel"
|
||||
else
|
||||
data["hacking"] = 1
|
||||
var/list/tempwires[0]
|
||||
var/list/tempwires[0]
|
||||
for(var/wire in src.wires)
|
||||
tempwires.Add(list(list("name" = wire, "cut" = src.wires[wire])))
|
||||
data["wires"] = tempwires
|
||||
@@ -227,17 +225,17 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
uiwidth = 420
|
||||
uiheight = 440
|
||||
uititle = "Nuclear Bomb Defusion"
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if (!ui)
|
||||
ui = new(user, src, ui_key, "nuclear_bomb.tmpl", uititle, uiwidth, uiheight)
|
||||
ui.set_initial_data(data)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/nuclearbomb/verb/make_deployable()
|
||||
set category = "Object"
|
||||
set name = "Make Deployable"
|
||||
set src in oview(1)
|
||||
|
||||
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
return
|
||||
|
||||
@@ -340,8 +338,8 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
if (src.timing == -1.0)
|
||||
return
|
||||
if (src.safety)
|
||||
usr << "\red The safety is still on."
|
||||
nanomanager.update_uis(src)
|
||||
usr << "\red The safety is still on."
|
||||
nanomanager.update_uis(src)
|
||||
return
|
||||
src.timing = !( src.timing )
|
||||
if (src.timing)
|
||||
@@ -429,7 +427,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
|
||||
if(ticker.mode.name == "nuclear emergency")
|
||||
ticker.mode:nukes_left --
|
||||
else if(off_station == 1)
|
||||
world << "<b>A nuclear device was set off, but the explosion was out of reach of the station!</b>"
|
||||
world << "<b>A nuclear device was set off, but the explosion was out of reach of the station!</b>"
|
||||
else if(off_station == 2)
|
||||
world << "<b>A nuclear device was set off, but the device was not on the station!</b>"
|
||||
else
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
//if they are holding or wearing a card that has access, that works
|
||||
if(src.check_access(H.get_active_hand()) || src.check_access(H.wear_id))
|
||||
return 1
|
||||
else if(istype(M, /mob/living/carbon/monkey) || istype(M, /mob/living/carbon/alien/humanoid))
|
||||
else if(istype(M, /mob/living/carbon/alien/humanoid))
|
||||
var/mob/living/carbon/george = M
|
||||
//they can only hold things :(
|
||||
if(src.check_access(george.get_active_hand()))
|
||||
@@ -211,14 +211,14 @@
|
||||
if("Special Operations Officer")
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
if("Nanotrasen Navy Representative")
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
if("Nanotrasen Navy Officer")
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
if("Nanotrasen Navy Captain")
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
if("Supreme Commander")
|
||||
return get_all_centcom_access() + get_all_accesses()
|
||||
|
||||
|
||||
/proc/get_syndicate_access(job)
|
||||
switch(job)
|
||||
if("Syndicate Operative")
|
||||
@@ -226,12 +226,12 @@
|
||||
if("Syndicate Operative Leader")
|
||||
return list(access_syndicate, access_syndicate_leader)
|
||||
if("Vox Raider")
|
||||
return list(access_vox)
|
||||
return list(access_vox)
|
||||
if("Vox Trader")
|
||||
return list(access_vox)
|
||||
return list(access_vox)
|
||||
if("Syndicate Commando")
|
||||
return list(access_syndicate, access_syndicate_leader)
|
||||
|
||||
return list(access_syndicate, access_syndicate_leader)
|
||||
|
||||
/proc/get_all_accesses()
|
||||
return list(access_security, access_sec_doors, access_brig, access_armory, access_forensics_lockers, access_court,
|
||||
access_medical, access_genetics, access_morgue, access_rd,
|
||||
@@ -470,7 +470,7 @@
|
||||
return "Bridge"
|
||||
if(access_cent_commander)
|
||||
return "Commander"
|
||||
|
||||
|
||||
/proc/get_syndicate_access_desc(A)
|
||||
switch(A)
|
||||
if(access_syndicate)
|
||||
@@ -534,7 +534,7 @@
|
||||
return assignment
|
||||
|
||||
return "Unknown"
|
||||
|
||||
|
||||
proc/GetIdCard(var/mob/living/carbon/human/H)
|
||||
if(H.wear_id)
|
||||
var/id = H.wear_id.GetID()
|
||||
|
||||
@@ -82,9 +82,6 @@
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_ai(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_paw(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/freezer/attack_hand(mob/user as mob)
|
||||
if(panel_open)
|
||||
user << "<span class='notice'>Close the maintenance panel first.</span>"
|
||||
@@ -239,9 +236,6 @@
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_ai(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_paw(mob/user as mob)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob)
|
||||
if(panel_open)
|
||||
user << "<span class='notice'>Close the maintenance panel first.</span>"
|
||||
|
||||
@@ -42,19 +42,6 @@
|
||||
if(prob(75))
|
||||
del(src)
|
||||
|
||||
/obj/machinery/optable/attack_paw(mob/user as mob)
|
||||
if ((HULK in usr.mutations))
|
||||
usr << text("\blue You destroy the operating table.")
|
||||
visible_message("\red [usr] destroys the operating table!")
|
||||
src.density = 0
|
||||
del(src)
|
||||
if (!( locate(/obj/machinery/optable, user.loc) ))
|
||||
step(user, get_dir(user, src))
|
||||
if (user.loc == src.loc)
|
||||
user.layer = TURF_LAYER
|
||||
visible_message("The monkey hides under the table!")
|
||||
return
|
||||
|
||||
/obj/machinery/optable/attack_hand(mob/user as mob)
|
||||
if (HULK in usr.mutations)
|
||||
usr << text("\blue You destroy the table.")
|
||||
@@ -75,13 +62,13 @@
|
||||
/obj/machinery/optable/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
|
||||
if(usr.stat || (!ishuman(user) && !isrobot(user)) || user.restrained() || !check_table(user) || user.weakened || user.stunned)
|
||||
return
|
||||
|
||||
|
||||
if(!ismob(O)) //humans only
|
||||
return
|
||||
|
||||
|
||||
if(istype(O, /mob/living/simple_animal) || istype(O, /mob/living/silicon)) //animals and robots dont fit
|
||||
return
|
||||
|
||||
|
||||
var/mob/living/L = O
|
||||
take_victim(L,usr)
|
||||
return
|
||||
|
||||
@@ -101,9 +101,6 @@
|
||||
/obj/machinery/sleep_console/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/sleep_console/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/sleep_console/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
@@ -577,7 +574,7 @@
|
||||
set name = "Enter Sleeper"
|
||||
set category = null
|
||||
set src in oview(1)
|
||||
if(usr.stat != 0 || !(ishuman(usr) || ismonkey(usr)))
|
||||
if(usr.stat != 0 || !(ishuman(usr)))
|
||||
return
|
||||
if(src.occupant)
|
||||
usr << "\blue <B>The sleeper is already occupied!</B>"
|
||||
|
||||
@@ -340,8 +340,6 @@
|
||||
|
||||
default_deconstruction_crowbar(G)
|
||||
|
||||
/obj/machinery/body_scanconsole/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/body_scanconsole/attack_ai(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
@@ -1109,8 +1109,6 @@ FIRE ALARM
|
||||
/obj/machinery/firealarm/bullet_act(BLAH)
|
||||
return src.alarm()
|
||||
|
||||
/obj/machinery/firealarm/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/firealarm/emp_act(severity)
|
||||
if(prob(50/severity)) alarm()
|
||||
@@ -1368,9 +1366,6 @@ Just a object used in constructing fire alarms
|
||||
return
|
||||
master_area=A
|
||||
|
||||
/obj/machinery/partyalarm/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/partyalarm/attack_hand(mob/user as mob)
|
||||
if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
src.add_hiddenprint(user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return
|
||||
|
||||
attack_hand(var/mob/user as mob)
|
||||
if(..(user))
|
||||
|
||||
@@ -376,9 +376,6 @@ update_flag
|
||||
src.add_hiddenprint(user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/canister/attack_alien(mob/living/carbon/alien/humanoid/user)
|
||||
return
|
||||
|
||||
|
||||
@@ -96,9 +96,6 @@
|
||||
src.add_hiddenprint(user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/pump/attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/pump/attack_hand(var/mob/user as mob)
|
||||
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -150,9 +150,6 @@
|
||||
src.add_hiddenprint(user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/portable_atmospherics/scrubber/attack_hand(var/mob/user as mob)
|
||||
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -168,9 +168,6 @@
|
||||
busy = 0
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/autolathe/attack_paw(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/autolathe/attack_hand(mob/user)
|
||||
if(..(user, 0))
|
||||
return
|
||||
@@ -292,14 +289,14 @@
|
||||
|
||||
/obj/machinery/autolathe/proc/can_build(var/datum/design/D,var/multiplier=1,var/custom_metal,var/custom_glass)
|
||||
var/coeff = get_coeff(D)
|
||||
|
||||
|
||||
var/metal_amount = m_amount
|
||||
if(custom_metal)
|
||||
metal_amount = custom_metal
|
||||
var/glass_amount = g_amount
|
||||
if(custom_glass)
|
||||
glass_amount = custom_glass
|
||||
|
||||
|
||||
if(D.materials["$metal"] && (metal_amount < (multiplier*D.materials["$metal"] / coeff)))
|
||||
return 0
|
||||
if(D.materials["$glass"] && (glass_amount < (multiplier*D.materials["$glass"] / coeff)))
|
||||
|
||||
@@ -129,9 +129,6 @@
|
||||
text_dehack = "You reset [name]'s reagent processor circuits."
|
||||
text_dehack_fail = "[name] seems damaged and does not respond to reprogramming!"
|
||||
|
||||
/obj/machinery/bot/medbot/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/bot/medbot/attack_hand(mob/user as mob)
|
||||
. = ..()
|
||||
if (.)
|
||||
|
||||
@@ -113,17 +113,6 @@
|
||||
return
|
||||
user.electrocute_act(10, src)
|
||||
|
||||
/obj/machinery/camera/attack_paw(mob/living/carbon/alien/humanoid/user as mob)
|
||||
if(!istype(user))
|
||||
return
|
||||
user.do_attack_animation(src)
|
||||
status = 0
|
||||
visible_message("<span class='warning'>\The [user] slashes at [src]!</span>")
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
add_hiddenprint(user)
|
||||
deactivate(user,0)
|
||||
|
||||
/obj/machinery/camera/attackby(W as obj, mob/living/user as mob, params)
|
||||
var/msg = "<span class='notice'>You attach [W] into the assembly inner circuits.</span>"
|
||||
var/msg2 = "<span class='notice'>The camera already has that upgrade!</span>"
|
||||
|
||||
@@ -165,8 +165,7 @@
|
||||
|
||||
/obj/machinery/clonepod/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
/obj/machinery/clonepod/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/clonepod/attack_hand(mob/user as mob)
|
||||
if ((isnull(src.occupant)) || (stat & NOPOWER))
|
||||
return
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return
|
||||
|
||||
attack_hand(var/mob/user as mob)
|
||||
|
||||
@@ -389,9 +387,6 @@
|
||||
throwpass = 1 //You can throw objects over this, despite it's density.
|
||||
|
||||
|
||||
/obj/structure/table/holotable/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/structure/table/holotable/attack_alien(mob/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -572,10 +567,6 @@
|
||||
user << "The station AI is not to interact with these devices"
|
||||
return
|
||||
|
||||
/obj/machinery/readybutton/attack_paw(mob/user as mob)
|
||||
user << "You are too primitive to use this device"
|
||||
return
|
||||
|
||||
/obj/machinery/readybutton/New()
|
||||
..()
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@
|
||||
/obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/aifixer/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -19,9 +19,6 @@
|
||||
src.add_hiddenprint(user)
|
||||
return interact(user)
|
||||
|
||||
/obj/machinery/computer/atmoscontrol/attack_paw(var/mob/user as mob)
|
||||
return interact(user)
|
||||
|
||||
/obj/machinery/computer/atmoscontrol/attack_hand(mob/user)
|
||||
if(..())
|
||||
return
|
||||
@@ -64,7 +61,7 @@
|
||||
alarm_list+=alarm
|
||||
for(var/obj/machinery/alarm/alarm in sortAtom(alarm_list))
|
||||
if(!is_in_filter(alarm.alarm_area.type))
|
||||
continue
|
||||
continue
|
||||
if(!alarm.remote_control)
|
||||
continue
|
||||
if(alarm.hidden)
|
||||
|
||||
@@ -46,8 +46,6 @@ var/camera_cache_id = 1
|
||||
attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
check_eye(var/mob/user as mob)
|
||||
if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( current ) || !( current.status )) && (!istype(user, /mob/living/silicon)))
|
||||
|
||||
@@ -74,8 +74,6 @@
|
||||
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/card/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/card/attack_hand(mob/user as mob)
|
||||
if(..()) return
|
||||
|
||||
@@ -86,8 +86,6 @@
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/cloning/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/cloning/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -256,9 +256,6 @@ var/shuttle_call/shuttle_calls[0]
|
||||
/obj/machinery/computer/communications/attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/communications/attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
|
||||
if(..(user))
|
||||
|
||||
@@ -141,20 +141,6 @@
|
||||
src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/attack_paw(mob/living/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
if(circuit)
|
||||
if(prob(10))
|
||||
user.visible_message("<span class='danger'>[user.name] smashes the [src.name] with its paws.</span>",\
|
||||
"<span class='danger'>You smash the [src.name] with your paws.</span>",\
|
||||
"<span class='danger'>You hear a smashing sound.</span>")
|
||||
set_broken()
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user.name] smashes against the [src.name] with its paws.</span>",\
|
||||
"<span class='danger'>You smash against the [src.name] with your paws.</span>",\
|
||||
"<span class='danger'>You hear a clicking sound.</span>")
|
||||
|
||||
/obj/machinery/computer/attack_alien(mob/living/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
|
||||
@@ -21,8 +21,6 @@
|
||||
/obj/machinery/computer/med_data/attack_ai(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/med_data/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/med_data/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -120,10 +120,6 @@
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/computer/pod/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/computer/pod/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -9,9 +9,6 @@
|
||||
/obj/machinery/computer/podtracker/attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/podtracker/attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/podtracker/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -21,8 +21,6 @@
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return
|
||||
|
||||
|
||||
attack_hand(var/mob/user as mob)
|
||||
|
||||
@@ -31,9 +31,6 @@ var/prison_shuttle_timeleft = 0
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
attackby(I as obj, user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
|
||||
@@ -43,9 +43,6 @@
|
||||
src.add_hiddenprint(user)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/salvage_ship/attack_hand(mob/user as mob)
|
||||
if(!allowed(user))
|
||||
user << "\red Access Denied"
|
||||
|
||||
@@ -36,9 +36,6 @@
|
||||
/obj/machinery/computer/secure_data/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/secure_data/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||
/obj/machinery/computer/secure_data/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -34,9 +34,6 @@
|
||||
/obj/machinery/computer/skills/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/skills/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
//Someone needs to break down the dat += into chunks instead of long ass lines.
|
||||
/obj/machinery/computer/skills/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -250,9 +250,6 @@ var/specops_shuttle_timeleft = 0
|
||||
user << "\red Access Denied."
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob, params)
|
||||
if(istype(I,/obj/item/weapon/card/emag))
|
||||
user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
/obj/machinery/computer/merch/New()
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/merch/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/merch/attack_ai(mob/user as mob)
|
||||
src.add_hiddenprint(user)
|
||||
|
||||
@@ -184,9 +184,6 @@ var/syndicate_elite_shuttle_timeleft = 0
|
||||
user << "\red Access Denied."
|
||||
return 1
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob, params)
|
||||
if(istype(I,/obj/item/weapon/card/emag))
|
||||
user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."
|
||||
|
||||
@@ -24,11 +24,11 @@
|
||||
|
||||
moving = 1
|
||||
lastMove = world.time
|
||||
|
||||
|
||||
for(var/obj/machinery/door/airlock/alien/A in world)
|
||||
A.close()
|
||||
A.locked = 1
|
||||
A.update_icon()
|
||||
A.update_icon()
|
||||
|
||||
for(var/mob/M in curr_location)
|
||||
if(M.client)
|
||||
@@ -41,20 +41,20 @@
|
||||
shake_camera(M, 10, 1)
|
||||
if(istype(M, /mob/living/carbon) && !isalien(M))
|
||||
if(!M.buckled)
|
||||
M.Weaken(3)
|
||||
|
||||
M.Weaken(3)
|
||||
|
||||
if(curr_location.z != dest_location.z)
|
||||
var/area/transit_location = locate(/area/xenos_station/transit)
|
||||
curr_location.move_contents_to(transit_location)
|
||||
curr_location = transit_location
|
||||
sleep(XENOS_SHUTTLE_MOVE_TIME)
|
||||
|
||||
|
||||
for(var/obj/machinery/door/airlock/alien/A in world)
|
||||
A.close()
|
||||
if(dest_location != locate(/area/xenos_station/start))
|
||||
if(dest_location != locate(/area/xenos_station/start))
|
||||
A.locked = 0
|
||||
A.update_icon()
|
||||
|
||||
A.update_icon()
|
||||
|
||||
var/list/dstturfs = list()
|
||||
var/throwy = world.maxy
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
for(var/mob/living/simple_animal/pest in dest_location) // And for the other kind of bug...
|
||||
pest.gib()
|
||||
|
||||
|
||||
curr_location.move_contents_to(dest_location)
|
||||
curr_location = dest_location
|
||||
moving = 0
|
||||
@@ -91,9 +91,6 @@
|
||||
/obj/machinery/computer/xenos_station/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/xenos_station/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/xenos_station/attack_alien(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
@@ -101,7 +98,7 @@
|
||||
if(!allowed(user))
|
||||
user << "\red Access denied."
|
||||
return
|
||||
|
||||
|
||||
if(!isalien(user) && !isrobot(user) && !isAI(user))
|
||||
user << "You do not know how to operate this terminal."
|
||||
return
|
||||
@@ -128,7 +125,7 @@
|
||||
/obj/machinery/computer/xenos_station/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
|
||||
if(!isliving(usr)) return
|
||||
var/mob/living/user = usr
|
||||
|
||||
@@ -142,7 +139,7 @@
|
||||
else if(href_list["station_ne"])
|
||||
xenos_move_to(/area/xenos_station/northeast)
|
||||
else if(href_list["station_e"])
|
||||
xenos_move_to(/area/xenos_station/east)
|
||||
xenos_move_to(/area/xenos_station/east)
|
||||
else if(href_list["station_sw"])
|
||||
xenos_move_to(/area/xenos_station/southwest)
|
||||
else if(href_list["station_se"])
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
var/on_store_message = "has entered long-term storage."
|
||||
var/on_store_name = "Cryogenic Oversight"
|
||||
var/on_enter_occupant_message = "You feel cool air surround you. You go numb as your senses turn inward."
|
||||
var/allow_occupant_types = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
var/allow_occupant_types = list(/mob/living/carbon/human)
|
||||
var/disallow_occupant_types = list()
|
||||
|
||||
var/mob/living/occupant = null // Person waiting to be despawned.
|
||||
|
||||
@@ -37,9 +37,6 @@
|
||||
else
|
||||
user << "Error, no route to host."
|
||||
|
||||
/obj/machinery/door_control/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/door_control/attackby(obj/item/weapon/W, mob/user as mob, params)
|
||||
/* For later implementation
|
||||
if (istype(W, /obj/item/weapon/screwdriver))
|
||||
@@ -140,9 +137,6 @@
|
||||
/obj/machinery/driver_button/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/driver_button/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob, params)
|
||||
|
||||
if(istype(W, /obj/item/device/detective_scanner))
|
||||
|
||||
@@ -606,8 +606,6 @@ About the new airlock wires panel:
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
return ..()
|
||||
/obj/machinery/door/airlock/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/door/airlock/attack_hand(mob/user as mob)
|
||||
if(!istype(user, /mob/living/silicon))
|
||||
|
||||
@@ -132,11 +132,6 @@
|
||||
/obj/machinery/door/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/door/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/door/attack_hand(mob/user as mob)
|
||||
return src.attackby(user, user)
|
||||
|
||||
@@ -289,9 +284,6 @@
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
L.emote("scream")
|
||||
L.Weaken(5)
|
||||
else if(ismonkey(L)) //For monkeys
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
L.Weaken(5)
|
||||
else //for simple_animals & borgs
|
||||
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
var/turf/location = src.loc
|
||||
|
||||
@@ -227,8 +227,6 @@
|
||||
return
|
||||
attack_generic(user, 25)
|
||||
|
||||
/obj/machinery/door/window/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/door/window/attack_hand(mob/user as mob)
|
||||
return src.attackby(user, user)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
name = "Embedded Controller"
|
||||
anchored = 1
|
||||
|
||||
|
||||
use_power = 1
|
||||
idle_power_usage = 10
|
||||
|
||||
@@ -29,11 +29,9 @@
|
||||
/obj/machinery/embedded_controller/attack_ai(mob/user as mob)
|
||||
src.ui_interact(user)
|
||||
|
||||
/obj/machinery/embedded_controller/attack_paw(mob/user as mob)
|
||||
user << "You do not have the dexterity to use this."
|
||||
return
|
||||
|
||||
/obj/machinery/embedded_controller/attack_hand(mob/user as mob)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
src.ui_interact(user)
|
||||
|
||||
/obj/machinery/embedded_controller/ui_interact()
|
||||
@@ -44,7 +42,7 @@
|
||||
icon_state = "airlock_control_standby"
|
||||
power_channel = ENVIRON
|
||||
density = 0
|
||||
|
||||
|
||||
var/id_tag
|
||||
//var/radio_power_use = 50 //power used to xmit signals
|
||||
|
||||
|
||||
@@ -123,9 +123,6 @@
|
||||
/obj/machinery/flasher_button/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/flasher_button/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/flasher_button/attackby(obj/item/weapon/W, mob/user as mob, params)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
@@ -67,8 +67,6 @@
|
||||
/obj/machinery/computer/guestpass/attack_ai(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/guestpass/attack_paw(var/mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/computer/guestpass/attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -46,9 +46,6 @@
|
||||
|
||||
/obj/machinery/holosign_switch/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
/
|
||||
obj/machinery/holosign_switch/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/holosign_switch/attackby(obj/item/weapon/W, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/device/detective_scanner))
|
||||
|
||||
@@ -13,10 +13,6 @@
|
||||
/obj/machinery/igniter/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/igniter/attack_paw(mob/user as mob)
|
||||
if ((ticker && ticker.mode.name == "monkey"))
|
||||
return src.attack_hand(user)
|
||||
return
|
||||
|
||||
/obj/machinery/igniter/attack_hand(mob/user as mob)
|
||||
if(..())
|
||||
@@ -122,9 +118,6 @@
|
||||
/obj/machinery/ignition_switch/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/ignition_switch/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/ignition_switch/attackby(obj/item/weapon/W, mob/user as mob, params)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
@@ -164,9 +164,6 @@
|
||||
else
|
||||
src.overlays += image('icons/obj/kitchen.dmi', "gridle")
|
||||
|
||||
/obj/machinery/gibber/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/gibber/relaymove(mob/user as mob)
|
||||
if(locked)
|
||||
return
|
||||
|
||||
@@ -60,9 +60,6 @@
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
|
||||
/obj/machinery/juicer/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/juicer/attack_ai(mob/user as mob)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -183,9 +183,6 @@
|
||||
return 1
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/microwave/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/microwave/attack_ai(mob/user as mob)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
if (istype(O, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = O
|
||||
var/grabbed = G.affecting
|
||||
if(istype(grabbed, /mob/living/carbon/monkey))
|
||||
var/mob/living/carbon/monkey/target = grabbed
|
||||
if(istype(grabbed, /mob/living/carbon/human/monkey))
|
||||
var/mob/living/carbon/human/monkey/target = grabbed
|
||||
if(target.stat == 0)
|
||||
user << "\red The monkey is struggling far too much to put it in the recycler."
|
||||
else
|
||||
|
||||
@@ -79,11 +79,11 @@
|
||||
..()
|
||||
|
||||
/datum/food_processor_process/mob/monkey
|
||||
input = /mob/living/carbon/monkey
|
||||
input = /mob/living/carbon/human/monkey
|
||||
output = null
|
||||
|
||||
/datum/food_processor_process/mob/monkey/process(loc, what)
|
||||
var/mob/living/carbon/monkey/O = what
|
||||
var/mob/living/carbon/human/monkey/O = what
|
||||
if (O.client) //grief-proof
|
||||
O.loc = loc
|
||||
O.visible_message("<span class='notice'>Suddenly [O] jumps out from the processor!</span>", \
|
||||
|
||||
@@ -133,9 +133,6 @@
|
||||
updateUsrDialog()
|
||||
|
||||
|
||||
/obj/machinery/smartfridge/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/smartfridge/attack_ai(mob/user as mob)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -43,9 +43,6 @@
|
||||
usr << "A light switch. It is [on? "on" : "off"]."
|
||||
|
||||
|
||||
/obj/machinery/light_switch/attack_paw(mob/user)
|
||||
src.attack_hand(user)
|
||||
|
||||
/obj/machinery/light_switch/attack_hand(mob/user)
|
||||
|
||||
on = !on
|
||||
|
||||
@@ -322,17 +322,13 @@ Class Procs:
|
||||
else
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/attack_paw(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/attack_hand(mob/user as mob)
|
||||
if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT))
|
||||
return 1
|
||||
if(user.lying || user.stat)
|
||||
return 1
|
||||
if ( ! (istype(usr, /mob/living/carbon/human) || \
|
||||
istype(usr, /mob/living/silicon) || \
|
||||
istype(usr, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey") )
|
||||
istype(usr, /mob/living/silicon)))
|
||||
usr << "\red You don't have the dexterity to do this!"
|
||||
return 1
|
||||
/*
|
||||
|
||||
@@ -128,10 +128,10 @@
|
||||
/obj/machinery/navbeacon/attack_ai(var/mob/user)
|
||||
interact(user, 1)
|
||||
|
||||
/obj/machinery/navbeacon/attack_paw()
|
||||
return
|
||||
|
||||
/obj/machinery/navbeacon/attack_hand(var/mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
interact(user, 0)
|
||||
|
||||
/obj/machinery/navbeacon/interact(var/mob/user, var/ai = 0)
|
||||
|
||||
@@ -180,6 +180,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
/obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############
|
||||
if(!src.ispowered || src.isbroken)
|
||||
return
|
||||
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
|
||||
if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) )
|
||||
var/mob/living/human_or_robot_user = user
|
||||
var/dat
|
||||
@@ -744,10 +748,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
return src.attack_hand(user) //or maybe it'll have some special functions? No idea.
|
||||
|
||||
|
||||
/obj/machinery/newscaster/attack_paw(mob/user as mob)
|
||||
user << "<font color='blue'>The newscaster controls are far too complicated for your tiny brain!</font>"
|
||||
return
|
||||
|
||||
/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob)
|
||||
if(photo)
|
||||
if(!issilicon(user))
|
||||
|
||||
@@ -7,9 +7,6 @@
|
||||
var/unwrenched = 0
|
||||
var/wait = 0
|
||||
|
||||
/obj/machinery/pipedispenser/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/pipedispenser/attack_hand(user as mob)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
eprojectile = /obj/item/projectile/beam //If it has, going to kill mode
|
||||
eshot_sound = 'sound/weapons/Laser.ogg'
|
||||
egun = 1
|
||||
|
||||
|
||||
if(/obj/item/weapon/gun/energy/gun/turret)
|
||||
eprojectile = /obj/item/projectile/beam //If it has, going to copypaste mode
|
||||
eshot_sound = 'sound/weapons/Laser.ogg'
|
||||
@@ -210,7 +210,7 @@
|
||||
/obj/machinery/porta_turret/proc/HasController()
|
||||
var/area/A = get_area(src)
|
||||
return A && A.turret_controls.len > 0
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/CanUseTopic(var/mob/user)
|
||||
if(HasController())
|
||||
user << "<span class='notice'>Turrets can only be controlled using the assigned turret controller.</span>"
|
||||
@@ -336,9 +336,9 @@
|
||||
spawn()
|
||||
sleep(60)
|
||||
attacked = 0
|
||||
|
||||
|
||||
..()
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
//Emagging the turret makes it go bonkers and stun everyone. It also makes
|
||||
@@ -450,8 +450,8 @@
|
||||
assess_and_assign(ME.occupant, targets, secondarytargets)
|
||||
|
||||
for(var/obj/spacepod/SP in view(7,src))
|
||||
assess_and_assign(SP.occupant, targets, secondarytargets)
|
||||
|
||||
assess_and_assign(SP.occupant, targets, secondarytargets)
|
||||
|
||||
for(var/obj/vehicle/train/T in view(7,src))
|
||||
assess_and_assign(T.load, targets, secondarytargets)
|
||||
|
||||
@@ -502,7 +502,7 @@
|
||||
if(iscuffed(L)) // If the target is handcuffed, leave it alone
|
||||
return TURRET_NOT_TARGET
|
||||
|
||||
if(isanimal(L) || ismonkey(L)) // Animals are not so dangerous
|
||||
if(isanimal(L) || issmall(L)) // Animals are not so dangerous
|
||||
return check_anomalies ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET
|
||||
if(isalien(L)) // Xenos are dangerous
|
||||
return check_anomalies ? TURRET_PRIORITY_TARGET : TURRET_NOT_TARGET
|
||||
@@ -524,8 +524,8 @@
|
||||
var/mob/living/M = pick(targets)
|
||||
targets -= M
|
||||
if(target(M))
|
||||
return 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/porta_turret/proc/popUp() //pops the turret up
|
||||
if(disabled)
|
||||
return
|
||||
@@ -562,7 +562,7 @@
|
||||
raised = 0
|
||||
invisibility = INVISIBILITY_LEVEL_TWO
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/on_assess_perp(mob/living/carbon/human/perp)
|
||||
if((check_access || attacked) && !allowed(perp))
|
||||
//if the turret has been attacked or is angry, target all non-authorized personnel, see req_access
|
||||
@@ -616,8 +616,8 @@
|
||||
|
||||
// Lethal/emagged turrets use twice the power due to higher energy beams
|
||||
// Emagged turrets again use twice as much power due to higher firing rates
|
||||
use_power(reqpower * (2 * (emagged || lethal)) * (2 * emagged))
|
||||
|
||||
use_power(reqpower * (2 * (emagged || lethal)) * (2 * emagged))
|
||||
|
||||
//Shooting Code:
|
||||
A.current = T
|
||||
A.yo = U.y - T.y
|
||||
|
||||
@@ -60,9 +60,6 @@
|
||||
use_power = 1
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/recharger/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/recharger/process()
|
||||
if(stat & (NOPOWER|BROKEN) || !anchored)
|
||||
return
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
else
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/robotic_fabricator/attack_paw(user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/robotic_fabricator/attack_hand(user as mob)
|
||||
var/dat
|
||||
if (..())
|
||||
|
||||
@@ -96,6 +96,8 @@
|
||||
return
|
||||
if(stat & NOPOWER)
|
||||
return
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
if(src.panelopen) //The maintenance panel is open. Time for some shady stuff
|
||||
dat+= "<HEAD><TITLE>Suit storage unit: Maintenance panel</TITLE></HEAD>"
|
||||
dat+= "<Font color ='black'><B>Maintenance panel controls</B></font><HR>"
|
||||
@@ -562,10 +564,6 @@
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/obj/machinery/suit_storage_unit/attack_paw(mob/user as mob)
|
||||
user << "<font color='blue'>The console controls are far too complicated for your tiny brain!</font>"
|
||||
return
|
||||
|
||||
|
||||
//////////////////////////////REMINDER: Make it lock once you place some fucker inside.
|
||||
|
||||
@@ -627,10 +625,6 @@
|
||||
/obj/machinery/suit_cycler/attack_ai(mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/suit_cycler/attack_paw(mob/user as mob)
|
||||
user << "\blue The console controls are far too complicated for your tiny brain!"
|
||||
return
|
||||
|
||||
/obj/machinery/suit_cycler/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
|
||||
if(electrified != 0)
|
||||
@@ -751,6 +745,9 @@
|
||||
if(..() || stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
|
||||
if(electrified != 0)
|
||||
if(src.shock(user, 100))
|
||||
return
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
race = "[H.species.name]"
|
||||
|
||||
|
||||
else if(ismonkey(M))
|
||||
else if(issmall(M))
|
||||
race = "Monkey"
|
||||
language = race
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/computer/teleporter/emag_act(user as mob)
|
||||
if(!emagged)
|
||||
emagged = 1
|
||||
@@ -54,10 +54,6 @@
|
||||
else
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/computer/teleporter/attack_paw(mob/user)
|
||||
usr << "You are too primitive to use this computer."
|
||||
return
|
||||
|
||||
/obj/machinery/computer/teleporter/attack_ai(mob/user)
|
||||
src.attack_hand(user)
|
||||
|
||||
@@ -443,9 +439,6 @@
|
||||
user << "<span class='caution'>You reconnect the station to nearby machinery.</span>"
|
||||
return
|
||||
|
||||
/obj/machinery/teleport/station/attack_paw()
|
||||
src.attack_hand()
|
||||
|
||||
/obj/machinery/teleport/station/attack_ai()
|
||||
src.attack_hand()
|
||||
|
||||
|
||||
@@ -394,9 +394,6 @@
|
||||
/obj/machinery/vending/attack_ai(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/vending/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/vending/attack_hand(mob/user as mob)
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
return
|
||||
|
||||
@@ -524,9 +524,6 @@
|
||||
src.log_append_to_last("Armor saved.")
|
||||
return
|
||||
|
||||
/obj/mecha/attack_paw(mob/living/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
|
||||
/obj/mecha/attack_alien(mob/living/user as mob)
|
||||
src.log_message("Attack by alien. Attacker - [user].",1)
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
attack_ai(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
attack_paw(var/mob/user as mob)
|
||||
return src.attack_hand(user)
|
||||
|
||||
attack_hand(var/mob/user as mob)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -119,10 +119,6 @@
|
||||
healthcheck()
|
||||
|
||||
|
||||
/obj/structure/alien/resin/attack_paw(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
/obj/structure/alien/resin/attack_alien(mob/living/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src)
|
||||
@@ -314,7 +310,7 @@
|
||||
Grow()
|
||||
|
||||
|
||||
/obj/structure/alien/egg/attack_paw(mob/user)
|
||||
/obj/structure/alien/egg/attack_alien(mob/user)
|
||||
if(isalien(user))
|
||||
switch(status)
|
||||
if(BURST)
|
||||
|
||||
@@ -1105,10 +1105,6 @@ steam.start() -- spawns the effect
|
||||
if(metal==1 || prob(50))
|
||||
del(src)
|
||||
|
||||
attack_paw(var/mob/user)
|
||||
attack_hand(user)
|
||||
return
|
||||
|
||||
attack_hand(var/mob/user)
|
||||
if ((HULK in user.mutations) || (prob(75 - metal*25)))
|
||||
user << "\blue You smash through the metal foam wall."
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
if(triggered) return
|
||||
|
||||
if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
O << "<font color='red'>[M] triggered the \icon[src] [src]</font>"
|
||||
triggered = 1
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/attack_paw(mob/user as mob)
|
||||
/obj/item/attack_alien(mob/user as mob)
|
||||
|
||||
if(isalien(user)) // -- TLE
|
||||
var/mob/living/carbon/alien/A = user
|
||||
@@ -202,7 +202,7 @@
|
||||
A.unEquip(src)
|
||||
user << "Your claws aren't capable of such fine manipulation."
|
||||
return
|
||||
attack_paw(A)
|
||||
attack_hand(A)
|
||||
|
||||
/obj/item/attack_ai(mob/user as mob)
|
||||
if (istype(src.loc, /obj/item/weapon/robot_module))
|
||||
@@ -494,34 +494,6 @@
|
||||
return 0 //Unsupported slot
|
||||
//END HUMAN
|
||||
|
||||
else if(ismonkey(M))
|
||||
//START MONKEY
|
||||
var/mob/living/carbon/monkey/MO = M
|
||||
switch(slot)
|
||||
if(slot_l_hand)
|
||||
if(MO.l_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_hand)
|
||||
if(MO.r_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_mask)
|
||||
if(MO.wear_mask)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_MASK) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_back)
|
||||
if(MO.back)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_BACK) )
|
||||
return 0
|
||||
return 1
|
||||
return 0 //Unsupported slot
|
||||
|
||||
//END MONKEY
|
||||
|
||||
|
||||
/obj/item/verb/verb_pickup()
|
||||
set src in oview(1)
|
||||
@@ -586,14 +558,6 @@
|
||||
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
||||
return
|
||||
|
||||
var/mob/living/carbon/monkey/Mo = M
|
||||
if(istype(Mo) && ( \
|
||||
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
|
||||
))
|
||||
// you can't stab someone in the eyes wearing a mask!
|
||||
user << "\red You're going to need to remove that mask/helmet/glasses first."
|
||||
return
|
||||
|
||||
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N slimes also don't have eyes!
|
||||
user << "\red You cannot locate any eyes on this creature!"
|
||||
return
|
||||
|
||||
@@ -1134,9 +1134,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
JFLOG("[user] used the fingerprint scanner on [C]")
|
||||
if (!istype(C:dna, /datum/dna))
|
||||
user << "\blue No fingerprints found on [C]"
|
||||
else if(!istype(C, /mob/living/carbon/monkey))
|
||||
if(!isnull(C:gloves))
|
||||
user << "\blue No fingerprints found on [C]"
|
||||
else
|
||||
user << text("\blue [C]'s Fingerprints: [md5(C:dna.uni_identity)]")
|
||||
if ( !(C:blood_DNA) )
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
user.visible_message("<span class='notice'>[user] directs [src] to [M]'s eyes.</span>", \
|
||||
"<span class='notice'>You direct [src] to [M]'s eyes.</span>")
|
||||
|
||||
if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) //robots and aliens are unaffected
|
||||
if(istype(M, /mob/living/carbon/human)) //robots and aliens are unaffected
|
||||
if(M.stat == DEAD || M.sdisabilities & BLIND) //mob is dead or fully blind
|
||||
user << "<span class='notice'>[M] pupils does not react to the light!</span>"
|
||||
else if(XRAY in M.mutations) //mob has X-RAY vision
|
||||
|
||||
@@ -67,8 +67,6 @@
|
||||
attached = null
|
||||
..()
|
||||
|
||||
attack_paw()
|
||||
return
|
||||
|
||||
attack_ai()
|
||||
return
|
||||
|
||||
@@ -40,9 +40,6 @@
|
||||
spawn (0)
|
||||
attack_self(user)
|
||||
|
||||
/obj/item/device/radio/intercom/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/item/device/radio/intercom/attack_hand(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
spawn (0)
|
||||
|
||||
@@ -172,9 +172,6 @@ var/list/tape_roll_applications = list()
|
||||
else
|
||||
breaktape(/obj/item/weapon/soap, user)//cant be null, and can't be sharp.
|
||||
|
||||
/obj/item/tape/attack_paw(mob/user as mob)
|
||||
breaktape(/obj/item/weapon/wirecutters,user)
|
||||
|
||||
/obj/item/tape/attack_alien(mob/user as mob)
|
||||
breaktape(/obj/item/weapon/wirecutters,user)
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
user << "<span class='danger'>\The [src] cannot be applied to [M]!</span>"
|
||||
return 1
|
||||
|
||||
if (!(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon) || istype(user, /mob/living/carbon/monkey) && ticker && ticker.mode.name == "monkey"))
|
||||
if (!(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)))
|
||||
user << "<span class='danger'>You don't have the dexterity to do this!</span>"
|
||||
return 1
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user