Nanomachines, son

This commit is contained in:
TheEliminator16
2016-02-23 14:55:30 -07:00
parent 5da291a761
commit 93e28c342f
9 changed files with 210 additions and 21 deletions

View File

@@ -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>

View File

@@ -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)

View File

@@ -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

View File

@@ -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")

View File

@@ -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>")

View File

@@ -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"

View File

@@ -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
///////////////////////////////////////////////////////////////////////////////////

View 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