From 9edf034fa9b468cadcc92a1df2e9d385c1df08f2 Mon Sep 17 00:00:00 2001 From: Core0verload Date: Sat, 9 Jul 2016 09:17:43 +0300 Subject: [PATCH] Changes a bit how hardsuit jetpack upgrade works (#19165) Hardsuit jetpack upgrade item is replaced by an actual jetpack - the same as the one that exists inside the upgraded suit. It still can't be used separately. Hardsuit jetpack has hardsuit jetpack sprites instead of voidsuit pack. You can remove jetpack from hardsuit by using screwdriver on it. Unrelated: Fixes mining vendor UI a bit: items with long names no longer take two lines. Changes staff of storms path to actual staff. --- .../objects/items/weapons/tanks/jetpack.dm | 35 +++++++++++++----- .../closets/secure/engineering.dm | 2 +- code/modules/clothing/spacesuits/hardsuit.dm | 28 ++++++++++++++ code/modules/mining/equipment.dm | 22 ----------- code/modules/mining/machine_vending.dm | 4 +- .../simple_animal/hostile/megafauna/legion.dm | 6 +-- icons/obj/tank.dmi | Bin 8256 -> 9128 bytes 7 files changed, 59 insertions(+), 38 deletions(-) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 39222a1e0ea..2fa876a5891 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -13,8 +13,9 @@ /obj/item/weapon/tank/jetpack/New() ..() - air_contents.assert_gas(gas_type) - air_contents.gases[gas_type][MOLES] = (6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C) + if(gas_type) + air_contents.assert_gas(gas_type) + air_contents.gases[gas_type][MOLES] = (6 * ONE_ATMOSPHERE) * volume / (R_IDEAL_GAS_EQUATION * T20C) ion_trail = new ion_trail.set_up(src) @@ -110,20 +111,34 @@ distribute_pressure = 0 gas_type = "co2" + /obj/item/weapon/tank/jetpack/suit - name = "suit inbuilt jetpack" - desc = "A device that will use your internals tank as a gas source for propulsion." - icon_state = "jetpack-void" - item_state = "jetpack-void" + name = "hardsuit jetpack upgrade" + desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment." + origin_tech = "materials=4;magnets=4;engineering=5" + icon_state = "jetpack-upgrade" + item_state = "jetpack-black" + w_class = 3 actions_types = list(/datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization) + volume = 1 + slot_flags = null + gas_type = null + var/datum/gas_mixture/temp_air_contents var/obj/item/weapon/tank/internals/tank = null /obj/item/weapon/tank/jetpack/suit/New() ..() STOP_PROCESSING(SSobj, src) - air_contents = null + temp_air_contents = air_contents + +/obj/item/weapon/tank/jetpack/suit/attack_self() + return /obj/item/weapon/tank/jetpack/suit/cycle(mob/user) + if(!istype(loc, /obj/item/clothing/suit/space/hardsuit)) + user << "\The [src] must be connected to a hardsuit!" + return + var/mob/living/carbon/human/H = user if(!istype(H.s_store, /obj/item/weapon/tank/internals)) user << "You need a tank in your suit storage!" @@ -131,7 +146,7 @@ ..() /obj/item/weapon/tank/jetpack/suit/turn_on() - if(!ishuman(loc.loc)) + if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) return var/mob/living/carbon/human/H = loc.loc tank = H.s_store @@ -141,12 +156,12 @@ /obj/item/weapon/tank/jetpack/suit/turn_off() tank = null - air_contents = null + air_contents = temp_air_contents STOP_PROCESSING(SSobj, src) ..() /obj/item/weapon/tank/jetpack/suit/process() - if(!ishuman(loc.loc)) + if(!istype(loc, /obj/item/clothing/suit/space/hardsuit) || !ishuman(loc.loc)) turn_off() return var/mob/living/carbon/human/H = loc.loc diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index d2a495459ef..cdc875701cb 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -11,7 +11,7 @@ new /obj/item/clothing/head/welding(src) new /obj/item/clothing/gloves/color/yellow(src) new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/hardsuit_jetpack(src) + new /obj/item/weapon/tank/jetpack/suit(src) new /obj/item/weapon/cartridge/ce(src) new /obj/item/device/radio/headset/heads/ce(src) new /obj/item/weapon/storage/toolbox/mechanical(src) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index f3c478ce9e7..c439f511d1d 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -88,6 +88,34 @@ jetpack = new jetpack(src) ..() +/obj/item/clothing/suit/space/hardsuit/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/tank/jetpack/suit)) + if(jetpack) + user << "[src] already has a jetpack installed." + return + if(src == user.get_item_by_slot(slot_wear_suit)) //Make sure the player is not wearing the suit before applying the upgrade. + user << "You cannot install the upgrade to [src] while wearing it." + return + + if(user.unEquip(I)) + jetpack = I + I.loc = src + user << "You successfully install the jetpack into [src]." + + else if(istype(I, /obj/item/weapon/screwdriver)) + if(!jetpack) + user << "[src] has no jetpack installed." + return + if(src == user.get_item_by_slot(slot_wear_suit)) + user << "You cannot remove the jetpack from [src] while wearing it." + return + + jetpack.turn_off() + jetpack.loc = get_turf(src) + jetpack = null + user << "You successfully remove the jetpack from [src]." + + /obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot) ..() if(jetpack) diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm index fdb6380e264..85924dd4a0f 100644 --- a/code/modules/mining/equipment.dm +++ b/code/modules/mining/equipment.dm @@ -441,28 +441,6 @@ icon = 'icons/obj/mining.dmi' icon_state = "xeno_warning" -/******************Hardsuit Jetpack Upgrade*******************/ -/obj/item/hardsuit_jetpack - name = "hardsuit jetpack upgrade" - icon_state = "jetpack_upgrade" - desc = "A modular, compact set of thrusters designed to integrate with a hardsuit. It is fueled by a tank inserted into the suit's storage compartment." - origin_tech = "materials=4;magnets=4;engineering=5" - // Same as jetpack implant minus biotech, makes sense. - - -/obj/item/hardsuit_jetpack/afterattack(var/obj/item/clothing/suit/space/hardsuit/S, mob/user) - ..() - if(!istype(S)) - user << "This upgrade can only be applied to a hardsuit." - else if(S.jetpack) - user << "[S] already has a jetpack installed." - else if(S == user.get_item_by_slot(slot_wear_suit)) //Make sure the player is not wearing the suit before applying the upgrade. - user << "You cannot install the upgrade to [S] while wearing it." - else - S.jetpack = new /obj/item/weapon/tank/jetpack/suit(S) - user << "You successfully install the jetpack into [S]." - qdel(src) - /*********************Hivelord stabilizer****************/ /obj/item/weapon/hivelordstabilizer diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 3452702bc39..9eb0589ee6b 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -33,7 +33,7 @@ new /datum/data/mining_equipment("Fulton Pack", /obj/item/weapon/extraction_pack, 1000), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000), - new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/hardsuit_jetpack, 2000), + new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/weapon/tank/jetpack/suit, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000), new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000), new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000), @@ -94,7 +94,7 @@ else dat += "No ID inserted. Insert ID.
" dat += "" - dat += "
Equipment point cost list:
" + dat += "
Equipment point cost list:
" for(var/datum/data/mining_equipment/prize in prize_list) dat += "" dat += "
[prize.equipment_name][prize.cost]Purchase
" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index b638a9bd4da..2d89ef46456 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -107,7 +107,7 @@ Difficulty: Medium last_legion = FALSE break if(last_legion) - src.loot = list(/obj/item/weapon/staff_of_storms) + src.loot = list(/obj/item/weapon/staff/storm) else if(prob(5)) src.loot = list(/obj/structure/closet/crate/necropolis/tendril) ..() @@ -124,7 +124,7 @@ Difficulty: Medium //Loot -/obj/item/weapon/staff_of_storms +/obj/item/weapon/staff/storm name = "staff of storms" desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it." icon_state = "staffofstorms" @@ -138,7 +138,7 @@ Difficulty: Medium hitsound = 'sound/weapons/sear.ogg' var/storm_cooldown = 0 -/obj/item/weapon/staff_of_storms/attack_self(mob/user) +/obj/item/weapon/staff/storm/attack_self(mob/user) if(storm_cooldown > world.time) user << "The staff is still recharging!" return diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index d1bd812c93a77600939585ce1f7ae9e2fae44862..7087814bb8b44143d059b91566338acc6e850f57 100644 GIT binary patch literal 9128 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 ah3Ct?G?079+ll)E2hi0r)U3K|7yVz}yT*P1 delta 8064 zcmXX~1y~es(BGpwq#FbYNkybNLb^Mpq(wmLklK@wl2DM4I1~_2I;9(wmPUc28;;Hc zzWaaQx6iZt%(L(A?9A*tGr##2skX}}ae;h+MrOXx9DQDRyL$P$dU^mrKvs5&wnw-K zMdb7ab)JLf55@kE+R8?iYGv@=04$H2aQC#7f3UZIziD$S!Rk(A+cKOJ>kn$cvP3-= zx2GSE#~68+4sYK+aOP7af3WMFdcxHtH^{^$LXlEYi854m>bl2~9d++{`4Onz%@%$DX1ai-|BrDcy=zaC8lsQ9kB`y^0 z+Ryy>V9uUa?!)&KhN6RH~(DO{l}c~@LWIdlYJ%1rNC^= z?gQ<#ec9CNuSsxh)#Mnjg=feZ{mBOGb#44~vHf?QW76d_oSU^20F z;m$tvP}A~n=dGE7U(qbSv`rvm&T+*%0AL+cf2Lp*khPZ`WM;IH-Ph(UFAotGAtEAB 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