everything but mob stuff

This commit is contained in:
Poojawa
2018-04-23 01:06:17 -05:00
parent cc6b320f83
commit 5518efebea
111 changed files with 978 additions and 3448 deletions
@@ -120,6 +120,7 @@
health = maxHealth
name = "blob zombie"
desc = "A shambling corpse animated by the blob."
mob_biotypes += MOB_HUMANOID
melee_damage_lower += 8
melee_damage_upper += 11
movement_type = GROUND
File diff suppressed because it is too large Load Diff
@@ -1,82 +0,0 @@
/datum/borer_chem
var/chemname
var/chem_desc = "This is a chemical"
var/chem_message //Text sent to the host when injecting chemicals
var/chemuse = 30
var/quantity = 10
/datum/borer_chem/epinephrine
chemname = "epinephrine"
chem_desc = "Stabilizes critical condition and slowly restores oxygen damage. If overdosed, it will deal toxin and oxyloss damage."
chem_message = "<span class='notice'>You feel your energy being replenished and it becomes easier to breathe!</span>"
/datum/borer_chem/leporazine
chemname = "leporazine"
chem_desc = "This keeps a patient's body temperature stable. High doses can allow short periods of unprotected EVA."
chemuse = 75
chem_message = "<span class='notice'>You no longer feel heat or cold, as leporazine floods your system.</span>"
/datum/borer_chem/mannitol
chemname = "mannitol"
chem_desc = "Heals brain damage."
chem_message = "<span class='notice'>You feel your mind focus more easily, as your system is flooded with mannitol.</span>"
/datum/borer_chem/bicaridine
chemname = "bicaridine"
chem_desc = "Heals brute damage."
chem_message = "<span class='notice'>A wave of flesh-knitting bicaridine flows through your bloodstream.</span>"
/datum/borer_chem/kelotane
chemname = "kelotane"
chem_desc = "Heals burn damage."
chem_message = "<span class='notice'>A stream of burn-healing kelotane spreads throughout your body.</span>"
/datum/borer_chem/charcoal
chemname = "charcoal"
chem_desc = "Slowly heals toxin damage, will also slowly remove any other chemicals."
chem_message = "<span class='notice'>A measure of toxin-purging charcoal cleanses your bloodstream.</span>"
/datum/borer_chem/methamphetamine
chemname = "methamphetamine"
chem_desc = "Reduces stun times, increases stamina and run speed while dealing brain damage. If overdosed it will deal toxin and brain damage."
chemuse = 50
quantity = 9
chem_message = "<span class='notice'>Your mind races, your heartrate skyrockets as methamphetamines enters your bloodstream!</span>"
/datum/borer_chem/salbutamol
chemname = "salbutamol"
chem_desc = "Heals suffocation damage."
chem_message = "<span class='notice'>Your breathing becomes lighter, as oxygen fills your lungs from the inside.</span>"
/datum/borer_chem/spacedrugs
chemname = "space_drugs"
chem_desc = "Get your host high as a kite."
chemuse = 75
chem_message = "<span class='notice'>You feel like you can taste the colours of the wind.</span>"
/*/datum/borer_chem/creagent
chemname = "colorful_reagent"
chem_desc = "Change the colour of your host."
chemuse = 50
chem_message = "<span class='notice'>Your body suddenly changes colour from the inside out.</span>"*/
/datum/borer_chem/ethanol
chemname = "ethanol"
chem_desc = "The most potent alcoholic 'beverage', with the fastest toxicity."
chemuse = 50
chem_message = "<span class='notice'>You feel like you've downed a shot of 200 proof vodka.</span>"
/datum/borer_chem/rezadone
chemname = "rezadone"
chem_desc = "Heals cellular damage."
chem_message = "<span class='notice'>You feel a warmth spread throughout your body as rezadone repairs corrupted DNA.</span>"
/datum/borer_chem/crocin
chemname = "aphro"
chem_desc = "Increases host arousal without overdosing."
chem_message = "<span class='notice'>You feel your pulse quicken and your body begins to feel warmer.</span>"
/datum/borer_chem/camphor
chemname = "anaphro"
chem_desc = "Decreases host arousal without overdosing."
chem_message = "<span class='notice'>Your pulse calms down and you feel more focused as the fog of lust clears.</span>"
@@ -1,49 +0,0 @@
/datum/round_event_control/borer
name = "Borer"
typepath = /datum/round_event/borer
weight = 0
max_occurrences = 0
min_players = 20 //10 is MINIMUM needed, but this is not a gamemode that does well in lowpop
earliest_start = 24000 //40 min, double default timer
/datum/round_event/borer
announceWhen = 2400 //Borers get 4 minutes till the crew tries to murder them.
var/successSpawn = 0
var/spawncount = 2
/datum/round_event/borer/setup()
spawncount = rand(2, 4)
/datum/round_event/borer/announce()
if(successSpawn)
priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') //Borers seem like normal xenomorphs.
/datum/round_event/borer/start()
var/list/vents = list()
for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in GLOB.machines)
if(QDELETED(temp_vent))
continue
if(temp_vent.loc.z == SSmapping.station_start && !temp_vent.welded)
var/datum/pipeline/temp_vent_parent = temp_vent.parents[1]
if(temp_vent_parent.other_atmosmch.len > 20)
vents += temp_vent
if(!vents.len)
message_admins("An event attempted to spawn a borer but no suitable vents were found. Shutting down.")
return kill()
var/total_humans = 0
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.stat != DEAD)
total_humans++
GLOB.total_borer_hosts_needed = round(1 + total_humans/6)
while(spawncount >= 1 && vents.len)
var/obj/vent = pick_n_take(vents)
new /mob/living/simple_animal/borer(vent.loc)
successSpawn = TRUE
spawncount--
@@ -1,125 +0,0 @@
/mob/living/simple_animal/borer/proc/get_html_template(content)
var/html = {"<!DOCTYPE html">
<html>
<head>
<title>Borer Chemicals</title>
<link rel='stylesheet' type='text/css' href='icons.css'>
<link rel='stylesheet' type='text/css' href='shared.css'>
<style type='text/css'>
body {
padding: 10;
margin: 0;
font-size: 12px;
color: #ffffff;
line-height: 170%;
font-family: Verdana, Geneva, sans-serif;
background: #272727 url(uiBackground.png) 50% 0 repeat-x;
overflow-x: hidden;
}
a, a:link, a:visited, a:active, .link, .linkOn, .linkOff, .selected, .disabled {
color: #ffffff;
text-decoration: none;
background: #40628a;
border: 1px solid #161616;
padding: 2px 2px 2px 2px;
margin: 2px 2px 2px 2px;
cursor: pointer;
display: inline-block;
}
a:hover, .linkActive:hover {
background: #507aac;
cursor: pointer;
}
img {
border: 0px;
}
p {
padding: 4px;
margin: 0px;
}
h1, h2, h3, h4, h5, h6 {
margin: 0;
padding: 16px 0 8px 0;
color: #517087;
clear: both;
}
h1 {
font-size: 15px;
}
h2 {
font-size: 14px;
}
h3 {
font-size: 13px;
}
h4 {
font-size: 12px;
}
#header {
margin: 3px;
padding: 0px;
}
table {
width: 570px;
margin: 10px;
}
td {
border: solid 1px #000;
width: 560px;
}
.chem-select {
width: 560px;
margin: 5px;
text-align: center;
}
.enabled {
background-color: #0a0;
}
.disabled {
background-color: #a00;
}
.shown {
display: block;
}
.hidden {
display: none;
}
</style>
<script src="jquery.min.js"></script>
<script type='text/javascript'>
function update_chemicals(chemicals) {
$('#chemicals').text(chemicals);
}
$(function() {
});
</script>
</head>
<body scroll='yes'><div id='content'>
<h1 id='header'>Borer Chemicals</h1>
<br />
[content]
</div></body></html>"}
return html
@@ -1,42 +0,0 @@
/mob/living/simple_animal/borer/Topic(href, href_list, hsrc)
if(href_list["borer_use_chem"])
locate(href_list["src"])
if(!istype(src, /mob/living/simple_animal/borer))
return
var/topic_chem = href_list["borer_use_chem"]
var/datum/borer_chem/C
for(var/datum in typesof(/datum/borer_chem))
var/datum/borer_chem/test = new datum()
if(test.chemname == topic_chem)
C = test
break
if(!istype(C, /datum/borer_chem))
return
if(!C || !victim || controlling || !src || stat)
return
if(!istype(C, /datum/borer_chem))
return
if(chemicals < C.chemuse)
to_chat(src, "<span class='boldnotice'>You need [C.chemuse] chemicals stored to use this chemical!</span>")
return
to_chat(src, "<span class='userdanger'>You squirt a measure of [C.chemname] from your reservoirs into [victim]'s bloodstream.</span>")
if(C.chemname=="aphro" || C.chemname=="anaphro")
if(victim.canbearoused) //snowflake exception as these chems interact with client-specific optional stuff :S
to_chat(victim,C.chem_message)
else
to_chat(victim,C.chem_message)
victim.reagents.add_reagent(C.chemname, C.quantity)
chemicals -= C.chemuse
log_game("[src]/([src.ckey]) has injected [C.chemname] into their host [victim]/([victim.ckey])")
src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals")
..()
@@ -1,34 +0,0 @@
/mob/living/simple_animal/borer/syndi_borer
var/mob/owner = null
is_team_borer = FALSE
borer_alert = "Serve as a syndicate cortical borer? (Warning, You can no longer be cloned!)"
/mob/living/simple_animal/borer/syndi_borer/Initialize(mapload, gen=1)
..()
real_name = "Syndicate Borer [rand(1000,9999)]"
truename = "[borer_names[min(generation, borer_names.len)]] [rand(1000,9999)]"
GrantBorerActions()
make_larvae_action.Remove(src)
/mob/living/simple_animal/borer/syndi_borer/GrantControlActions()
talk_to_brain_action.Grant(victim)
give_back_control_action.Grant(victim)
/mob/living/simple_animal/borer/syndi_borer/RemoveControlActions()
talk_to_brain_action.Remove(victim)
give_back_control_action.Remove(victim)
//Syndicate borer objective, relies on their owner getting a greentext, no matter if they themselves did anything really.
/datum/objective/syndi_borer
explanation_text = "You are a modified syndicate cortical borer, assist your owner with their objectives."
martyr_compatible = 1
/datum/objective/syndi_borer/check_completion()
if(target)
for(var/datum/objective/objective in target.objectives)
if(!objective.check_completion())
return 0
return 1
else
return 1 //Not sure if we should greentext if we somehow don't even have an owner.
@@ -367,11 +367,21 @@
if(!CTO.escape_objective_compatible)
escape_objective_possible = FALSE
break
var/datum/objective/absorb/absorb_objective = new
absorb_objective.owner = owner
absorb_objective.gen_amount_goal(6, 8)
objectives += absorb_objective
var/changeling_objective = rand(1,3)
switch(changeling_objective)
if(1)
var/datum/objective/absorb/absorb_objective = new
absorb_objective.owner = owner
absorb_objective.gen_amount_goal(6, 8)
objectives += absorb_objective
if(2)
var/datum/objective/absorb_changeling/ac = new
ac.owner = owner
objectives += ac
if(3)
var/datum/objective/absorb_most/ac = new
ac.owner = owner
objectives += ac
if(prob(60))
if(prob(85))
@@ -89,9 +89,16 @@
var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling)
if(target_ling)//If the target was a changeling, suck out their extra juice and objective points!
to_chat(user, "<span class='boldnotice'>[target] was one of us. We have absorbed their power.</span>")
target_ling.remove_changeling_powers()
changeling.geneticpoints += round(target_ling.geneticpoints/2)
target_ling.geneticpoints = 0
target_ling.canrespec = 0
changeling.chem_storage += round(target_ling.chem_storage/2)
changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage)
target_ling.chem_charges = 0
target_ling.chem_storage = 0
changeling.absorbedcount += (target_ling.absorbedcount)
target_ling.stored_profiles.len = 1
target_ling.absorbedcount = 0
@@ -8,7 +8,6 @@
chemical_cost = 10
dna_cost = 0
req_stat = UNCONSCIOUS
always_keep = TRUE
/obj/effect/proc_holder/changeling/regenerate/sting_action(mob/living/user)
to_chat(user, "<span class='notice'>You feel an itching, both inside and \
@@ -29,7 +29,7 @@
return TRUE
/obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user)
if((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))
if(user.has_trait(CHANGELING_DRAIN) || ((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH))))
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
changeling.purchasedpowers -= src
return 0
@@ -6,6 +6,7 @@
name = "clockwork marauder"
desc = "The stalwart apparition of a soldier, blazing with crimson flames. It's armed with a gladius and shield."
icon_state = "clockwork_marauder"
mob_biotypes = list(MOB_INORGANIC, MOB_HUMANOID)
health = 120
maxHealth = 120
force_threshold = 8
@@ -1,70 +0,0 @@
#define STARGAZER_RANGE 3 //How many tiles the stargazer can see out to
#define STARGAZER_POWER 20 //How many watts will be produced per second when the stargazer sees starlight
//Stargazer: A very fragile but cheap generator that creates power from starlight.
/obj/structure/destructible/clockwork/stargazer
name = "stargazer"
desc = "A large lantern-shaped machine made of thin brass. It looks fragile."
clockwork_desc = "A lantern-shaped generator that produces power when near starlight."
icon_state = "stargazer"
unanchored_icon = "stargazer_unwrenched"
max_integrity = 40
construction_value = 5
layer = WALL_OBJ_LAYER
break_message = "<span class='warning'>The stargazer's fragile body shatters into pieces!</span>"
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
light_color = "#DAAA18"
var/star_light_star_bright = FALSE //If this stargazer can see starlight
/obj/structure/destructible/clockwork/stargazer/Initialize()
. = ..()
START_PROCESSING(SSprocessing, src)
/obj/structure/destructible/clockwork/stargazer/Destroy()
STOP_PROCESSING(SSprocessing, src)
. = ..()
/obj/structure/destructible/clockwork/stargazer/examine(mob/user)
..()
if(is_servant_of_ratvar(user))
to_chat(user, "<span class='nzcrentr_small'>Generates <b>[DisplayPower(STARGAZER_POWER)]</b> per second while viewing starlight within [STARGAZER_RANGE] tiles.</span>")
if(star_light_star_bright)
to_chat(user, "[is_servant_of_ratvar(user) ? "<span class='nzcrentr_small'>It can see starlight!</span>" : "It's shining brilliantly!"]")
/obj/structure/destructible/clockwork/stargazer/process()
star_light_star_bright = check_starlight()
if(star_light_star_bright)
adjust_clockwork_power(STARGAZER_POWER)
/obj/structure/destructible/clockwork/stargazer/update_anchored(mob/living/user, damage)
. = ..()
star_light_star_bright = check_starlight()
/obj/structure/destructible/clockwork/stargazer/proc/check_starlight()
var/old_status = star_light_star_bright
var/has_starlight
if(!anchored)
has_starlight = FALSE
else
for(var/turf/T in view(3, src))
if(isspaceturf(T))
has_starlight = TRUE
break
if(has_starlight && anchored)
var/area/A = get_area(src)
if(A.outdoors || A.map_name == "Space" || !A.blob_allowed)
has_starlight = FALSE
if(old_status != has_starlight)
if(has_starlight)
visible_message("<span class='nzcrentr_small'>[src] hums and shines brilliantly!</span>")
playsound(src, 'sound/machines/clockcult/stargazer_activate.ogg', 50, TRUE)
add_overlay("stargazer_light")
set_light(1.5, 5)
else
if(anchored) //We lost visibility somehow
visible_message("<span class='danger'>[src] flickers, and falls dark.</span>")
else
visible_message("<span class='danger'>[src] whooshes quietly as it slides into a less bulky form.</span>")
cut_overlays()
set_light(0)
return has_starlight
+2 -4
View File
@@ -95,10 +95,8 @@
else
to_chat(mob, "<span class='danger'>You have a [item_name] in your [where].</span>")
if(where == "backpack")
var/obj/item/storage/B = mob.back
B.orient2hud(mob)
B.show_to(mob)
return 1
mob.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, mob)
return TRUE
/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override)
. = ..()
@@ -13,6 +13,7 @@
icon = 'icons/mob/mob.dmi'
icon_state = "imp"
icon_living = "imp"
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
speed = 1
a_intent = INTENT_HARM
stop_automated_movement = 1
@@ -16,6 +16,7 @@
var/icon_stun = "revenant_stun"
var/icon_drain = "revenant_draining"
var/stasis = FALSE
mob_biotypes = list(MOB_SPIRIT)
incorporeal_move = INCORPOREAL_MOVE_JAUNT
invisibility = INVISIBILITY_REVENANT
health = INFINITY //Revenants don't use health, they use essence instead
@@ -12,6 +12,7 @@
icon = 'icons/mob/mob.dmi'
icon_state = "daemon"
icon_living = "daemon"
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
speed = 1
a_intent = INTENT_HARM
stop_automated_movement = 1
@@ -60,6 +60,7 @@
speak_emote = list("tones")
initial_language_holder = /datum/language_holder/swarmer
bubble_icon = "swarmer"
mob_biotypes = list(MOB_ROBOTIC)
health = 40
maxHealth = 40
status_flags = CANPUSH
@@ -3,7 +3,7 @@
GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
/obj/machinery/field/containment,
/obj/machinery/power/supermatter_shard,
/obj/machinery/power/supermatter_crystal,
/obj/machinery/doomsday_device,
/obj/machinery/nuclearbomb,
/obj/machinery/nuclearbomb/selfdestruct,