Skip to content
This repository was archived by the owner on May 22, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions code/_globalvars/lists/mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,5 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(
/mob/living/simple_animal/hostile/megafauna/bubblegum = 6,
/mob/living/simple_animal/hostile/megafauna/colossus = 2,
/mob/living/simple_animal/hostile/megafauna/dragon = 4,
/mob/living/simple_animal/hostile/megafauna/stalwart = 3,
))
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

/obj/effect/projectile/impact/plasma_cutter
name = "plasma impact"
icon_state = "impact_plasmacutter"
icon_state = "impact_purple"

/obj/effect/projectile/impact/stun
name = "stun impact"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
icon_state = "muzzle_u_laser"

/obj/effect/projectile/muzzle/plasma_cutter
icon_state = "muzzle_plasmacutter"
icon_state = "muzzle_purple"

/obj/effect/projectile/muzzle/stun
icon_state = "muzzle_stun"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@

/obj/effect/projectile/tracer/plasma_cutter
name = "plasma blast"
icon_state = "plasmacutter"
icon_state = "beam_purple"

/obj/effect/projectile/tracer/stun
name = "stun beam"
Expand Down
38 changes: 38 additions & 0 deletions code/game/objects/items/gems.dm
Original file line number Diff line number Diff line change
Expand Up @@ -168,4 +168,42 @@
. = ..()
AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE)

/obj/item/ai_cpu/stalwart //very jank code-theft because it's not directly a gem
name = "\improper Bluespace Data Crystal"
desc = "A large bluespace crystal, etched internally with nano-circuits, it seemingly draws power from nowhere. Once acting as the brain of the Stalwart, perhaps this could be used in an AI server?"
icon = 'icons/obj/gems.dmi'
icon_state = "cpu"
materials = list(/datum/material/bluespace=24000)
speed = 20
base_power_usage = 0.5 * AI_CPU_BASE_POWER_USAGE/5
minimum_max_power = 0.5
maximum_max_power = 10.0
minimum_growth = 2.0
maximum_growth = 8.0
light_range = 2
light_power = 6
light_color = "#0004ff"
///Have we been analysed with a mining scanner?
var/analysed = FALSE
///How many points we grant to whoever discovers us
var/point_value = 2000

/obj/item/ai_cpu/stalwart/attackby(obj/item/item, mob/living/user, params) //Stolen directly from geysers, removed the internal gps
if(!istype(item, /obj/item/mining_scanner) && !istype(item, /obj/item/t_scanner/adv_mining_scanner))
return ..()

if(analysed)
to_chat(user, span_warning("This gem has already been analysed!"))
return
else
to_chat(user, span_notice("You analyse the precious gemstone!"))
analysed = TRUE

if(isliving(user))
var/mob/living/living = user

var/obj/item/card/id/card = living.get_idcard()
if(card)
to_chat(user, span_notice("[point_value] mining points have been paid out!"))
card.mining_points += point_value
playsound(src, 'sound/machines/ping.ogg', 15, TRUE)
6 changes: 6 additions & 0 deletions code/modules/cargo/bounties/gems.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,9 @@
description = "Central Command's Research Director is particularly interested in the anomalous effects of this gem. Ship one over and he'll pay us directly."
reward = 40000
wanted_types = list(/obj/item/gem/dark)

/datum/bounty/item/gems/stalwart
name = "Bluespace Data Crystal"
description = "Central Command's Research Director is extatic over the possible uses and internal structure of this gem. Ship one over and he'll pay us directly."
reward = 16500
wanted_types = list(/obj/item/ai_cpu/stalwart)
11 changes: 9 additions & 2 deletions code/modules/cargo/exports/lavaland.dm
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,11 @@
/obj/item/prisoncube,
/obj/item/staff/storm,
/obj/item/clothing/under/drip, //Drip is very valuable to many investors in high fashion
/obj/item/clothing/shoes/drip)
/obj/item/clothing/shoes/drip,
/obj/item/gun/energy/plasmacutter/adv/robocutter,
/obj/item/twohanded/bonespear/stalwartpike)

//Megafauna loot, except for ash drakes and legion
//Megafauna loot, except for stalwart, ash drakes, and legion

/datum/export/lavaland/megafauna
cost = 40000
Expand Down Expand Up @@ -113,3 +115,8 @@
cost = 20000
unit_name = "Dark Salt Lick"
export_types = list(/obj/item/gem/dark)

/datum/export/lavaland/gems/stalwart
cost = 9800
unit_name = "Bluespace Data Crystal"
export_types = list(/obj/item/ai_cpu/stalwart)
105 changes: 97 additions & 8 deletions code/modules/mining/lavaland/necropolis_chests.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1656,20 +1656,109 @@ GLOBAL_LIST_EMPTY(bloodmen_list)
z_level_check = FALSE

