mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-02 05:22:40 +00:00
Landmark Shuttles (#8512)
The lifeless live again. Or in this case, what never actually lived here. Ports Baystation12/Baystation12#17460 probably for real this time. What this allows us to do is create shuttles on runtime and make shuttles easier by just making landmarks and a shuttle instead of areas and shuttles. Also allows runtime landmark creation via flares or whatever AND allows shuttles to use different landmarks at will. I removed most of the overmap stuff, I think. It shouldn't be hard to slam it in whenever we need to. Changes: "Shuttle code has been completely reworked." "Shuttles can now be modified to have more than one destination." "Shuttles now have a takeoff sound." "You can now throw mobs against walls to damage them. A lot." "You now need a neckgrab to throw mobs." "BEING UNBUCKLED DURING SHUTTLE LAUNCH IS DANGEROUS! Don't do it." "Adminghosts can now interact with all shuttles."
This commit is contained in:
@@ -352,13 +352,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
var/holyblock = 0
|
||||
|
||||
if(usr.invisibility <= SEE_INVISIBLE_LIVING || (usr.mind in cult.current_antagonists))
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
for(var/turf/T in get_area_turfs(thearea))
|
||||
if(!T.holy)
|
||||
L+=T
|
||||
else
|
||||
holyblock = 1
|
||||
else
|
||||
for(var/turf/T in get_area_turfs(thearea.type))
|
||||
for(var/turf/T in get_area_turfs(thearea))
|
||||
L+=T
|
||||
|
||||
if(!L || !L.len)
|
||||
|
||||
@@ -319,16 +319,19 @@ var/list/slot_equipment_priority = list( \
|
||||
src.throw_mode_off()
|
||||
if(stat || !target)
|
||||
return
|
||||
if(target.type == /obj/screen) return
|
||||
if(target.type == /obj/screen)
|
||||
return
|
||||
|
||||
var/atom/movable/item = src.get_active_hand()
|
||||
|
||||
if(!item) return
|
||||
if(!item)
|
||||
return
|
||||
|
||||
if (istype(item, /obj/item/grab))
|
||||
var/can_throw = TRUE
|
||||
if(istype(item, /obj/item/grab))
|
||||
var/obj/item/grab/G = item
|
||||
item = G.throw_held() //throw the person instead of the grab
|
||||
if(ismob(item))
|
||||
if(ismob(item) && G.state >= GRAB_NECK)
|
||||
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
|
||||
var/turf/end_T = get_turf(target)
|
||||
if(start_T && end_T)
|
||||
@@ -346,8 +349,11 @@ var/list/slot_equipment_priority = list( \
|
||||
msg_admin_attack("[usr.name] ([usr.ckey]) has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[usr.x];Y=[usr.y];Z=[usr.z]'>JMP</a>)",ckey=key_name(usr),ckey_target=key_name(M))
|
||||
|
||||
qdel(G)
|
||||
else
|
||||
can_throw = FALSE
|
||||
|
||||
if(!item) return //Grab processing has a chance of returning null
|
||||
if(!item || !can_throw)
|
||||
return //Grab processing has a chance of returning null
|
||||
|
||||
|
||||
src.remove_from_mob(item)
|
||||
|
||||
@@ -235,9 +235,10 @@
|
||||
src.embedded += O
|
||||
src.verbs += /mob/proc/yank_out_object
|
||||
|
||||
//This is called when the mob is thrown into a dense turf
|
||||
/mob/living/proc/turf_collision(var/turf/T, var/speed)
|
||||
src.take_organ_damage(speed*5)
|
||||
/mob/living/proc/turf_collision(var/turf/T, var/speed = THROWFORCE_SPEED_DIVISOR)
|
||||
visible_message("<span class='danger'>[src] slams into \the [T]!</span>")
|
||||
playsound(T, 'sound/effects/bangtaper.ogg', 50, 1, 1)//so it plays sounds on the turf instead, makes for awesome carps to hull collision and such
|
||||
apply_damage(speed*5, BRUTE)
|
||||
|
||||
/mob/living/proc/near_wall(var/direction,var/distance=1)
|
||||
var/turf/T = get_step(get_turf(src),direction)
|
||||
|
||||
@@ -231,7 +231,8 @@ var/list/ai_verbs_default = list(
|
||||
to_chat(src, "<b>These laws may be changed by other players, or by you if you are malfunctioning.</b>")
|
||||
|
||||
job = "AI"
|
||||
setup_icon()
|
||||
if(client)
|
||||
setup_icon()
|
||||
eyeobj.possess(src)
|
||||
|
||||
/mob/living/silicon/ai/getFireLoss()
|
||||
@@ -311,7 +312,8 @@ var/list/ai_verbs_default = list(
|
||||
id_card.assignment = "AI"
|
||||
id_card.update_name()
|
||||
|
||||
setup_icon() //this is because the ai custom name is related to the ai name, so, we just call the setup icon after someone named their ai
|
||||
if(client)
|
||||
setup_icon() //this is because the ai custom name is related to the ai name, so, we just call the setup icon after someone named their ai
|
||||
SSrecords.reset_manifest()
|
||||
|
||||
/*
|
||||
|
||||
@@ -281,7 +281,7 @@
|
||||
destinations += T
|
||||
var/area/A = get_area(src)
|
||||
if(!isNotStationLevel(A.z))
|
||||
var/list/area_turfs = get_area_turfs(A, null, 0, FALSE)
|
||||
var/list/area_turfs = get_area_turfs(A)
|
||||
var/list/floor_turfs = list()
|
||||
for(var/turf/simulated/floor/T in (area_turfs))
|
||||
if(turf_clear(T))
|
||||
|
||||
@@ -164,7 +164,6 @@
|
||||
|
||||
src.move_speed = world.time - src.l_move_time
|
||||
src.l_move_time = world.time
|
||||
src.m_flag = 1
|
||||
if ((A != src.loc && A && A.z == src.z))
|
||||
src.last_move = get_dir(A, src.loc)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user