[READY]VEHICLE REFACTOR - Riding datums --> Components, Vehicles --> /obj/vehicle, staging for mech overhaul later on

This commit is contained in:
kevinz000
2017-12-03 13:33:01 -08:00
committed by CitadelStationBot
parent 6217206bae
commit 66c66f0bd7
54 changed files with 1052 additions and 786 deletions
@@ -890,8 +890,11 @@
if(!is_type_in_typecache(M, can_ride_typecache))
M.visible_message("<span class='warning'>[M] really can't seem to mount [src]...</span>")
return
if(!riding_datum)
riding_datum = new /datum/riding/human(src)
var/datum/component/riding/human/riding_datum = LoadComponent(/datum/component/riding/human)
riding_datum.ride_check_rider_incapacitated = TRUE
riding_datum.ride_check_ridden_incapacitated = TRUE
riding_datum.ride_check_rider_restrained = TRUE
riding_datum.set_riding_offsets(RIDING_OFFSET_ALL, list(TEXT_NORTH = list(0, 6), TEXT_SOUTH = list(0, 6), TEXT_EAST = list(-6, 4), TEXT_WEST = list( 6, 4)))
if(buckled_mobs && ((M in buckled_mobs) || (buckled_mobs.len >= max_buckled_mobs)) || buckled || (M.stat != CONSCIOUS))
return
visible_message("<span class='notice'>[M] starts to climb onto [src]...</span>")
@@ -908,13 +911,6 @@
else
visible_message("<span class='warning'>[M] fails to climb onto [src]!</span>")
/mob/living/carbon/human/unbuckle_mob(mob/living/M, force=FALSE)
if(iscarbon(M))
if(riding_datum)
riding_datum.unequip_buckle_inhands(M)
riding_datum.restore_position(M)
. = ..(M, force)
/mob/living/carbon/human/species
var/race = null
@@ -188,12 +188,8 @@
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.a_intent == INTENT_DISARM)
if(H.buckled_mobs && (src in H.buckled_mobs) && H.riding_datum)
H.riding_datum.force_dismount(src)
dna.species.spec_attack_hand(H, src)
/mob/living/carbon/human/attack_paw(mob/living/carbon/monkey/M)
var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
var/obj/item/bodypart/affecting = get_bodypart(ran_zone(dam_zone))
@@ -58,11 +58,6 @@
//End bloody footprints
S.step_action()
/mob/living/carbon/human/Moved()
. = ..()
if(buckled_mobs && buckled_mobs.len && riding_datum)
riding_datum.on_vehicle_move()
/mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee.
if(..())
return 1
+6 -6
View File
@@ -491,14 +491,14 @@
. = ..()
if(.)
user.spin(20, 1)
if(iscyborg(user))
if(iscyborg(user) && user.has_buckled_mobs())
var/mob/living/silicon/robot/R = user
if(R.buckled_mobs)
GET_COMPONENT_FROM(riding_datum, /datum/component/riding, R)
if(riding_datum)
for(var/mob/M in R.buckled_mobs)
if(R.riding_datum)
R.riding_datum.force_dismount(M)
else
R.unbuckle_all_mobs()
riding_datum.force_dismount(M)
else
R.unbuckle_all_mobs()
/datum/emote/living/circle
-6
View File
@@ -39,7 +39,6 @@
ranged_ability.remove_ranged_ability(src)
if(buckled)
buckled.unbuckle_mob(src,force=1)
QDEL_NULL(riding_datum)
for(var/mob/living/simple_animal/drone/D in GLOB.player_list)
for(var/image/I in staticOverlays)
@@ -955,11 +954,6 @@
"[C] leaps out of [src]'s way!")]</span>")
C.Knockdown(40)
/mob/living/post_buckle_mob(mob/living/M)
if(riding_datum)
riding_datum.handle_vehicle_offsets()
riding_datum.handle_vehicle_layer()
/mob/living/ConveyorMove()
if((movement_type & FLYING) && !stat)
return
@@ -1151,8 +1151,7 @@
if(!is_type_in_typecache(M, can_ride_typecache))
M.visible_message("<span class='warning'>[M] really can't seem to mount [src]...</span>")
return
if(!riding_datum)
riding_datum = new /datum/riding/cyborg(src)
var/datum/component/riding/riding_datum = LoadComponent(/datum/component/riding/cyborg)
if(buckled_mobs)
if(buckled_mobs.len >= max_buckled_mobs)
return
@@ -1175,7 +1174,8 @@
/mob/living/silicon/robot/unbuckle_mob(mob/user)
if(iscarbon(user))
if(riding_datum)
GET_COMPONENT(riding_datum, /datum/component/riding)
if(istype(riding_datum))
riding_datum.unequip_buckle_inhands(user)
riding_datum.restore_position(user)
. = ..(user)
@@ -1,3 +1,4 @@
<<<<<<< HEAD
/mob/living/silicon/robot/Process_Spacemove(movement_dir = 0)
if(ionpulse())
return 1
@@ -24,3 +25,26 @@
. = ..()
if(riding_datum)
riding_datum.on_vehicle_move()
=======
/mob/living/silicon/robot/Process_Spacemove(movement_dir = 0)
if(ionpulse())
return 1
return ..()
/mob/living/silicon/robot/movement_delay()
. = ..()
var/static/config_robot_delay
if(isnull(config_robot_delay))
config_robot_delay = CONFIG_GET(number/robot_delay)
. += speed + config_robot_delay
/mob/living/silicon/robot/mob_negates_gravity()
return magpulse
/mob/living/silicon/robot/mob_has_gravity()
return ..() || mob_negates_gravity()
/mob/living/silicon/robot/experience_pressure_difference(pressure_difference, direction)
if(!magpulse)
return ..()
>>>>>>> 5182128... refactors riding datums to a component, vehicle refactor staging for mech overhaul (#32249)
@@ -379,12 +379,11 @@
return FALSE
/mob/living/simple_animal/bot/mulebot/post_buckle_mob(mob/living/M)
if(M in buckled_mobs) //post buckling
M.pixel_y = initial(M.pixel_y) + 9
if(M.layer < layer)
M.layer = layer + 0.01
M.pixel_y = initial(M.pixel_y) + 9
if(M.layer < layer)
M.layer = layer + 0.01
else //post unbuckling
/mob/living/simple_animal/bot/mulebot/post_unbuckle_mob(mob/living/M)
load = null
M.layer = initial(M.layer)
M.pixel_y = initial(M.pixel_y)
@@ -521,37 +521,26 @@
client.screen |= l_hand
//ANIMAL RIDING
/mob/living/simple_animal/unbuckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
if(riding_datum)
riding_datum.restore_position(buckled_mob)
. = ..()
/mob/living/simple_animal/user_buckle_mob(mob/living/M, mob/user)
GET_COMPONENT(riding_datum, /datum/component/riding)
if(riding_datum)
if(user.incapacitated())
return
for(var/atom/movable/A in get_turf(src))
if(A != src && A != M && A.density)
return
M.loc = get_turf(src)
riding_datum.handle_vehicle_offsets()
riding_datum.ridden = src
M.forceMove(get_turf(src))
return ..()
/mob/living/simple_animal/relaymove(mob/user, direction)
GET_COMPONENT(riding_datum, /datum/component/riding)
if(tame && riding_datum)
riding_datum.handle_ride(user, direction)
/mob/living/simple_animal/Moved()
. = ..()
if(riding_datum)
riding_datum.on_vehicle_move()
/mob/living/simple_animal/buckle_mob(mob/living/buckled_mob, force = 0, check_loc = 1)
. = ..()
riding_datum = new/datum/riding/animal
LoadComponent(/datum/component/riding)
/mob/living/simple_animal/proc/toggle_ai(togglestatus)
if (AIStatus != togglestatus)
+8 -8
View File
@@ -774,14 +774,14 @@
//Default buckling shift visual for mobs
/mob/post_buckle_mob(mob/living/M)
if(M in buckled_mobs)//post buckling
var/height = M.get_mob_buckling_height(src)
M.pixel_y = initial(M.pixel_y) + height
if(M.layer < layer)
M.layer = layer + 0.1
else //post unbuckling
M.layer = initial(M.layer)
M.pixel_y = initial(M.pixel_y)
var/height = M.get_mob_buckling_height(src)
M.pixel_y = initial(M.pixel_y) + height
if(M.layer < layer)
M.layer = layer + 0.1
/mob/post_unbuckle_mob(mob/living/M)
M.layer = initial(M.layer)
M.pixel_y = initial(M.pixel_y)
//returns the height in pixel the mob should have when buckled to another mob.
/mob/proc/get_mob_buckling_height(mob/seat)
-1
View File
@@ -33,7 +33,6 @@
var/obj/machinery/machine = null
var/other_mobs = null
var/disabilities = 0 //Carbon
var/movement_type = GROUND //Incase you have multiple types, you automatically use the most useful one. IE: Skating on ice, flippers on water, flying over chasm/space, etc.
var/atom/movable/pulling = null
var/grab_state = 0