Fixes a ton of shit with riding_datums

This commit is contained in:
Cyberboss
2017-02-27 12:10:29 -05:00
parent 72a93bae7d
commit ef7879545b
10 changed files with 28 additions and 15 deletions

View File

@@ -9,6 +9,13 @@
var/slowed = FALSE var/slowed = FALSE
var/slowvalue = 1 var/slowvalue = 1
/datum/riding/New(atom/movable/_ridden)
ridden = _ridden
/datum/riding/Destroy()
ridden = null
return ..()
/datum/riding/proc/handle_vehicle_layer() /datum/riding/proc/handle_vehicle_layer()
if(ridden.dir != NORTH) if(ridden.dir != NORTH)
ridden.layer = ABOVE_MOB_LAYER ridden.layer = ABOVE_MOB_LAYER

View File

@@ -911,8 +911,7 @@
M.visible_message("<span class='warning'>[M] really can't seem to mount [src]...</span>") M.visible_message("<span class='warning'>[M] really can't seem to mount [src]...</span>")
return return
if(!riding_datum) if(!riding_datum)
riding_datum = new /datum/riding/human riding_datum = new /datum/riding/human(src)
riding_datum.ridden = src
if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs))) if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)))
return return
if(buckled) //NO INFINITE STACKING!! if(buckled) //NO INFINITE STACKING!!

View File

@@ -55,6 +55,9 @@
//End bloody footprints //End bloody footprints
S.step_action() S.step_action()
/mob/living/carbon/human/Moved()
. = ..()
if(buckled_mobs && buckled_mobs.len && riding_datum) if(buckled_mobs && buckled_mobs.len && riding_datum)
riding_datum.on_vehicle_move() riding_datum.on_vehicle_move()

View File

@@ -31,6 +31,7 @@
ranged_ability.remove_ranged_ability(src) ranged_ability.remove_ranged_ability(src)
if(buckled) if(buckled)
buckled.unbuckle_mob(src,force=1) buckled.unbuckle_mob(src,force=1)
QDEL_NULL(riding_datum)
for(var/mob/living/simple_animal/drone/D in player_list) for(var/mob/living/simple_animal/drone/D in player_list)
for(var/image/I in staticOverlays) for(var/image/I in staticOverlays)
@@ -915,3 +916,8 @@
"[C] topples over [src]!", \ "[C] topples over [src]!", \
"[C] leaps out of [src]'s way!")]</span>") "[C] leaps out of [src]'s way!")]</span>")
C.Weaken(2) C.Weaken(2)
/mob/living/post_buckle_mob(mob/living/M)
if(riding_datum)
riding_datum.handle_vehicle_offsets()
riding_datum.handle_vehicle_layer()

View File

@@ -75,3 +75,5 @@
var/list/implants = null var/list/implants = null
var/tesla_ignore = FALSE var/tesla_ignore = FALSE
var/datum/riding/riding_datum

View File

@@ -1010,8 +1010,7 @@
M.visible_message("<span class='warning'>[M] really can't seem to mount the [src]...</span>") M.visible_message("<span class='warning'>[M] really can't seem to mount the [src]...</span>")
return return
if(!riding_datum) if(!riding_datum)
riding_datum = new /datum/riding/cyborg riding_datum = new /datum/riding/cyborg(src)
riding_datum.ridden = src
if(buckled_mobs) if(buckled_mobs)
if(buckled_mobs.len >= max_buckled_mobs) if(buckled_mobs.len >= max_buckled_mobs)
return return

View File

@@ -540,11 +540,10 @@
if(tame && riding_datum) if(tame && riding_datum)
riding_datum.handle_ride(user, direction) riding_datum.handle_ride(user, direction)
/mob/living/simple_animal/Move(NewLoc,Dir=0,step_x=0,step_y=0) /mob/living/simple_animal/Moved()
. = ..() . = ..()
if(riding_datum) if(riding_datum)
riding_datum.handle_vehicle_layer() riding_datum.on_vehicle_move()
riding_datum.handle_vehicle_offsets()
/mob/living/simple_animal/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1) /mob/living/simple_animal/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)

View File

@@ -963,8 +963,3 @@ var/next_mob_id = 0
if ("attack_log") if ("attack_log")
return debug_variable(var_name, attack_log, 0, src, FALSE) return debug_variable(var_name, attack_log, 0, src, FALSE)
. = ..() . = ..()
/mob/post_buckle_mob(mob/living/M)
if(riding_datum)
riding_datum.handle_vehicle_offsets()
riding_datum.handle_vehicle_layer()

View File

@@ -146,5 +146,4 @@
var/list/observers = null //The list of people observing this mob. var/list/observers = null //The list of people observing this mob.
var/list/progressbars = null //for stacking do_after bars var/list/progressbars = null //for stacking do_after bars
var/datum/riding/riding_datum
var/list/can_ride_typecache = list() var/list/can_ride_typecache = list()

View File

@@ -15,6 +15,10 @@
var/view_range = 7 var/view_range = 7
var/datum/riding/riding_datum = null var/datum/riding/riding_datum = null
/obj/vehicle/Destroy()
QDEL_NULL(riding_datum)
return ..()
/obj/vehicle/update_icon() /obj/vehicle/update_icon()
return return
@@ -53,7 +57,7 @@
riding_datum.handle_ride(user, direction) riding_datum.handle_ride(user, direction)
/obj/vehicle/Move(NewLoc,Dir=0,step_x=0,step_y=0) /obj/vehicle/Moved()
. = ..() . = ..()
if(riding_datum) if(riding_datum)
riding_datum.handle_vehicle_layer() riding_datum.handle_vehicle_layer()