Nebbaymechs as Exosuits, Legally Distinct from Mechas, obviously. - #8956
Nebbaymechs as Exosuits, Legally Distinct from Mechas, obviously.#8956Mechoid wants to merge 16 commits into
Conversation
| /obj/item/mech_component/sensors/attackby(var/obj/item/thing, var/mob/user) | ||
| if(istype(thing, /obj/item/mech_component/control_module)) | ||
| if(software) | ||
| to_chat(user, SPAN_WARNING("\The [src] already has a control modules installed.")) |
|
|
||
| /obj/item/ammo_magazine/mech/smg_top | ||
| name = "large 7mm magazine" | ||
| desc = "A large magazine for a mech's gun. Looks way too big for a normal gun." |
There was a problem hiding this comment.
Might want the desc on the parent of this, so it'll show for the other mags?
|
Right, I don't quite understand why Dreamchecker is complaining now, as 2 are global procs, and one is just a for loop with an internal var |
| @@ -0,0 +1,90 @@ | |||
| /mob/living/exosuit/premade/light | |||
There was a problem hiding this comment.
This and the sleek exosuit seem to be almost the same thing, just with slight different descriptions/names, are they differernt icons?
There was a problem hiding this comment.
Different icons, yes.
|
For the record, I am working on a review of this, but its size sorta demands it go to the backlog given the volume of PRs open rn. |
2975058 to
5ba9fb1
Compare
34201cd to
6101752
Compare
Atermonera
left a comment
There was a problem hiding this comment.
That took, entirely longer than it ought to have, but I have completed An Serious Review of this.
| if(A.RelayMouseDrag(src_object, over_object, src_location, over_location, src_control, over_control, params, src)) | ||
| return | ||
|
|
||
| if(over_object) |
There was a problem hiding this comment.
| if(over_object) | |
| if(over_object && !incapacitated()) |
| else if(!isturf(loc)) | ||
| var/atom/movable/AM = loc |
| var/brute_damage = 0 | ||
| var/burn_damage = 0 | ||
| var/max_damage = 60 | ||
| var/damage_state = 1 |
| dir = SOUTH | ||
|
|
||
| /obj/item/mech_component/proc/query_color(var/mob/living/user) | ||
| if(user) |
There was a problem hiding this comment.
| if(user) | |
| if(!istype(user)) | |
| return FALSE |
| /obj/item/mech_component/examine(mob/user) | ||
| . = ..() | ||
| if(ready_to_install()) | ||
| to_chat(user, SPAN_NOTICE("It is ready for installation.")) |
There was a problem hiding this comment.
. += SPAN_NOTICE("It is ready for installation.")
There was a problem hiding this comment.
Also need this format in every definition of show_missing_parts()
| else | ||
| if(!newloc) | ||
| newloc = get_step(src, direct) | ||
| if(newloc && legs && legs.can_move_on(loc, newloc)) | ||
| . = ..(newloc, direct) | ||
| next_step = world.time + legs.move_delay | ||
| if(. && !istype(loc, /turf/space)) | ||
| playsound(src.loc, mech_step_sound, 40, 1) | ||
| return . |
There was a problem hiding this comment.
| else | |
| if(!newloc) | |
| newloc = get_step(src, direct) | |
| if(newloc && legs && legs.can_move_on(loc, newloc)) | |
| . = ..(newloc, direct) | |
| next_step = world.time + legs.move_delay | |
| if(. && !istype(loc, /turf/space)) | |
| playsound(src.loc, mech_step_sound, 40, 1) | |
| return . | |
| . = FALSE | |
| if(!newloc) | |
| newloc = get_step(src, direct) | |
| if(newloc && legs && legs.can_move_on(loc, newloc)) | |
| . = ..(newloc, direct) | |
| next_step = world.time + legs.move_delay | |
| if(. && !istype(loc, /turf/space)) | |
| playsound(src.loc, mech_step_sound, 40, 1) |
All the previous return statements are explicitly returning FALSE anyways.
| /* | ||
| /datum/movement_handler/mob/space/exosuit | ||
| expected_host_type = /mob/living/exosuit | ||
|
|
||
| // Space movement | ||
| /datum/movement_handler/mob/space/exosuit/DoMove(var/direction, var/mob/mover) | ||
|
|
||
| if(!mob.check_solid_ground()) | ||
| mob.anchored = FALSE | ||
| var/allowmove = mob.Allow_Spacemove(0) | ||
| if(!allowmove) | ||
| return MOVEMENT_HANDLED | ||
| else if(allowmove == -1 && mob.handle_spaceslipping()) //Check to see if we slipped | ||
| return MOVEMENT_HANDLED | ||
| else | ||
| mob.inertia_dir = 0 //If not then we can reset inertia and move | ||
| else mob.anchored = TRUE | ||
|
|
||
| /datum/movement_handler/mob/space/exosuit/MayMove(var/mob/mover, var/is_external) | ||
| if((mover != host) && is_external) | ||
| return MOVEMENT_PROCEED | ||
|
|
||
| if(!mob.check_solid_ground()) | ||
| if(!mob.Allow_Spacemove(0)) | ||
| return MOVEMENT_STOP | ||
| return MOVEMENT_PROCEED | ||
|
|
||
| /mob/living/exosuit/lost_in_space() | ||
| for(var/atom/movable/AM in contents) | ||
| if(!AM.lost_in_space()) | ||
| return FALSE | ||
| return !pilots.len | ||
|
|
||
| /mob/living/exosuit/fall_damage() | ||
| return 100 //Exosuits are big and heavy | ||
|
|
||
| /mob/living/exosuit/handle_fall_effect(var/turf/landing) | ||
| // Return here if for any reason you shouldn´t take damage | ||
| ..() | ||
| var/damage = 30 //Enough to cause a malfunction if unlucky | ||
| apply_damage(rand(0, damage), BRUTE, BP_R_LEG) //Any leg is good, will damage both | ||
| */ |
| if(WT.welding) | ||
| cutting = TRUE |
| @@ -0,0 +1,216 @@ | |||
| #define BAR_CAP 12 | |||
There was a problem hiding this comment.
You should #undef this at the end of the file, or else it belongs in __defines
There was a problem hiding this comment.
Moved to the defines
| /obj/item/mech_component/manipulators/combat | ||
| name = "combat arms" | ||
| exosuit_desc_string = "flexible, advanced manipulators" | ||
| icon_state = "combat_arms" | ||
| melee_damage = 5 | ||
| action_delay = 10 | ||
| power_use = 50 |
There was a problem hiding this comment.
Should all the components defined in /premade go into files in /components that sort by component type, so it's easier to compare the different options?
…n exosuitmob instead of a pilot. R&D designs added.
desc adjustment
Creates initialize-only proc for exos that doesn't care about the user.
0549bfe to
e6f15eb
Compare
|
Am I doing something wrong or do rebases just, do that. |
Work on porting baymechs as exosuits, legally distinct from Mechs:tm: