Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Revival] Lost crates of lemuria #37226

Open
wants to merge 72 commits into
base: Bleeding-Edge
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
a4a420d
Lost crates of lemuria revival
SECBATON-GRIFFON Oct 3, 2024
1c58271
makes bait less annoying to work with
SECBATON-GRIFFON Oct 3, 2024
1f4b508
bit more leeway
SECBATON-GRIFFON Oct 3, 2024
097b330
cleaner
SECBATON-GRIFFON Oct 3, 2024
91c3bbd
forgot this
SECBATON-GRIFFON Oct 3, 2024
4b9ae1b
most work on this begun, needs finishing and testing
SECBATON-GRIFFON Oct 3, 2024
cdfd697
some more work
SECBATON-GRIFFON Oct 3, 2024
23d1756
makes this actually take the pan OFF! turns out it was not coded to w…
SECBATON-GRIFFON Oct 3, 2024
5956fb6
marge
SECBATON-GRIFFON Oct 3, 2024
cdbcdc9
now the pan should show up
SECBATON-GRIFFON Oct 3, 2024
3039c89
Update lostcrate.dm
SECBATON-GRIFFON Oct 3, 2024
9d2b615
cleans this up
SECBATON-GRIFFON Oct 3, 2024
8deaa1d
more of it
SECBATON-GRIFFON Oct 3, 2024
159b2da
not needed after all
SECBATON-GRIFFON Oct 3, 2024
c5ab9bb
cleaner lines
SECBATON-GRIFFON Oct 3, 2024
69cb677
gives this a better icon
SECBATON-GRIFFON Oct 3, 2024
f1f82f1
now it works?
SECBATON-GRIFFON Oct 3, 2024
db37fa3
what was meant to happen
SECBATON-GRIFFON Oct 3, 2024
c1fdbc7
probably better
SECBATON-GRIFFON Oct 3, 2024
cd973ce
transferring now finally works, sprites do not
SECBATON-GRIFFON Oct 3, 2024
c0d8280
moves everything into this
SECBATON-GRIFFON Oct 3, 2024
403af75
compile fixes
SECBATON-GRIFFON Oct 3, 2024
c2bdb06
last bits
SECBATON-GRIFFON Oct 3, 2024
50676bb
moves this here too
SECBATON-GRIFFON Oct 3, 2024
e73f6ce
putting it into practice
SECBATON-GRIFFON Oct 3, 2024
e09a35d
gets this ready for the next bit
SECBATON-GRIFFON Oct 3, 2024
e049d21
ports it to here too!
SECBATON-GRIFFON Oct 3, 2024
06aab3c
cleans this up
SECBATON-GRIFFON Oct 3, 2024
4bb70f3
knew something was off
SECBATON-GRIFFON Oct 3, 2024
1174f89
cuts this down
SECBATON-GRIFFON Oct 3, 2024
02a3e39
sanity
SECBATON-GRIFFON Oct 3, 2024
f0e29ae
more cutdown
SECBATON-GRIFFON Oct 3, 2024
03d306c
ah that's why they showed up wrong
SECBATON-GRIFFON Oct 3, 2024
1257ef0
creates the find datum on all mineral turfs just so that the measurin…
SECBATON-GRIFFON Oct 3, 2024
0a95608
Merge branch 'Bleeding-Edge' into lemuria-revival
SECBATON-GRIFFON Oct 4, 2024
61f575e
makes all this not so dependant on there being finds
SECBATON-GRIFFON Oct 4, 2024
2f05c84
catches this
SECBATON-GRIFFON Oct 4, 2024
e4750ed
makes all of this a weakref just to be sure there's no hard dels
SECBATON-GRIFFON Oct 4, 2024
be2ec21
Update finds_container.dm
SECBATON-GRIFFON Oct 4, 2024
77ac30e
basis of the mule painter!
SECBATON-GRIFFON Oct 4, 2024
845f2db
sprites
SECBATON-GRIFFON Oct 4, 2024
5ad4b2b
gets this working
SECBATON-GRIFFON Oct 4, 2024
802081c
it works! just the finishing touch now
SECBATON-GRIFFON Oct 4, 2024
1f98d1f
should now show up in sand
SECBATON-GRIFFON Oct 4, 2024
b90dc02
how could i forget this
SECBATON-GRIFFON Oct 4, 2024
4cc47ba
sanity
SECBATON-GRIFFON Oct 4, 2024
3cd6bea
adds visual cue it's been modified
SECBATON-GRIFFON Oct 4, 2024
6ab329a
indents...
SECBATON-GRIFFON Oct 4, 2024
72bd6f0
covers this
SECBATON-GRIFFON Oct 4, 2024
9375914
gives this its own icon now
SECBATON-GRIFFON Oct 4, 2024
d6e63ea
stop doing this vscode
SECBATON-GRIFFON Oct 4, 2024
bb207a3
some preset types
SECBATON-GRIFFON Oct 4, 2024
7d5f244
helper for admins
SECBATON-GRIFFON Oct 4, 2024
508b550
gets this going
SECBATON-GRIFFON Oct 4, 2024
72f9d01
gives this a unique icon too
SECBATON-GRIFFON Oct 4, 2024
dbe37e5
nice opening animation
SECBATON-GRIFFON Oct 4, 2024
9984549
icon fix, plus allows bait to do this when created
SECBATON-GRIFFON Oct 4, 2024
ad6b564
better routing computer sprite
SECBATON-GRIFFON Oct 4, 2024
92bee6b
ok but really
SECBATON-GRIFFON Oct 4, 2024
3d58bf6
makes this look less ugly when dug
SECBATON-GRIFFON Oct 4, 2024
27ff82c
Update finds_container.dm
SECBATON-GRIFFON Oct 4, 2024
44c0cd5
maybe like this
SECBATON-GRIFFON Oct 4, 2024
7c08ce5
beginning of test to make this look less ugly
SECBATON-GRIFFON Oct 4, 2024
8ba5370
ae
SECBATON-GRIFFON Oct 4, 2024
f238d08
good system, extendable
SECBATON-GRIFFON Oct 4, 2024
b4c8a60
Update unsimulated.dm
SECBATON-GRIFFON Oct 4, 2024
74831ed
trying this
SECBATON-GRIFFON Oct 4, 2024
11bb159
ideal colors now finallyyyy
SECBATON-GRIFFON Oct 4, 2024
b4f6b39
this is so much trial and error
SECBATON-GRIFFON Oct 4, 2024
7dc6a95
new iconsss
SECBATON-GRIFFON Oct 5, 2024
18bfac1
makes it look nicer
SECBATON-GRIFFON Oct 5, 2024
41a451f
forgot to remove these here!
SECBATON-GRIFFON Oct 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions code/datums/components/cooktop.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
if(!isobj(parent))
return FALSE
parent.register_event(/event/attackhand, src, nameof(src::on_attackhand()))
parent.register_event(/event/item_attack_self, src, nameof(src::on_attackself()))
parent.register_event(/event/attackby, src, nameof(src::on_attackby()))
parent.register_event(/event/examined, src, nameof(src::on_examine()))
return TRUE

