mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-22 19:46:36 +01:00
Merge remote-tracking branch 'upstream/dev' into !
Conflicts: code/modules/mob/hear_say.dm
This commit is contained in:
@@ -341,7 +341,7 @@
|
||||
if(slot_w_uniform)
|
||||
if(H.w_uniform)
|
||||
return 0
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit && (H.wear_suit.body_parts_covered & src.body_parts_covered))
|
||||
if(!disable_warning)
|
||||
H << "<span class='warning'>\The [H.wear_suit] is in the way.</span>"
|
||||
return 0
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
/obj/item/device/aicard/Topic(href, href_list)
|
||||
|
||||
var/mob/U = usr
|
||||
if (!(get_turf(U) == get_turf(src)) || U.machine != src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else).
|
||||
if (get_dist(get_turf(U),get_turf(src)) > 1 || U.machine != src)//If they are not in range of 1 or less or their machine is not the card (ie, clicked on something else).
|
||||
U << browse(null, "window=aicard")
|
||||
U.unset_machine()
|
||||
return
|
||||
|
||||
@@ -309,4 +309,10 @@
|
||||
/obj/item/device/paicard/emp_act(severity)
|
||||
for(var/mob/M in src)
|
||||
M.emp_act(severity)
|
||||
..()
|
||||
..()
|
||||
|
||||
/obj/item/device/paicard/ex_act(severity)
|
||||
if(pai)
|
||||
pai.ex_act(severity)
|
||||
else
|
||||
del(src)
|
||||
|
||||
@@ -3,128 +3,159 @@
|
||||
/obj/item/weapon/implantcase
|
||||
name = "Glass Case"
|
||||
desc = "A case containing an implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-0"
|
||||
item_state = "implantcase"
|
||||
throw_speed = 1
|
||||
throw_range = 5
|
||||
w_class = 1.0
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
proc
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implantcase/proc/update()
|
||||
if (src.imp)
|
||||
src.icon_state = text("implantcase-[]", src.imp.item_color)
|
||||
else
|
||||
src.icon_state = "implantcase-0"
|
||||
return
|
||||
|
||||
update()
|
||||
if (src.imp)
|
||||
src.icon_state = text("implantcase-[]", src.imp.item_color)
|
||||
/obj/item/weapon/implantcase/attackby(obj/item/weapon/I as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(I, /obj/item/weapon/pen))
|
||||
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
|
||||
if (user.get_active_hand() != I)
|
||||
return
|
||||
if((!in_range(src, usr) && src.loc != user))
|
||||
return
|
||||
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
|
||||
if(t)
|
||||
src.name = text("Glass Case - '[]'", t)
|
||||
else
|
||||
src.icon_state = "implantcase-0"
|
||||
return
|
||||
|
||||
|
||||
attackby(obj/item/weapon/I as obj, mob/user as mob)
|
||||
..()
|
||||
if (istype(I, /obj/item/weapon/pen))
|
||||
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
|
||||
if (user.get_active_hand() != I)
|
||||
src.name = "Glass Case"
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
||||
if(!src.imp) return
|
||||
if(!src.imp.allow_reagents) return
|
||||
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
|
||||
user << "\red [src] is full."
|
||||
else
|
||||
spawn(5)
|
||||
I.reagents.trans_to(src.imp, 5)
|
||||
user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units."
|
||||
else if (istype(I, /obj/item/weapon/implanter))
|
||||
var/obj/item/weapon/implanter/M = I
|
||||
if (M.imp)
|
||||
if ((src.imp || M.imp.implanted))
|
||||
return
|
||||
if((!in_range(src, usr) && src.loc != user))
|
||||
return
|
||||
t = copytext(sanitize(t),1,MAX_MESSAGE_LEN)
|
||||
if(t)
|
||||
src.name = text("Glass Case- '[]'", t)
|
||||
else
|
||||
src.name = "Glass Case"
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/syringe))
|
||||
if(!src.imp) return
|
||||
if(!src.imp.allow_reagents) return
|
||||
if(src.imp.reagents.total_volume >= src.imp.reagents.maximum_volume)
|
||||
user << "\red [src] is full."
|
||||
else
|
||||
spawn(5)
|
||||
I.reagents.trans_to(src.imp, 5)
|
||||
user << "\blue You inject 5 units of the solution. The syringe now contains [I.reagents.total_volume] units."
|
||||
else if (istype(I, /obj/item/weapon/implanter))
|
||||
if (I:imp)
|
||||
if ((src.imp || I:imp.implanted))
|
||||
M.imp.loc = src
|
||||
src.imp = M.imp
|
||||
M.imp = null
|
||||
src.update()
|
||||
M.update()
|
||||
else
|
||||
if (src.imp)
|
||||
if (M.imp)
|
||||
return
|
||||
I:imp.loc = src
|
||||
src.imp = I:imp
|
||||
I:imp = null
|
||||
src.update()
|
||||
I:update()
|
||||
else
|
||||
if (src.imp)
|
||||
if (I:imp)
|
||||
return
|
||||
src.imp.loc = I
|
||||
I:imp = src.imp
|
||||
src.imp = null
|
||||
update()
|
||||
I:update()
|
||||
return
|
||||
|
||||
src.imp.loc = M
|
||||
M.imp = src.imp
|
||||
src.imp = null
|
||||
update()
|
||||
M.update()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/tracking
|
||||
name = "Glass Case- 'Tracking'"
|
||||
name = "Glass Case - 'Tracking'"
|
||||
desc = "A case containing a tracking implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/tracking( src )
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/tracking/New()
|
||||
src.imp = new /obj/item/weapon/implant/tracking( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/explosive
|
||||
name = "Glass Case- 'Explosive'"
|
||||
name = "Glass Case - 'Explosive'"
|
||||
desc = "A case containing an explosive implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/explosive( src )
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/item/weapon/implantcase/explosive/New()
|
||||
src.imp = new /obj/item/weapon/implant/explosive( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/chem
|
||||
name = "Glass Case- 'Chem'"
|
||||
name = "Glass Case - 'Chem'"
|
||||
desc = "A case containing a chemical implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-b"
|
||||
/obj/item/weapon/implantcase/chem/New()
|
||||
|
||||
/obj/item/weapon/implantcase/chem/New()
|
||||
src.imp = new /obj/item/weapon/implant/chem( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/loyalty
|
||||
name = "Glass Case- 'Loyalty'"
|
||||
name = "Glass Case - 'Loyalty'"
|
||||
desc = "A case containing a loyalty implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
..()
|
||||
return
|
||||
/obj/item/weapon/implantcase/loyalty/New()
|
||||
src.imp = new /obj/item/weapon/implant/loyalty( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/death_alarm
|
||||
name = "Glass Case- 'Death Alarm'"
|
||||
name = "Glass Case - 'Death Alarm'"
|
||||
desc = "A case containing a death alarm implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
New()
|
||||
src.imp = new /obj/item/weapon/implant/death_alarm( src )
|
||||
..()
|
||||
return
|
||||
/obj/item/weapon/implantcase/death_alarm/New()
|
||||
src.imp = new /obj/item/weapon/implant/death_alarm( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/freedom
|
||||
name = "Glass Case - 'Freedom'"
|
||||
desc = "A case containing a freedom implant."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/freedom/New()
|
||||
src.imp = new /obj/item/weapon/implant/freedom( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/adrenalin
|
||||
name = "Glass Case - 'Adrenalin'"
|
||||
desc = "A case containing an adrenalin implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/adrenalin/New()
|
||||
src.imp = new /obj/item/weapon/implant/adrenalin( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/dexplosive
|
||||
name = "Glass Case - 'Explosive'"
|
||||
desc = "A case containing an explosive."
|
||||
icon_state = "implantcase-r"
|
||||
|
||||
/obj/item/weapon/implantcase/dexplosive/New()
|
||||
src.imp = new /obj/item/weapon/implant/dexplosive( src )
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/implantcase/health
|
||||
name = "Glass Case - 'Health'"
|
||||
desc = "A case containing a health tracking implant."
|
||||
icon_state = "implantcase-b"
|
||||
|
||||
/obj/item/weapon/implantcase/health/New()
|
||||
src.imp = new /obj/item/weapon/implant/health( src )
|
||||
..()
|
||||
return
|
||||
@@ -1,4 +1,5 @@
|
||||
//Alium nests. Essentially beds with an unbuckle delay that only aliums can buckle mobs to.
|
||||
#define NEST_RESIST_TIME 1200
|
||||
|
||||
/obj/structure/stool/bed/nest
|
||||
name = "alien nest"
|
||||
@@ -19,12 +20,16 @@
|
||||
buckled_mob.old_y = 0
|
||||
unbuckle()
|
||||
else
|
||||
if(world.time <= buckled_mob.last_special+NEST_RESIST_TIME)
|
||||
return
|
||||
buckled_mob.last_special = world.time
|
||||
buckled_mob.visible_message(\
|
||||
"<span class='warning'>[buckled_mob.name] struggles to break free of the gelatinous resin...</span>",\
|
||||
"<span class='warning'>You struggle to break free from the gelatinous resin...</span>",\
|
||||
"<span class='notice'>You hear squelching...</span>")
|
||||
spawn(1200)
|
||||
spawn(NEST_RESIST_TIME)
|
||||
if(user && buckled_mob && user.buckled == src)
|
||||
buckled_mob.last_special = world.time
|
||||
buckled_mob.pixel_y = 0
|
||||
buckled_mob.old_y = 0
|
||||
unbuckle()
|
||||
|
||||
@@ -163,31 +163,32 @@
|
||||
|
||||
/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(!istype(W)) return//I really wish I did not need this
|
||||
if(W.flags & NOBLUDGEON) return
|
||||
|
||||
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
|
||||
var/obj/item/weapon/grab/G = W
|
||||
if (istype(G.affecting, /mob/living))
|
||||
if(istype(G.affecting,/mob/living))
|
||||
var/mob/living/M = G.affecting
|
||||
var/state = G.state
|
||||
del(W) //gotta delete it here because if window breaks, it won't get deleted
|
||||
switch (state)
|
||||
if(1)
|
||||
M.visible_message("<span class='warning'>[user] slams [M] against \the [src]!</span>")
|
||||
M.apply_damage(7)
|
||||
hit(10)
|
||||
visible_message("\red [user] slams [M] against \the [src]!")
|
||||
if(2)
|
||||
M.visible_message("<span class='danger'>[user] bashes [M] against \the [src]!</span>")
|
||||
if (prob(50))
|
||||
M.Weaken(1)
|
||||
M.apply_damage(10)
|
||||
hit(25)
|
||||
visible_message("\red <b>[user] bashes [M] against \the [src]!</b>")
|
||||
if(3)
|
||||
M.visible_message("<span class='danger'><big>[user] crushes [M] against \the [src]!</big></span>")
|
||||
M.Weaken(5)
|
||||
M.apply_damage(20)
|
||||
hit(50)
|
||||
visible_message("\red <big><b>[user] crushes [M] against \the [src]!</b></big>")
|
||||
return
|
||||
|
||||
if(W.flags & NOBLUDGEON) return
|
||||
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if(reinf && state >= 1)
|
||||
state = 3 - state
|
||||
|
||||
Reference in New Issue
Block a user