mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 16:14:13 +00:00
Nanomachines, son
This commit is contained in:
@@ -739,7 +739,6 @@ var/global/floorIsLava = 0
|
||||
<A href='?src=\ref[src];secretsfun=meaty_gores'>Trigger an Organic Debris Field</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=lightsout'>Toggle a "lights out" event</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=mass_hallucination'>Cause the crew to hallucinate</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=mass_drunk'>Cause the crew to become drunk</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=ionstorm'>Spawn an Ion Storm</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=spacevines'>Spawn Space-Vines</A><BR>
|
||||
<A href='?src=\ref[src];secretsfun=comms_blackout'>Trigger a communication blackout</A><BR>
|
||||
|
||||
@@ -3082,11 +3082,6 @@
|
||||
feedback_add_details("admin_secrets_fun_used","SILM")
|
||||
message_admins("[key_name_admin(usr)] has spawned meteors without a command alert.", 1)
|
||||
new /datum/event/meteor_shower/meteor_quiet
|
||||
if("mass_drunk")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","MASD")
|
||||
message_admins("[key_name_admin(usr)] gave the station a vodka enema.", 1)
|
||||
new /datum/event/mass_drunk
|
||||
if(usr)
|
||||
log_admin("[key_name(usr)] used secret [href_list["secretsfun"]]")
|
||||
if(ok)
|
||||
|
||||
@@ -45,7 +45,6 @@ var/list/event_last_fired = list()
|
||||
possibleEvents[/datum/event/infestation] = 50
|
||||
possibleEvents[/datum/event/communications_blackout] = 25
|
||||
possibleEvents[/datum/event/thing_storm/meaty_gore] = 25
|
||||
possibleEvents[/datum/event/mass_drunk] = 15
|
||||
|
||||
if(active_with_role["AI"] > 0 || active_with_role["Cyborg"] > 0)
|
||||
possibleEvents[/datum/event/ionstorm] = 30
|
||||
|
||||
@@ -4,16 +4,3 @@
|
||||
/datum/event/mass_hallucination/start()
|
||||
for(var/mob/living/carbon/C in living_mob_list)
|
||||
C.hallucination += rand(100, 250)
|
||||
|
||||
/datum/event/mass_drunk
|
||||
startWhen = 10
|
||||
announceWhen = 0
|
||||
|
||||
/datum/event/mass_drunk/start()
|
||||
for(var/mob/living/carbon/C in living_mob_list)
|
||||
C.dizziness = 18
|
||||
C.confused = 18
|
||||
C.stuttering = 20
|
||||
|
||||
datum/event/mass_drunk/announce()
|
||||
command_alert("The station is about to pass through a cloud of unknown chemical composition. Chemical infiltration into the air supply is possible.", "Unknown Chemical Cloud")
|
||||
|
||||
@@ -19,6 +19,17 @@
|
||||
size = SIZE_BIG
|
||||
move_to_delay = 4
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
var/stance_step = 0
|
||||
|
||||
/mob/living/simple_animal/hostile/monster/skrite
|
||||
name = "skrite"
|
||||
desc = "A highly predatory being with two dripping claws."
|
||||
@@ -48,4 +59,29 @@
|
||||
/obj/item/projectile/energy/neurotox
|
||||
damage = 10
|
||||
damage_type = TOX
|
||||
icon_state = "toxin"
|
||||
icon_state = "toxin"
|
||||
|
||||
/mob/living/simple_animal/hostile/monster/cyber_horror
|
||||
name = "cyber horror"
|
||||
desc = "What was once a man, twisted and warped by machine."
|
||||
icon_state = "cyber_horror"
|
||||
icon_dead = "cyber_horror_dead"
|
||||
icon_gib = "cyber_horror_dead"
|
||||
speak = list("H@!#$$P M@!$#", "GHAA!@@#", "KR@!!N")
|
||||
speak_emote = list("emits", "groans")
|
||||
speak_chance = 15
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
maxHealth = 70
|
||||
health = 70
|
||||
melee_damage_lower = 5
|
||||
melee_damage_upper = 15
|
||||
attacktext = "flails around and hits"
|
||||
move_to_delay = 5
|
||||
|
||||
/mob/living/simple_animal/hostile/monster/cyber_horror/Life(var/mob/living/simple_animal/hostile/monster/cyber_horror/M)
|
||||
..()
|
||||
|
||||
if(health<maxHealth)
|
||||
health=health+2 //Created by misuse of medical nanobots, so it heals
|
||||
visible_message("<span class='warning'>[src]'s wounds heal slightly!</span>")
|
||||
@@ -2257,6 +2257,150 @@
|
||||
if((prob(10) && method == TOUCH) || method == INGEST)
|
||||
M.contract_disease(new /datum/disease/xeno_transformation(0), 1)
|
||||
|
||||
/datum/reagent/nanobots
|
||||
name = "Nanobots"
|
||||
id = "nanobots"
|
||||
description = "Microscopic robots intended for use in humans. Must be loaded with further chemicals to be useful."
|
||||
reagent_state = LIQUID
|
||||
color = "#3E3959" //rgb: 62, 57, 89
|
||||
|
||||
/datum/reagent/mednanobots //Great healing powers. Metabolizes extremely slowly, but gets used up when it heals damage.
|
||||
name = "Medical Nanobots"
|
||||
id = "mednanobots"
|
||||
description = "Microscopic robots intended for use in humans. Configured for rapid healing upon infiltration into the body."
|
||||
reagent_state = LIQUID
|
||||
color = "#593948" //rgb: 89, 57, 72
|
||||
custom_metabolism = 0.005
|
||||
|
||||
/datum/reagent/mednanobots/on_mob_life(var/mob/living/M)
|
||||
|
||||
if(..()) return 1
|
||||
|
||||
switch(volume)
|
||||
if(1 to 5)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/datum/organ/external/affecting = H.get_organ()
|
||||
for(var/datum/wound/W in affecting.wounds)
|
||||
spawn(1)
|
||||
affecting.wounds -= W
|
||||
H.visible_message("<span class='warning'>[H]'s wounds close up in the blink of an eye!</span>")
|
||||
if(H.getOxyLoss()>0 && prob(90))
|
||||
if(holder.has_reagent("mednanobots"))
|
||||
H.adjustOxyLoss(-4)
|
||||
holder.remove_reagent("mednanobots", 4/40)
|
||||
else
|
||||
if(H.getBruteLoss()>0 && prob(90))
|
||||
if(holder.has_reagent("mednanobots"))
|
||||
H.heal_organ_damage(5, 0)
|
||||
holder.remove_reagent("mednanobots", 5/40)
|
||||
else
|
||||
if(H.getFireLoss()>0 && prob(90))
|
||||
if(holder.has_reagent("mednanobots"))
|
||||
H.heal_organ_damage(0, 5)
|
||||
holder.remove_reagent("mednanobots", 5/40)
|
||||
else
|
||||
if(H.getToxLoss()>0 && prob(50))
|
||||
if(holder.has_reagent("mednanobots"))
|
||||
H.adjustToxLoss(-2)
|
||||
holder.remove_reagent("mednanobots", 2/40)
|
||||
else
|
||||
if(H.getCloneLoss()>0 && prob(60))
|
||||
if(holder.has_reagent("mednanobots"))
|
||||
H.adjustCloneLoss(-2)
|
||||
holder.remove_reagent("mednanobots", 2/40)
|
||||
if(H.dizziness != 0)
|
||||
H.dizziness = max(0, H.dizziness - 15)
|
||||
if(H.confused != 0)
|
||||
H.confused = max(0, H.confused - 5)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
D.spread = "Remissive"
|
||||
D.stage--
|
||||
if(D.stage < 1)
|
||||
D.cure()
|
||||
if(5 to INFINITY)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
to_chat(H, "<b><span class='warning'>Something doesn't feel right...</span></b>")
|
||||
spawn(6)
|
||||
to_chat(H, "<b><span class='warning'>Something bursts out from inside you!</span></b>")
|
||||
H.visible_message("<b><span class='warning'>[H]'s body rips aparts to reveal something underneath!</b></span>")
|
||||
new /mob/living/simple_animal/hostile/monster/cyber_horror(H.loc)
|
||||
H.gib()
|
||||
|
||||
/datum/reagent/comnanobots
|
||||
name = "Combat Nanobots"
|
||||
id = "comnanobots"
|
||||
description = "Microscopic robots intended for use in humans. Configured to grant great resistance to damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#343F42" //rgb: 52, 63, 66
|
||||
custom_metabolism = 0.01
|
||||
var/has_been_armstrong = 0
|
||||
var/armstronged_at = 0 //world.time
|
||||
data = 1 //Used as a tally
|
||||
|
||||
/datum/reagent/comnanobots/reagent_deleted()
|
||||
|
||||
if(..()) return 1
|
||||
|
||||
if(!holder)
|
||||
return
|
||||
var/mob/M = holder.my_atom
|
||||
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!has_been_armstrong || (!(M_HULK in H.mutations)))
|
||||
return
|
||||
dehulk(H, 0, 1, 0)
|
||||
|
||||
/datum/reagent/comnanobots/on_mob_life(var/mob/living/M)
|
||||
|
||||
if(..()) return 1
|
||||
|
||||
switch(volume)
|
||||
if(1 to 4.5)
|
||||
M.Jitter(5)
|
||||
if(prob(10))
|
||||
to_chat(M, "You feel slightly energized, but nothing happens")
|
||||
if(has_been_armstrong>0) //Added in case person metabolizes below 5 units to prevent infinite hulk
|
||||
dehulk(M)
|
||||
if(4.5 to 10)
|
||||
if(ishuman(M)) //Does nothing to non-humans.
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.name != "Dionae") //Dionae are broken as fuck
|
||||
if(H.hulk_time<world.time && !has_been_armstrong)
|
||||
H.hulk_time = world.time + (45 SECONDS)
|
||||
armstronged_at = H.hulk_time
|
||||
if(!(M_HULK in H.mutations))
|
||||
has_been_armstrong = 1
|
||||
H.mutations.Add(M_HULK)
|
||||
H.update_mutations() //Update our mutation overlays
|
||||
H.update_body()
|
||||
message_admins("[key_name(M)] is hopped up on combat nanobots! ([formatJumpTo(M)])")
|
||||
to_chat(H, "The nanobots supercharge your body!")
|
||||
else if(H.hulk_time<world.time && has_been_armstrong) //TIME'S UP
|
||||
dehulk(H)
|
||||
//else if(prob(1))
|
||||
//H.say(pick("NANOMACHINES, SON", "DON'T FUCK WITH THIS SENATOR"))
|
||||
if(10 to INFINITY)
|
||||
to_chat(M, "<b><big>The nanobots tear your body apart!</b></big>")
|
||||
M.gib()
|
||||
message_admins("[key_name(M)] took too many nanobots and gibbed!([formatJumpTo(M)])")
|
||||
|
||||
|
||||
data++
|
||||
|
||||
|
||||
/datum/reagent/comnanobots/proc/dehulk(var/mob/living/carbon/human/H, damage = 0, override_remove = 1, gib = 0)
|
||||
|
||||
H.hulk_time = 0 //Just to be sure.
|
||||
H.mutations.Remove(M_HULK)
|
||||
holder.remove_reagent("comnanobots", holder.get_reagent_amount("comnanobots"))
|
||||
//M.dna.SetSEState(HULKBLOCK,0)
|
||||
H.update_mutations() //update our mutation overlays
|
||||
H.update_body()
|
||||
to_chat(H, "The nanobots burn themselves out in your body.")
|
||||
|
||||
//Foam precursor
|
||||
/datum/reagent/fluorosurfactant
|
||||
name = "Fluorosurfactant"
|
||||
|
||||
@@ -651,7 +651,26 @@ datum
|
||||
explosion(get_turf(holder.my_atom),1,2,4)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
nanobots
|
||||
name = "Nanobots"
|
||||
id = "nanobots"
|
||||
result = "nanobots"
|
||||
required_reagents = list("nanites" = 1, "uranium" = 10, "gold" = 10, "nutriment" = 10, "silicon" = 10)
|
||||
result_amount = 2
|
||||
|
||||
mednanobots
|
||||
name = "Medical Nanobots"
|
||||
id = "mednanobots"
|
||||
result = "mednanobots"
|
||||
required_reagents = list("nanobots" = 1, "doctorsdelight" = 5)
|
||||
result_amount = 1
|
||||
|
||||
comnanobots
|
||||
name = "Combat Nanobots"
|
||||
id = "comnanobots"
|
||||
result = "comnanobots"
|
||||
required_reagents = list("nanobots" = 1, "mutagen" = 5, "silicate" = 5, "iron" = 10)
|
||||
result_amount = 1
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
10
html/changelogs/elimnanomachines.yml
Normal file
10
html/changelogs/elimnanomachines.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
author: TheEliminator16
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: Added NANOMACHINES, SON.
|
||||
- rscadd: Base nanobots do nothing but act as a stepping stone to the other varieties.
|
||||
- rscadd: Medical Nanobots heal you very quickly and metabolize very very slowly when not being used to heal. They also cure viruses.
|
||||
- rscadd: Combat Nanobots act as a downside-free version of creatine.
|
||||
- rscadd: Taking too many nanobots at a time has dire consequences.
|
||||
- rscadd: Added cyber horror, a monster who punishes naughty children who misuse nanobots.
|
||||
- rscdel: Removed mass drunkenness event.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 302 KiB After Width: | Height: | Size: 311 KiB |
Reference in New Issue
Block a user