/datum/component/cooktop/Destroy()
parent.unregister_event(/event/attackhand, src, nameof(src::on_attackhand()))
parent.unregister_event(/event/item_attack_self, src, nameof(src::on_attackself()))
parent.unregister_event(/event/attackby, src, nameof(src::on_attackby()))
parent.unregister_event(/event/examined, src, nameof(src::on_examine()))
..()
Expand All @@ -24,6 +26,16 @@
P.render_cookvessel()
P.remove_particles()

/datum/component/cooktop/proc/on_attackself(mob/user)
var/obj/P = parent
if(P.cookvessel && ismob(user))
if(user.put_in_inactive_hand(P.cookvessel))
P.cookvessel.cook_stop()
P.cookvessel = null
P.on_cook_stop()
P.render_cookvessel()
P.remove_particles()

/datum/component/cooktop/proc/on_attackby(mob/attacker, obj/item/item)
var/obj/P = parent
if(P.cookvessel)
Expand Down
41 changes: 26 additions & 15 deletions code/game/machinery/bots/mulebot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot
name = "\improper MULEbot"
desc = "A Multiple Utility Load Effector bot."
icon_state = "mulebot0"
icon_state = "mulebot"
icon_initial = "mulebot"
density = 1
anchored = 1
Expand Down Expand Up @@ -80,6 +80,7 @@ var/global/mulebot_count = 0
var/honk_cooldown = 1 SECONDS //how often a pAI-controlled MULEbot can damage a mob by running over them
var/coolingdown = FALSE
var/honk_coolingdown = FALSE
var/list/bot_sprites = list("default","flames","cargonia","gold")

