mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 10:01:40 +00:00
[READY] Ripley Rework (#42828)
* Bunches of changes Indeed, a whole barrel full * Update ripley.dm * Update mecha.dm * Update ripley.dm * Glad I'm testing this * herpaderp * Ripley MK-I to MK-II upgrade text goes here. Also fixed the pressure comments for step_in. * Various things. * First pass at fire also, sanity checks and reorganizations * Drop fire stacks to 5, max * bug fixes * A few contruction sprite tweaks * Some changes DNA lock is kept during conversion Maint_access setting is kept during conversion Name is kept if it is not the default MK-I name Typo 'enviroment' fixed * Requested changes * requested changes * This is not my bug, but I will fix it If the mech's radio is destroyed, it no longer run-times and breaks the view status popout. * Summary (required) * Indent-driven if statements are stupid * Found the plus key * Centered mech sprites noticed the side view sprites were a pixel off. * update_icon changes * thing
This commit is contained in:
@@ -469,3 +469,53 @@
|
||||
//NC.mergeConnectedNetworksOnTurf()
|
||||
last_piece = NC
|
||||
return 1
|
||||
|
||||
//Dunno where else to put this so shrug
|
||||
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade
|
||||
name = "Ripley MK-II Conversion Kit"
|
||||
desc = "A pressurized canopy attachment kit for an Autonomous Power Loader Unit \"Ripley\" MK-I mecha, to convert it to the slower, but space-worthy MK-II design. This kit cannot be removed, once applied."
|
||||
icon_state = "ripleyupgrade"
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/can_attach(obj/mecha/working/ripley/M)
|
||||
if(M.type != /obj/mecha/working/ripley)
|
||||
to_chat(loc, "<span class='warning'>This conversion kit can only be applied to APLU MK-I models.</span>")
|
||||
return FALSE
|
||||
if(M.cargo.len)
|
||||
to_chat(loc, "<span class='warning'>[M]'s cargo hold must be empty before this conversion kit can be applied.</span>")
|
||||
return FALSE
|
||||
if(!M.maint_access) //non-removable upgrade, so lets make sure the pilot or owner has their say.
|
||||
to_chat(loc, "<span class='warning'>[M] must have maintenance protocols active in order to allow this conversion kit.</span>")
|
||||
return FALSE
|
||||
if(M.occupant) //We're actualy making a new mech and swapping things over, it might get weird if players are involved
|
||||
to_chat(loc, "<span class='warning'>[M] must be unoccupied before this conversion kit can be applied.</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/attach(obj/mecha/M)
|
||||
var/obj/mecha/working/ripley/mkii/N = new /obj/mecha/working/ripley/mkii(get_turf(M),1)
|
||||
if(!N)
|
||||
return
|
||||
QDEL_NULL(N.cell)
|
||||
if (M.cell)
|
||||
N.cell = M.cell
|
||||
M.cell.forceMove(N)
|
||||
M.cell = null
|
||||
N.step_energy_drain = M.step_energy_drain //For the scanning module
|
||||
N.armor = N.armor.setRating(energy = M.armor["energy"]) //for the capacitor
|
||||
for(var/obj/item/mecha_parts/E in M.contents)
|
||||
if(istype(E, /obj/item/mecha_parts/concealed_weapon_bay)) //why is the bay not just a variable change who did this
|
||||
E.forceMove(N)
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/E in M.equipment) //Move the equipment over...
|
||||
E.detach()
|
||||
E.attach(N)
|
||||
M.equipment -= E
|
||||
N.dna_lock = M.dna_lock
|
||||
N.maint_access = M.maint_access
|
||||
N.strafe = M.strafe
|
||||
N.obj_integrity = M.obj_integrity //This is not a repair tool
|
||||
if (M.name != "\improper APLU MK-I \"Ripley\"")
|
||||
N.name = M.name
|
||||
M.wreckage = 0
|
||||
qdel(M)
|
||||
playsound(get_turf(N),'sound/items/ratchet.ogg',50,1)
|
||||
return
|
||||
@@ -80,6 +80,12 @@
|
||||
var/melee_cooldown = 10
|
||||
var/melee_can_hit = 1
|
||||
|
||||
var/silicon_pilot = FALSE //set to true if an AI or MMI is piloting.
|
||||
|
||||
var/enter_delay = 40 //Time taken to enter the mech
|
||||
var/enclosed = TRUE //Set to false for open-cockpit mechs
|
||||
var/silicon_icon_state = null //if the mech has a different icon when piloted by an AI or MMI
|
||||
|
||||
//Action datums
|
||||
var/datum/action/innate/mecha/mech_eject/eject_action = new
|
||||
var/datum/action/innate/mecha/mech_toggle_internals/internals_action = new
|
||||
@@ -127,7 +133,8 @@
|
||||
icon_state += "-open"
|
||||
add_radio()
|
||||
add_cabin()
|
||||
add_airtank()
|
||||
if (enclosed)
|
||||
add_airtank()
|
||||
spark_system.set_up(2, 0, src)
|
||||
spark_system.attach(src)
|
||||
smoke_system.set_up(3, src)
|
||||
@@ -145,6 +152,11 @@
|
||||
diag_hud_set_mechstat()
|
||||
diag_hud_set_mechtracking()
|
||||
|
||||
/obj/mecha/update_icon()
|
||||
if (silicon_pilot && silicon_icon_state)
|
||||
icon_state = silicon_icon_state
|
||||
. = ..()
|
||||
|
||||
/obj/mecha/get_cell()
|
||||
return cell
|
||||
|
||||
@@ -280,6 +292,11 @@
|
||||
to_chat(user, "It's equipped with:")
|
||||
for(var/obj/item/mecha_parts/mecha_equipment/ME in visible_equipment)
|
||||
to_chat(user, "[icon2html(ME, user)] \A [ME].")
|
||||
if(!enclosed)
|
||||
if(silicon_pilot)
|
||||
to_chat(user, "[src] appears to be piloting itself...")
|
||||
else if(occupant && occupant != user) //!silicon_pilot implied
|
||||
to_chat(user, "You can see [occupant] inside.")
|
||||
|
||||
//processing internal damage, temperature, air regulation, alert updates, lights power use.
|
||||
/obj/mecha/process()
|
||||
@@ -400,6 +417,11 @@
|
||||
diag_hud_set_mechstat()
|
||||
diag_hud_set_mechtracking()
|
||||
|
||||
/obj/mecha/fire_act() //Check if we should ignite the pilot of an open-canopy mech
|
||||
if (occupant && !enclosed && !silicon_pilot)
|
||||
if (occupant.fire_stacks < 5)
|
||||
occupant.fire_stacks += 1
|
||||
occupant.IgniteMob()
|
||||
|
||||
/obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits.
|
||||
return
|
||||
@@ -407,7 +429,7 @@
|
||||
/obj/mecha/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
. = ..()
|
||||
if(speaker == occupant)
|
||||
if(radio.broadcasting)
|
||||
if(radio?.broadcasting)
|
||||
radio.talk_into(speaker, text, , spans, message_language)
|
||||
//flick speech bubble
|
||||
var/list/speech_bubble_recipients = list()
|
||||
@@ -483,7 +505,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
events.fireEvent("onMove",get_turf(src))
|
||||
if (internal_tank.disconnect()) // Something moved us and broke connection
|
||||
if (internal_tank?.disconnect()) // Something moved us and broke connection
|
||||
occupant_message("<span class='warning'>Air port connection teared off!</span>")
|
||||
log_message("Lost connection to gas port.", LOG_MECHA)
|
||||
|
||||
@@ -509,7 +531,7 @@
|
||||
user.forceMove(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You climb out from [src].</span>")
|
||||
return 0
|
||||
if(internal_tank.connected_port)
|
||||
if(internal_tank?.connected_port)
|
||||
if(world.time - last_message > 20)
|
||||
occupant_message("<span class='warning'>Unable to move while connected to the air system port!</span>")
|
||||
last_message = world.time
|
||||
@@ -697,6 +719,7 @@
|
||||
AI.disconnect_shell()
|
||||
RemoveActions(AI, TRUE)
|
||||
occupant = null
|
||||
silicon_pilot = FALSE
|
||||
AI.forceMove(card)
|
||||
card.AI = AI
|
||||
AI.controlled_mech = null
|
||||
@@ -738,7 +761,9 @@
|
||||
AI.ai_restore_power()
|
||||
AI.forceMove(src)
|
||||
occupant = AI
|
||||
silicon_pilot = TRUE
|
||||
icon_state = initial(icon_state)
|
||||
update_icon()
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
if(!internal_damage)
|
||||
SEND_SOUND(occupant, sound('sound/mecha/nominal.ogg',volume=50))
|
||||
@@ -842,7 +867,7 @@
|
||||
|
||||
visible_message("[user] starts to climb into [name].")
|
||||
|
||||
if(do_after(user, 40, target = src))
|
||||
if(do_after(user, enter_delay, target = src))
|
||||
if(obj_integrity <= 0)
|
||||
to_chat(user, "<span class='warning'>You cannot get in the [name], it has been destroyed!</span>")
|
||||
else if(occupant)
|
||||
@@ -915,6 +940,7 @@
|
||||
var/mob/living/brainmob = mmi_as_oc.brainmob
|
||||
mmi_as_oc.mecha = src
|
||||
occupant = brainmob
|
||||
silicon_pilot = TRUE
|
||||
brainmob.forceMove(src) //should allow relaymove
|
||||
brainmob.reset_perspective(src)
|
||||
brainmob.remote_control = src
|
||||
@@ -956,6 +982,7 @@
|
||||
RemoveActions(occupant)
|
||||
occupant.gib() //If one Malf decides to steal a mech from another AI (even other Malfs!), they are destroyed, as they have nowhere to go when replaced.
|
||||
occupant = null
|
||||
silicon_pilot = FALSE
|
||||
return
|
||||
else
|
||||
if(!AI.linked_core)
|
||||
@@ -973,6 +1000,7 @@
|
||||
return
|
||||
var/mob/living/L = occupant
|
||||
occupant = null //we need it null when forceMove calls Exited().
|
||||
silicon_pilot = FALSE
|
||||
if(mob_container.forceMove(newloc))//ejecting mob container
|
||||
log_message("[mob_container] moved out.", LOG_MECHA)
|
||||
L << browse(null, "window=exosuit")
|
||||
@@ -1052,4 +1080,4 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013???
|
||||
/obj/mecha/update_remote_sight(mob/living/user)
|
||||
if(occupant_sight_flags)
|
||||
if(user == occupant)
|
||||
user.sight |= occupant_sight_flags
|
||||
user.sight |= occupant_sight_flags
|
||||
@@ -3,7 +3,8 @@
|
||||
/obj/mecha/proc/GrantActions(mob/living/user, human_occupant = 0)
|
||||
if(human_occupant)
|
||||
eject_action.Grant(user, src)
|
||||
internals_action.Grant(user, src)
|
||||
if(enclosed)
|
||||
internals_action.Grant(user, src)
|
||||
cycle_action.Grant(user, src)
|
||||
lights_action.Grant(user, src)
|
||||
stats_action.Grant(user, src)
|
||||
|
||||
@@ -171,36 +171,29 @@
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "Internal armor is installed."
|
||||
"desc" = "Outer plating is installed."
|
||||
),
|
||||
|
||||
//17
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
"desc" = "Internal armor is wrenched."
|
||||
"desc" = "Outer Plating is wrenched."
|
||||
),
|
||||
|
||||
//18
|
||||
list(
|
||||
"key" = /obj/item/stack/sheet/plasteel,
|
||||
"amount" = 5,
|
||||
"key" = /obj/item/stack/rods,
|
||||
"amount" = 10,
|
||||
"back_key" = TOOL_WELDER,
|
||||
"desc" = "Internal armor is welded."
|
||||
"desc" = "Outer Plating is welded."
|
||||
),
|
||||
|
||||
//19
|
||||
list(
|
||||
"key" = TOOL_WRENCH,
|
||||
"back_key" = TOOL_CROWBAR,
|
||||
"desc" = "External armor is installed."
|
||||
),
|
||||
|
||||
//20
|
||||
list(
|
||||
"key" = TOOL_WELDER,
|
||||
"back_key" = TOOL_WRENCH,
|
||||
"desc" = "External armor is wrenched."
|
||||
"back_key" = TOOL_WIRECUTTER,
|
||||
"desc" = "Cockpit wire screen is installed."
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
var/answer = {"<b>Name:</b> [M.name]<br>
|
||||
<b>Integrity:</b> [round((M.obj_integrity/M.max_integrity*100), 0.01)]%<br>
|
||||
<b>Cell Charge:</b> [isnull(cell_charge)?"Not Found":"[M.cell.percent()]%"]<br>
|
||||
<b>Airtank:</b> [round(M.return_pressure(), 0.01)] kPa<br>
|
||||
<b>Airtank:</b> [M.internal_tank?"[round(M.return_pressure(), 0.01)]":"Not Equipped"] kPa<br>
|
||||
<b>Pilot:</b> [M.occupant||"None"]<br>
|
||||
<b>Location:</b> [get_area_name(M, TRUE)||"Unknown"]<br>
|
||||
<b>Active Equipment:</b> [M.selected||"None"]"}
|
||||
|
||||
@@ -113,6 +113,9 @@
|
||||
|
||||
|
||||
/obj/mecha/bullet_act(obj/item/projectile/Proj) //wrapper
|
||||
if (!enclosed && occupant && !silicon_pilot) //allows bullets to hit the pilot of open-canopy mechs
|
||||
occupant.bullet_act(Proj) //If the sides are open, the occupant can be hit
|
||||
return BULLET_ACT_HIT
|
||||
log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).", LOG_MECHA, color="red")
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -71,19 +71,24 @@
|
||||
/obj/mecha/proc/get_stats_part()
|
||||
var/integrity = obj_integrity/max_integrity*100
|
||||
var/cell_charge = get_charge()
|
||||
var/datum/gas_mixture/int_tank_air = internal_tank.return_air()
|
||||
var/tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None"
|
||||
var/tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown"
|
||||
var/cabin_pressure = round(return_pressure(),0.01)
|
||||
var/datum/gas_mixture/int_tank_air = 0
|
||||
var/tank_pressure = 0
|
||||
var/tank_temperature = 0
|
||||
var/cabin_pressure = 0
|
||||
if (internal_tank)
|
||||
int_tank_air = internal_tank.return_air()
|
||||
tank_pressure = internal_tank ? round(int_tank_air.return_pressure(),0.01) : "None"
|
||||
tank_temperature = internal_tank ? int_tank_air.temperature : "Unknown"
|
||||
cabin_pressure = round(return_pressure(),0.01)
|
||||
. = {"[report_internal_damage()]
|
||||
[integrity<30?"<span class='userdanger'>DAMAGE LEVEL CRITICAL</span><br>":null]
|
||||
<b>Integrity: </b> [integrity]%<br>
|
||||
<b>Powercell charge: </b>[isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]<br>
|
||||
<b>Air source: </b>[use_internal_tank?"Internal Airtank":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[tank_pressure]kPa<br>
|
||||
<b>Airtank temperature: </b>[tank_temperature]°K|[tank_temperature - T0C]°C<br>
|
||||
<b>Cabin pressure: </b>[cabin_pressure>WARNING_HIGH_PRESSURE ? "<span class='danger'>[cabin_pressure]</span>": cabin_pressure]kPa<br>
|
||||
<b>Cabin temperature: </b> [return_temperature()]°K|[return_temperature() - T0C]°C<br>
|
||||
<b>Air source: </b>[internal_tank?"[use_internal_tank?"Internal Airtank":"Environment"]":"Environment"]<br>
|
||||
<b>Airtank pressure: </b>[internal_tank?"[tank_pressure]kPa":"N/A"]<br>
|
||||
<b>Airtank temperature: </b>[internal_tank?"[tank_temperature]°K|[tank_temperature - T0C]°C":"N/A"]<br>
|
||||
<b>Cabin pressure: </b>[internal_tank?"[cabin_pressure>WARNING_HIGH_PRESSURE ? "<span class='danger'>[cabin_pressure]</span>": cabin_pressure]kPa":"N/A"]<br>
|
||||
<b>Cabin temperature: </b> [internal_tank?"[return_temperature()]°K|[return_temperature() - T0C]°C":"N/A"]<br>
|
||||
[dna_lock?"<b>DNA-locked:</b><br> <span style='font-size:10px;letter-spacing:-1px;'>[dna_lock]</span> \[<a href='?src=[REF(src)];reset_dna=1'>Reset</a>\]<br>":""]<br>
|
||||
[thrusters_action.owner ? "<b>Thrusters: </b> [thrusters_active ? "Enabled" : "Disabled"]<br>" : ""]
|
||||
[defense_action.owner ? "<b>Defence Mode: </b> [defence_mode ? "Enabled" : "Disabled"]<br>" : ""]
|
||||
@@ -100,14 +105,14 @@
|
||||
<div class='header'>Electronics</div>
|
||||
<div class='links'>
|
||||
<b>Radio settings:</b><br>
|
||||
Microphone: <a href='?src=[REF(src)];rmictoggle=1'><span id="rmicstate">[radio.broadcasting?"Engaged":"Disengaged"]</span></a><br>
|
||||
Speaker: <a href='?src=[REF(src)];rspktoggle=1'><span id="rspkstate">[radio.listening?"Engaged":"Disengaged"]</span></a><br>
|
||||
Microphone: [radio? "<a href='?src=[REF(src)];rmictoggle=1'><span id=\"rmicstate\">[radio.broadcasting?"Engaged":"Disengaged"]</span></a>":"Error"]<br>
|
||||
Speaker: [radio? "<a href='?src=[REF(src)];rspktoggle=1'><span id=\"rspkstate\">[radio.listening?"Engaged":"Disengaged"]</span></a>":"Error"]<br>
|
||||
Frequency:
|
||||
<a href='?src=[REF(src)];rfreq=-10'>-</a>
|
||||
<a href='?src=[REF(src)];rfreq=-2'>-</a>
|
||||
<span id="rfreq">[format_frequency(radio.frequency)]</span>
|
||||
<a href='?src=[REF(src)];rfreq=2'>+</a>
|
||||
<a href='?src=[REF(src)];rfreq=10'>+</a><br>
|
||||
[radio? "<a href='?src=[REF(src)];rfreq=-10'>-</a>":"-"]
|
||||
[radio? "<a href='?src=[REF(src)];rfreq=-2'>-</a>":"-"]
|
||||
<span id="rfreq">[radio?"[format_frequency(radio.frequency)]":"Error"]</span>
|
||||
[radio? "<a href='?src=[REF(src)];rfreq=2'>+</a>":"+"]
|
||||
[radio? "<a href='?src=[REF(src)];rfreq=10'>+</a><br>":"+"]
|
||||
</div>
|
||||
</div>
|
||||
<div class='wr'>
|
||||
@@ -115,7 +120,7 @@
|
||||
<div class='links'>
|
||||
<a href='?src=[REF(src)];toggle_id_upload=1'><span id='t_id_upload'>[add_req_access?"L":"Unl"]ock ID upload panel</span></a><br>
|
||||
<a href='?src=[REF(src)];toggle_maint_access=1'><span id='t_maint_access'>[maint_access?"Forbid":"Permit"] maintenance protocols</span></a><br>
|
||||
<a href='?src=[REF(src)];toggle_port_connection=1'><span id='t_port_connection'>[internal_tank.connected_port?"Disconnect from":"Connect to"] gas port</span></a><br>
|
||||
[internal_tank?"<a href='?src=[REF(src)];toggle_port_connection=1'><span id='t_port_connection'>[internal_tank.connected_port?"Disconnect from":"Connect to"] gas port</span></a><br>":""]
|
||||
<a href='?src=[REF(src)];dna_lock=1'>DNA-lock</a><br>
|
||||
<a href='?src=[REF(src)];change_name=1'>Change exosuit name</a><br>
|
||||
</div>
|
||||
|
||||
@@ -161,6 +161,23 @@
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
|
||||
/obj/structure/mecha_wreckage/ripley/mkii
|
||||
name = "\improper Ripley MK-II wreckage"
|
||||
icon_state = "ripleymkii-broken"
|
||||
|
||||
/obj/structure/mecha_wreckage/ripley/mkii/Initialize()
|
||||
. = ..()
|
||||
var/list/parts = list(/obj/item/mecha_parts/part/ripley_torso,
|
||||
/obj/item/mecha_parts/part/ripley_left_arm,
|
||||
/obj/item/mecha_parts/part/ripley_right_arm,
|
||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||
/obj/item/mecha_parts/part/ripley_right_leg)
|
||||
for(var/i = 0; i < 2; i++)
|
||||
if(parts.len && prob(40))
|
||||
var/part = pick(parts)
|
||||
welder_salvage += part
|
||||
parts -= part
|
||||
|
||||
|
||||
/obj/structure/mecha_wreckage/ripley/firefighter
|
||||
name = "\improper Firefighter wreckage"
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
/obj/mecha/working/ripley
|
||||
desc = "Autonomous Power Loader Unit. This newer model is refitted with powerful armour against the dangers of planetary mining."
|
||||
name = "\improper APLU \"Ripley\""
|
||||
desc = "Autonomous Power Loader Unit MK-I. Designed primarily around heavy lifting, the Ripley can be outfitted with utility equipment to fill a number of roles."
|
||||
name = "\improper APLU MK-I \"Ripley\""
|
||||
icon_state = "ripley"
|
||||
step_in = 4 //Move speed, lower is faster.
|
||||
var/fast_pressure_step_in = 2 //step_in while in normal pressure conditions
|
||||
var/slow_pressure_step_in = 4 //step_in while in better pressure conditions
|
||||
silicon_icon_state = "ripley-empty"
|
||||
step_in = 1.5 //Move speed, lower is faster.
|
||||
var/fast_pressure_step_in = 1.5 //step_in while in low pressure conditions
|
||||
var/slow_pressure_step_in = 2.0 //step_in while in normal pressure conditions
|
||||
max_temperature = 20000
|
||||
max_integrity = 200
|
||||
lights_power = 7
|
||||
@@ -16,6 +17,9 @@
|
||||
var/list/cargo = new
|
||||
var/cargo_capacity = 15
|
||||
var/hides = 0
|
||||
enclosed = FALSE //Normal ripley has an open cockpit design
|
||||
enter_delay = 10 //can enter in a quarter of the time of other mechs
|
||||
opacity = FALSE //Ripley has a window
|
||||
|
||||
/obj/mecha/working/ripley/Move()
|
||||
. = ..()
|
||||
@@ -56,33 +60,67 @@
|
||||
else
|
||||
add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open")
|
||||
|
||||
/obj/mecha/working/ripley/check_for_internal_damage(list/possible_int_damage,ignore_threshold=null)
|
||||
if (!enclosed)
|
||||
possible_int_damage -= (MECHA_INT_TEMP_CONTROL + MECHA_INT_TANK_BREACH) //if we don't even have an air tank, these two doesn't make a ton of sense.
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/armor_plate,3,/obj/item/stack/sheet/animalhide/goliath_hide,list("melee" = 10, "bullet" = 5, "laser" = 5))
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/mkii
|
||||
desc = "Autonomous Power Loader Unit MK-II. This prototype Ripley is refitted with a pressurized cabin, trading its prior speed for atmospheric protection"
|
||||
name = "\improper APLU MK-II \"Ripley\""
|
||||
icon_state = "ripleymkii"
|
||||
fast_pressure_step_in = 2 //step_in while in low pressure conditions
|
||||
slow_pressure_step_in = 4 //step_in while in normal pressure conditions
|
||||
step_in = 4
|
||||
armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/mkii
|
||||
enclosed = TRUE
|
||||
enter_delay = 40
|
||||
silicon_icon_state = null
|
||||
opacity = TRUE
|
||||
|
||||
/obj/mecha/working/ripley/firefighter
|
||||
desc = "Autonomous Power Loader Unit. This model is refitted with additional thermal protection."
|
||||
name = "\improper APLU \"Firefighter\""
|
||||
desc = "Autonomous Power Loader Unit MK-III. This model is refitted with a pressurized cabin and additional thermal protection."
|
||||
name = "\improper APLU MK-III \"Firefighter\""
|
||||
icon_state = "firefighter"
|
||||
max_temperature = 65000
|
||||
max_integrity = 250
|
||||
fast_pressure_step_in = 2 //step_in while in low pressure conditions
|
||||
slow_pressure_step_in = 4 //step_in while in normal pressure conditions
|
||||
step_in = 4
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
lights_power = 7
|
||||
armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
max_equip = 5 // More armor, less tools
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/firefighter
|
||||
enclosed = TRUE
|
||||
enter_delay = 40
|
||||
silicon_icon_state = null
|
||||
opacity = TRUE
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/deathripley
|
||||
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
|
||||
name = "\improper DEATH-RIPLEY"
|
||||
icon_state = "deathripley"
|
||||
fast_pressure_step_in = 2 //step_in while in low pressure conditions
|
||||
slow_pressure_step_in = 4 //step_in while in normal pressure conditions
|
||||
step_in = 4
|
||||
slow_pressure_step_in = 3
|
||||
opacity=0
|
||||
lights_power = 7
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/deathripley
|
||||
step_energy_drain = 0
|
||||
enclosed = TRUE
|
||||
enter_delay = 40
|
||||
silicon_icon_state = null
|
||||
opacity = TRUE
|
||||
|
||||
/obj/mecha/working/ripley/deathripley/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -476,6 +476,15 @@
|
||||
category = list("Phazon")
|
||||
|
||||
//Exosuit Equipment
|
||||
/datum/design/ripleyupgrade
|
||||
name = "Ripley MK-1 to MK-II conversion kit"
|
||||
id = "ripleyupgrade"
|
||||
build_type = MECHFAB
|
||||
build_path = /obj/item/mecha_parts/mecha_equipment/ripleyupgrade
|
||||
materials = list(MAT_METAL=10000,MAT_PLASMA=10000)
|
||||
construction_time = 100
|
||||
category = list("Exosuit Equipment")
|
||||
|
||||
/datum/design/mech_hydraulic_clamp
|
||||
name = "Exosuit Engineering Equipment (Hydraulic Clamp)"
|
||||
id = "mech_hydraulic_clamp"
|
||||
@@ -677,7 +686,7 @@
|
||||
materials = list(MAT_METAL = 15000, MAT_GLASS = 15000, MAT_PLASMA = 8000, MAT_URANIUM = 8000)
|
||||
construction_time = 80
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
|
||||
/datum/design/borg_upgrade_piercinghypospray
|
||||
name = "Cyborg Upgrade (Piercing Hypospray)"
|
||||
id = "borg_upgrade_piercinghypospray"
|
||||
@@ -695,7 +704,7 @@
|
||||
materials = list(MAT_METAL = 8000, MAT_GLASS = 5000, MAT_SILVER = 4000, MAT_GOLD = 3000)
|
||||
construction_time = 80
|
||||
category = list("Cyborg Upgrade Modules")
|
||||
|
||||
|
||||
/datum/design/borg_upgrade_surgicalprocessor
|
||||
name = "Cyborg Upgrade (Surgical Processor)"
|
||||
id = "borg_upgrade_surgicalprocessor"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
display_name = "Mechanical Exosuits"
|
||||
description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human."
|
||||
design_ids = list("mecha_tracking", "mechacontrol", "mechapower", "mech_recharger", "ripley_chassis", "firefighter_chassis", "ripley_torso", "ripley_left_arm", "ripley_right_arm", "ripley_left_leg", "ripley_right_leg",
|
||||
"ripley_main", "ripley_peri", "mech_hydraulic_clamp")
|
||||
"ripley_main", "ripley_peri", "ripleyupgrade", "mech_hydraulic_clamp")
|
||||
|
||||
/datum/techweb_node/mech_tools
|
||||
id = "mech_tools"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 152 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
Reference in New Issue
Block a user