Files
OpenSS13/Code/shuttle.dm

171 lines
3.3 KiB
Plaintext

/obj/shut_controller/proc/rotate(direct)
var/SE_X = 1
var/SE_Y = 1
var/SW_X = 1
var/SW_Y = 1
var/NE_X = 1
var/NE_Y = 1
var/NW_X = 1
var/NW_Y = 1
for(var/obj/move/M in src.parts)
if (M.x < SW_X)
SW_X = M.x
if (M.x > SE_X)
SE_X = M.x
if (M.y < SW_Y)
SW_Y = M.y
if (M.y > NW_Y)
NW_Y = M.y
if (M.y > NE_Y)
NE_Y = M.y
if (M.y < SE_Y)
SE_Y = M.y
if (M.x > NE_X)
NE_X = M.x
if (M.x < NW_X)
NW_X = M.y
//Foreach goto(75)
var/length = abs(NE_X - NW_X)
var/width = abs(NE_Y - SE_Y)
var/obj/random = pick(src.parts)
var/s_direct = null
switch(s_direct)
if(1.0)
switch(direct)
if(90.0)
var/tx = SE_X
var/ty = SE_Y
var/t_z = random.z
for(var/obj/move/M in src.parts)
M.ty = -M.x - tx
M.tx = -M.y - ty
var/T = locate(M.x, M.y, 11)
M.relocate(T)
M.ty = -M.ty
M.tx += length
//Foreach goto(374)
for(var/obj/move/M in src.parts)
M.tx += tx
M.ty += ty
var/T = locate(M.tx, M.ty, t_z)
M.relocate(T, 90)
//Foreach goto(468)
if(-90.0)
var/tx = SE_X
var/ty = SE_Y
var/t_z = random.z
for(var/obj/move/M in src.parts)
M.ty = M.x - tx
M.tx = M.y - ty
var/T = locate(M.x, M.y, 11)
M.relocate(T)
M.ty = -M.ty
M.ty += width
//Foreach goto(571)
for(var/obj/move/M in src.parts)
M.tx += tx
M.ty += ty
var/T = locate(M.tx, M.ty, t_z)
M.relocate(T, -90.0)
//Foreach goto(663)
else
else
return
/obj/shuttle/door/attackby(obj/item/I as obj, mob/user as mob)
if (src.operating)
return
if (src.density)
return open()
else
return close()
/obj/shuttle/door/attack_ai(mob/user as mob)
return src.attack_hand(user)
/obj/shuttle/door/attack_paw(mob/user as mob)
return src.attack_hand(user)
/obj/shuttle/door/attack_hand(mob/user as mob)
return attackby(user, user)
/obj/shuttle/door/verb/open()
set src in oview(1)
var/result = src.canReach(usr, null, 1)
if (result==0)
usr.client_mob() << "You can't reach [src]."
return
src.add_fingerprint(usr)
if (src.operating)
return
src.operating = 1
flick("doorc0", src)
src.icon_state = "door0"
sleep(15)
src.density = 0
src.opacity = 0
src.verbs -= /obj/shuttle/door/verb/open
src.verbs += /obj/shuttle/door/proc/close
src.operating = 0
src.loc.buildlinks()
return
/obj/shuttle/door/proc/close()
set src in oview(1)
var/result = src.canReach(usr, null, 1)
if (result==0)
usr.client_mob() << "You can't reach [src]."
return
src.add_fingerprint(usr)
if (src.operating)
return
src.operating = 1
flick("doorc1", src)
src.icon_state = "door1"
src.density = 1
if (src.visible)
src.opacity = 1
sleep(15)
src.verbs += /obj/shuttle/door/verb/open
src.verbs -= /obj/shuttle/door/proc/close
src.operating = 0
src.loc.buildlinks()
return
/turf/station/shuttle/ex_act(severity)
switch(severity)
if(1.0)
//SN src = null
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
del(src)
return
if(2.0)
if (prob(50))
//SN src = null
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
del(src)
return
else
return
/turf/station/shuttle/blob_act()
if(prob(20))
var/turf/space/S = src.ReplaceWithSpace()
S.buildlinks()
del(src)