// Technically if we were true to form, the navbeacon should've an insider radio which would be sending the signal rather than sending the signal itself
// The gain in functionality if it were to be implented is negligeble for a lot of confusing code
Expand Down Expand Up @@ -129,6 +130,14 @@ var/global/mulebot_count = 0

..()

/obj/machinery/bot/mulebot/update_icon()
overlays.Cut()
if(!on && open)
overlays += image(icon,src,"mulebot-hatch")
else if(on && mode != MODE_WAITING && wires.MobAvoid() != 0)
overlays += image(icon,src,"mulebot1")
..()

// attack by item
// emag : lock/unlock,
// screwdriver: open/close hatch
Expand All @@ -155,14 +164,12 @@ var/global/mulebot_count = 0
return
I.playtoolsound(src, 25, extrarange = -6)
open = !open
var/openword = "close"
if(open)
src.visible_message("[user] opens the maintenance hatch of [src]", "<span class='notice'>You open [src]'s maintenance hatch.</span>")
openword = "open"
on = 0
icon_state="[icon_initial]-hatch"
else
src.visible_message("[user] closes the maintenance hatch of [src]", "<span class='notice'>You close [src]'s maintenance hatch.</span>")
icon_state = "[icon_initial]0"

src.visible_message("[user] [openword]s the maintenance hatch of [src]", "<span class='notice'>You [openword] [src]'s maintenance hatch.</span>")
update_icon()
updateDialog()
else if (I.is_wrench(user) && user.a_intent != I_HURT)
if (src.health < maxHealth)
Expand All @@ -187,8 +194,12 @@ var/global/mulebot_count = 0
/obj/machinery/bot/mulebot/emag_act(mob/user)
toggle_lock(user, TRUE)
to_chat(user, "<span class='notice'>You [locked ? "lock" : "unlock"] [src]'s controls!</span>")
flick("[icon_initial]-emagged", src)
playsound(src, 'sound/effects/sparks1.ogg', 100, 0)
if(!(on && mode != MODE_WAITING && wires.MobAvoid() != 0))
overlays += image(icon,src,"mulebot1")
overlays += image(icon,src,"mulebot-emagged")
spawn(4)
update_icon()

/obj/machinery/bot/mulebot/ex_act(var/severity)
unload(0)
Expand Down Expand Up @@ -337,7 +348,7 @@ var/global/mulebot_count = 0
if ("pause")
if(mode != MODE_WAITING)
mode = MODE_WAITING
icon_state = "[icon_initial]0"
update_icon()
else
mode = MODE_IDLE
if ("clear_queue")
Expand Down Expand Up @@ -374,7 +385,7 @@ var/global/mulebot_count = 0
if("power")
if (src.on)
turn_off()
icon_state = "[icon_initial]0"
update_icon()
else if (cell && !open)
turn_on()
else
Expand Down Expand Up @@ -408,7 +419,7 @@ var/global/mulebot_count = 0
if("stop")
if(mode != MODE_WAITING)
mode = MODE_WAITING
icon_state = "[icon_initial]0"
update_icon()
updateDialog()

if("go")
Expand Down Expand Up @@ -505,7 +516,7 @@ var/global/mulebot_count = 0

/obj/machinery/bot/mulebot/turn_off()
..()
icon_state = "[icon_initial]0"
update_icon()
summoned = FALSE
target = null
destination = ""
Expand Down Expand Up @@ -683,7 +694,7 @@ var/global/mulebot_count = 0
mode = MODE_MOVING
else
mode = MODE_IDLE
icon_state = "[icon_initial][(wires.MobAvoid() != 0)]"
update_icon()