//Stalwart
/obj/structure/closet/crate/sphere/stalwart
name = "silvery capsule"
desc = "It feels cold to the touch..."

/obj/structure/closet/crate/sphere/stalwart/PopulateContents()
new /obj/item/gun/energy/plasmacutter/adv/robocutter

/obj/item/gun/energy/plasmacutter/adv/robocutter
name = "energized powercutter"
desc = "Ripped out of an ancient machine, this self-recharging cutter is unmatched."
name = "ancient focusing crystal"
desc = "A humming crystaline weapon, firing scattered blasts of focused energy."
fire_delay = 4
icon = 'icons/obj/guns/energy.dmi'
icon_state = "robocutter"
ammo_type = list(/obj/item/ammo_casing/energy/plasma/stalwart)
materials = list(/datum/material/bluespace = 8000, /datum/material/diamond = 2000, /datum/material/dilithium = 2000)
usesound = list('sound/weapons/taserhit.ogg')
toolspeed = 0.33 //funky bluespace welding effect idk
selfcharge = 1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF

/obj/item/twohanded/bonespear/stalwartpike
icon = 'icons/obj/weapons/spears.dmi'
icon_state = "stalwart_spear0"
lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
name = "ancient control rod"
//don't want your rare megafauna loot shattering easily
max_integrity = 2000
desc = "A mysterious crystaline rod of exceptional length, humming with ancient power. Too unweildy for use in one hand."
wielded_stats = list(SWING_SPEED = 0.8, ENCUMBRANCE = 0.2, ENCUMBRANCE_TIME = 2, REACH = 3, DAMAGE_LOW = 0, DAMAGE_HIGH = 0)
w_class = WEIGHT_CLASS_SMALL
var/w_class_on = WEIGHT_CLASS_HUGE
slot_flags = ITEM_SLOT_BELT
force = 0
throwforce = 0
throw_speed = 4
materials = list(/datum/material/bluespace = 8000, /datum/material/diamond = 2000, /datum/material/dilithium = 2000)
sharpness = SHARP_NONE
block_chance = 0
var/ranged_cooldown = 0 //shamelessly stolen from hostile mobs
var/ranged_cooldown_time = 40
var/projectiles_per_fire = 1
var/fauna_damage_bonus = 22
var/fauna_damage_type = BRUTE
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF

/obj/item/twohanded/bonespear/stalwartpike/update_icon()
. = ..()
if(wielded)
icon_state = "stalwart_spear1"
else
icon_state = "stalwart_spear0"
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_TYPE_BLOOD)

/obj/item/twohanded/bonespear/stalwartpike/wield(mob/living/carbon/M)
. = ..()
if(wielded)
playsound(src, 'sound/magic/summonitems_generic.ogg', 50, 1)
sharpness = SHARP_POINTY
w_class = w_class_on
block_chance = 10
force = 8

/obj/item/twohanded/bonespear/stalwartpike/unwield(mob/living/carbon/M)
if(wielded)
playsound(src, 'sound/magic/teleport_diss.ogg', 50, 1)
sharpness = initial(sharpness)
w_class = initial(w_class)
force = initial(force)
block_chance = initial(block_chance)
. = ..()

/obj/item/twohanded/bonespear/stalwartpike/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity || !wielded)
return
if(isliving(target))
var/mob/living/L = target
if(ismegafauna(L) || istype(L, /mob/living/simple_animal/hostile/asteroid))
L.apply_damage(fauna_damage_bonus,fauna_damage_type)
playsound(L, 'sound/magic/blind.ogg', 100, 1)

/obj/structure/closet/crate/sphere/stalwart
name = "silvery capsule"
desc = "It feels cold to the touch..."

/obj/structure/closet/crate/sphere/stalwart/PopulateContents()
var/loot = rand(1,4)
switch(loot)
if(1)
new /obj/item/gun/energy/plasmacutter/adv/robocutter(src)
new /obj/item/gem/purple(src)
if(2)
new /obj/item/twohanded/bonespear/stalwartpike(src)
new /obj/item/ai_cpu/stalwart(src)
if(3)
new /obj/item/stack/ore/bluespace_crystal/artificial(src)
new /obj/item/stack/ore/dilithium_crystal(src)
new /obj/item/stack/ore/dilithium_crystal(src)
new /obj/item/stack/ore/dilithium_crystal(src)
new /obj/item/stack/ore/dilithium_crystal(src)
new /obj/item/gem/purple(src)
if(4)
new /obj/item/stack/ore/bluespace_crystal/artificial(src)
new /obj/item/stack/ore/bluespace_crystal/artificial(src)
new /obj/item/stack/ore/bluespace_crystal/artificial(src)
new /obj/item/stack/ore/bluespace_crystal/artificial(src)
new /obj/item/ai_cpu/stalwart(src)

//Just some minor stuff
/obj/structure/closet/crate/necropolis/puzzle
name = "puzzling chest"
Expand Down
Loading