/obj/machinery/bot/mulebot/set_destination(var/new_dest)
astar_debug_mulebots("Requesting a path to [new_dest]")
Expand Down Expand Up @@ -1003,7 +1014,7 @@ var/global/mulebot_count = 0
if(!on || remaining_steps <= 0 || !path.len || mode == MODE_WAITING)
return FALSE
//Ok, we're on, we're not done, and we have a path.
icon_state = "[icon_initial][(wires.MobAvoid() != 0)]"
update_icon()
set_glide_size(DELAY2GLIDESIZE(SS_WAIT_BOTS/steps_per))
if(!process_astar_path()) // Process the pathfinding. This handles most movement/delivery stuff.
//And if there are problems processing, go here.
Expand Down Expand Up @@ -1086,7 +1097,7 @@ var/global/mulebot_count = 0
destination = ""
target = null
summoned = FALSE
icon_state = "[icon_initial]0"
update_icon()
if(!destinations_queue.len && current_order.returning && current_order.loc_description != home_destination)
//Finished our current task, nothing in the queue, we're not home? Let's go home.
start_home()
Expand Down
132 changes: 0 additions & 132 deletions code/game/objects/items/trader.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,61 +3,6 @@
* Feel free to add stuff. Don't forget to add them to the vmachine afterwards.
*/

/area/vault/mecha_graveyard

/obj/item/weapon/disk/shuttle_coords/vault/mecha_graveyard
name = "Coordinates to the Mecha Graveyard"
desc = "Here lay the dead steel of lost mechas, so says some gypsy."
destination = /obj/docking_port/destination/vault/mecha_graveyard

/obj/docking_port/destination/vault/mecha_graveyard
areaname = "mecha graveyard"

/datum/map_element/dungeon/mecha_graveyard
file_path = "maps/randomvaults/dungeons/mecha_graveyard.dmm"
unique = TRUE

/obj/effect/decal/mecha_wreckage/graveyard_ripley
name = "Ripley wreckage"
desc = "Surprisingly well preserved."
icon_state = "ripley-broken"

/obj/effect/decal/mecha_wreckage/graveyard_ripley/New()
..()
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)
welder_salvage += parts

if(prob(80))
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/drill,100)
else
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill,100)
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/hydraulic_clamp,100)
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/jetpack,100)

/obj/effect/decal/mecha_wreckage/graveyard_clarke
name = "Clarke wreckage"
desc = "Surprisingly well preserved."
icon_state = "clarke-broken"

/obj/effect/decal/mecha_wreckage/graveyard_clarke/New()
..()
var/list/parts = list(
/obj/item/mecha_parts/part/clarke_torso,
/obj/item/mecha_parts/part/clarke_head,
/obj/item/mecha_parts/part/clarke_left_arm,
/obj/item/mecha_parts/part/clarke_right_arm,
/obj/item/mecha_parts/part/clarke_left_tread,
/obj/item/mecha_parts/part/clarke_right_tread)
welder_salvage += parts

add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/collector,100)
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/tiler,100)
add_salvagable_equipment(new /obj/item/mecha_parts/mecha_equipment/tool/switchtool,100)

/obj/item/weapon/mech_expansion_kit
name = "exosuit expansion kit"
desc = "All the equipment you need to replace that useless legroom with a useful bonus equipment slot on your mech."
Expand Down Expand Up @@ -279,80 +224,3 @@
return ..()
myvac.whrr(get_turf(target))
return 1

/obj/item/weapon/fakeposter_kit
name = "cargo cache kit"
desc = "Used to create a hidden cache behind what appears to be a cargo poster."
icon = 'icons/obj/barricade.dmi'
icon_state = "barricade_kit"
w_class = W_CLASS_MEDIUM
w_type = RECYK_WOOD
flammable = TRUE

/obj/item/weapon/fakeposter_kit/preattack(atom/target, mob/user , proximity)
if(!proximity)
return
if(istype(target,/turf/simulated/wall))
playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, 1)
if(do_after(user,target,4 SECONDS))
to_chat(user,"<span class='notice'>Using the kit, you hollow out the wall and hang the poster in front.</span>")
var/obj/structure/fakecargoposter/FCP = new(target)
FCP.access_loc = get_turf(user)
qdel(src)
return 1
else
return ..()

/obj/structure/fakecargoposter
icon = 'icons/obj/posters.dmi'
var/obj/item/weapon/storage/cargocache/cash
var/turf/access_loc

/obj/structure/fakecargoposter/New()
..()
var/datum/poster/type = pick(/datum/poster/special/cargoflag,/datum/poster/special/cargofull)
icon_state = initial(type.icon_state)
desc = initial(type.desc)
name = initial(type.name)
cash = new(src)

/obj/structure/fakecargoposter/examine(mob/user)
..()
if(user.loc == access_loc)
to_chat(user, "<span class='info'>Upon closer inspection, there's a hidden cache behind it accessible with a free hand.</span>")

/obj/structure/fakecargoposter/Destroy()
for(var/atom/movable/A in cash.contents)
A.forceMove(loc)
QDEL_NULL(cash)
..()

/obj/structure/fakecargoposter/attackby(var/obj/item/weapon/W, mob/user)
if(iswelder(W))
visible_message("<span class='warning'>[user] is destroying the hidden cache disguised as a poster!</span>")
var/obj/item/tool/weldingtool/WT=W
if(WT.do_weld(user, src, 10 SECONDS, 5))
visible_message("<span class='warning'>[user] destroyed the hidden cache!</span>")
qdel(src)
else if(user.loc == access_loc)
cash.attackby(W,user)
else
..()

/obj/structure/fakecargoposter/attack_hand(mob/user)
if(user.loc == access_loc)
cash.AltClick(user)

/obj/item/weapon/storage/cargocache
name = "cargo cache"
desc = "A large hidey hole for all your goodies."
icon = 'icons/obj/posters.dmi'
icon_state = "cargoposter-flag"
fits_max_w_class = W_CLASS_LARGE
max_combined_w_class = 28
slot_flags = 0

/obj/item/weapon/storage/cargocache/distance_interact(mob/user)
if(istype(loc,/obj/structure/fakecargoposter) && user.Adjacent(loc))
return TRUE
return FALSE
8 changes: 4 additions & 4 deletions code/game/objects/structures/vehicles/gigadrill.dm
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,13 @@
var/turf/unsimulated/mineral/M = target
if(M.mining_difficulty > MINE_DIFFICULTY_TOUGH)
return
if(M.finds && M.finds.len) //Shameless copypaste. TODO: Make an actual proc for this then apply it to mechs as well.
if(M.finddatum?.finds?.len) //Shameless copypaste. TODO: Make an actual proc for this then apply it to mechs as well.
if(prob(5))
M.excavate_find(5, M.finds[1])
M.finddatum.excavate_find(5, M.finddatum.finds[1])
else if(prob(50))
M.finds.Remove(M.finds[1])
M.finddatum.finds.Remove(M.finddatum.finds[1])
if(prob(50))
M.artifact_debris()
M.finddatum.artifact_debris()
M.GetDrilled()
if(OB)
var/count = 0
Expand Down
6 changes: 5 additions & 1 deletion code/game/turfs/unsimulated.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@
intact = 1
name = "command"
oxygen = MOLES_O2STANDARD
nitrogen = MOLES_N2STANDARD
nitrogen = MOLES_N2STANDARD
var/datum/finds/finddatum // for xenoarch, common supertype

/turf/unsimulated/proc/color_finds()
return "#ffffff"
4 changes: 2 additions & 2 deletions code/modules/admin/artifacts_panel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,9 @@
for (var/turf/unsimulated/mineral/M in SSxenoarch.artifact_spawning_turfs)
if (!istype(M))
continue
if (!M.artifact_find)
if (!M.finddatum || !M.finddatum.artifact_find)
continue
var/datum/artifact_find/A = M.artifact_find
var/datum/artifact_find/A = M.finddatum.artifact_find
dat += {"<tr>
<td>[A.artifact_id]</td>
<td><b>Buried</b> <a href='?src=\ref[src];artifactpanel_jumpto=\ref[M]'>([M.x],[M.y],[M.z])</a></td>
Expand Down
Loading
Loading