Bleeding edgy refresh (#303)

* not code stuff

* other things

* global vars, defines, helpers

* onclick hud stuff, orphans, world.dm

* controllers and datums

* game folder

* everything not client/mobs in modules

* client folder

* stage 1 mob stuff

* simple animal things

* silicons

* carbon things

* ayylmaos and monkeys

* hyoomahn

* icons n shit

* sprite fixes

* compile fixes

* some fixes I cherrypicked.

* qdel fixes

* forgot brain refractors
This commit is contained in:
Poojawa
2017-03-21 11:44:10 -05:00
committed by GitHub
parent 099a6c8764
commit f67e9f6d87
1476 changed files with 344416 additions and 40694 deletions
+31 -2
View File
@@ -25,6 +25,8 @@
var/list/gamemode_blacklist = list() // Event won't happen in these gamemodes
var/list/gamemode_whitelist = list() // Event will happen ONLY in these gamemodes if not empty
var/triggering //admin cancellation
/datum/round_event_control/New()
..()
if(config && !wizardevent) // Magic is unaffected by configs
@@ -53,9 +55,32 @@
return FALSE
return TRUE
/datum/round_event_control/proc/runEvent()
/datum/round_event_control/proc/preRunEvent()
if(!ispath(typepath,/datum/round_event))
return PROCESS_KILL
return EVENT_CANT_RUN
triggering = TRUE
if (alertadmins)
message_admins("Random Event triggering in 10 seconds: [name] ([typepath]) (<a href='?src=\ref[src];cancel=1'>CANCEL</a>)")
sleep(100)
if(!triggering)
return EVENT_CANCELLED //admin cancelled
triggering = FALSE
return EVENT_READY
/datum/round_event_control/Topic(href, href_list)
..()
if(href_list["cancel"])
if(!triggering)
to_chat(usr, "<span class='admin'>You are too late to cancel that event</span>")
return
triggering = FALSE
message_admins("[key_name_admin(usr)] cancelled event [name].")
log_admin_private("[key_name(usr)] cancelled event [name].")
feedback_add_details("admin_verb","CancelEvent: [typepath]")
/datum/round_event_control/proc/runEvent(random)
var/datum/round_event/E = new typepath()
E.current_players = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
E.control = src
@@ -63,6 +88,10 @@
occurrences++
testing("[time2text(world.time, "hh:mm:ss")] [E.type]")
if(random)
if(alertadmins)
deadchat_broadcast("<span class='deadsay'><b>[name]</b> has just been randomly triggered!</span>") //STOP ASSUMING IT'S BADMINS!
log_game("Random Event triggering: [name] ([typepath])")
return E
+2 -2
View File
@@ -7,8 +7,8 @@
weight = 20
/datum/round_event/anomaly/anomaly_flux
startWhen = 3
announceWhen = 20
startWhen = 10
announceWhen = 3
/datum/round_event/anomaly/anomaly_flux/announce()
priority_announce("Localized hyper-energetic flux wave detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
+2 -2
View File
@@ -5,8 +5,8 @@
weight = 20
/datum/round_event/anomaly/anomaly_pyro
startWhen = 10
announceWhen = 3
startWhen = 3
announceWhen = 10
/datum/round_event/anomaly/anomaly_pyro/announce()
priority_announce("Pyroclastic anomaly detected on long range scanners. Expected location: [impact_area.name].", "Anomaly Alert")
@@ -15,7 +15,7 @@
"#4nd%;f4y6,>£%-BZZZZZZZT")
for(var/mob/living/silicon/ai/A in ai_list) //AIs are always aware of communication blackouts.
A << "<br><span class='warning'><b>[alert]</b></span><br>"
to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>")
if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts.
priority_announce(alert)
+1 -1
View File
@@ -32,7 +32,7 @@
var/mob/living/carbon/human/devil = create_event_devil(spawn_loc)
Mind.transfer_to(devil)
ticker.mode.finalize_devil(Mind)
ticker.mode.finalize_devil(Mind, FALSE)
ticker.mode.add_devil_objectives(src, 2)
Mind.announceDevilLaws()
Mind.announce_objectives()
+2 -2
View File
@@ -1,8 +1,8 @@
/datum/round_event_control/grid_check
name = "Grid Check"
typepath = /datum/round_event/grid_check
weight = 7
max_occurrences = 1
weight = 10
max_occurrences = 3
/datum/round_event/grid_check
announceWhen = 1
+1 -1
View File
@@ -15,4 +15,4 @@
/datum/round_event/fridaythethirteen/announce()
for(var/mob/living/L in player_list)
L << "<span class='warning'>You are feeling unlucky today.</span>"
to_chat(L, "<span class='warning'>You are feeling unlucky today.</span>")
+1 -1
View File
@@ -69,7 +69,7 @@
for(var/mob/living/carbon/human/H in living_mob_list)
if(!H.client || !istype(H))
return
H << "<span class='danger'>Honk...</span>"
to_chat(H, "<span class='danger'>Honk...</span>")
H << 'sound/spookoween/scary_clown_appear.ogg'
var/turf/T = get_turf(H)
if(T)
+3 -3
View File
@@ -42,7 +42,7 @@
else
L << "<span class='warning'><B>You didn't get a date! They're all having fun without you! you'll show them though...</B></span>"
to_chat(L, "<span class='warning'><B>You didn't get a date! They're all having fun without you! you'll show them though...</B></span>")
var/datum/objective/martyr/normiesgetout = new
normiesgetout.owner = L.mind
ticker.mode.traitors |= L.mind
@@ -58,7 +58,7 @@
protect_objective.target = date.mind
protect_objective.explanation_text = "Protect [date.real_name], your date."
lover.mind.objectives += protect_objective
lover << "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>"
to_chat(lover, "<span class='warning'><B>You're on a date with [date]! Protect them at all costs. This takes priority over all other loyalties.</B></span>")
/datum/round_event/valentines/announce()
@@ -143,7 +143,7 @@
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[message]</BODY></HTML>", "window=[name]")
onclose(user, "[name]")
else
user << "<span class='notice'>It is too far away.</span>"
to_chat(user, "<span class='notice'>It is too far away.</span>")
/obj/item/weapon/valentine/attack_self(mob/user)
user.examinate(src)
+1 -1
View File
@@ -157,4 +157,4 @@
telespell.clothes_req = 0 //santa robes aren't actually magical.
santa.mind.AddSpell(telespell) //does the station have chimneys? WHO KNOWS!
santa << "<span class='boldannounce'>You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.</span>"
to_chat(santa, "<span class='boldannounce'>You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag.</span>")
+8 -5
View File
@@ -107,6 +107,7 @@
//Foods. Drinks aren't included due to grammar; if you want to add drinks, make a new set
//of possible laws for best effect. Unless you want the crew having to drink hamburgers.
var/ionfood = pick_list(ION_FILE, "ionfood")
var/iondrinks = pick_list(ION_FILE, "iondrinks")
var/message = ""
@@ -327,15 +328,17 @@
if(24 to 26) //The AI must always
message = "YOU MUST ALWAYS [ionmust]"
if(27 to 28) //Humans must eat X to survive
switch(rand(1,4)) //What is X?
if(27 to 28) //Humans must consume X to survive
switch(rand(1,5)) //What is X?
if(1) //X is a food
message = "HUMANS MUST EAT [ionadjectiveshalf][ionfood] TO SURVIVE"
if(2) //X is an object
if(2) //X is a drink
message = "HUMANS MUST DRINK [ionadjectiveshalf][iondrinks] TO SURVIVE"
if(3) //X is an object
message = "HUMANS MUST EAT [ionadjectiveshalf][ionobjects] TO SURVIVE"
if(3) //X is a threat
if(4) //X is a threat
message = "HUMANS MUST EAT [ionadjectiveshalf][ionthreats] TO SURVIVE"
if(4) //X is a job
if(5) //X is a job
message = "HUMANS MUST EAT [ionadjectiveshalf][ioncrew1] TO SURVIVE"
if(29 to 31) //Change jobs or ranks
+5 -5
View File
@@ -3,9 +3,9 @@
/datum/round_event_control/meteor_wave
name = "Meteor Wave: Normal"
typepath = /datum/round_event/meteor_wave
weight = 2
weight = 4
min_players = 5
max_occurrences = 2
max_occurrences = 3
/datum/round_event/meteor_wave
startWhen = 6
@@ -22,9 +22,9 @@
/datum/round_event/meteor_wave/proc/determine_wave_type()
if(!wave_name)
wave_name = pickweight(list(
"normal" = 90,
"threatening" = 20,
"catastrophic" = 5))
"normal" = 50,
"threatening" = 40,
"catastrophic" = 10))
switch(wave_name)
if("normal")
wave_type = meteors_normal
+1 -1
View File
@@ -45,7 +45,7 @@
nuke_code = nuke.r_code
Mind.store_memory("<B>Station Self-Destruct Device Code</B>: [nuke_code]", 0, 0)
Mind.current << "The nuclear authorization code is: <B>[nuke_code]</B>"
to_chat(Mind.current, "The nuclear authorization code is: <B>[nuke_code]</B>")
var/datum/objective/nuclear/O = new()
O.owner = Mind
+1 -1
View File
@@ -17,7 +17,7 @@
for(var/mob/living/silicon/ai/A in ai_list)
//AIs are always aware of processor overload
A << "<br><span class='warning'><b>[alert]</b></span><br>"
to_chat(A, "<br><span class='warning'><b>[alert]</b></span><br>")
// Announce most of the time, but leave a little gap so people don't know
// whether it's, say, a tesla zapping tcomms, or some selective
-1
View File
@@ -2,7 +2,6 @@
name = "Radiation Storm"
typepath = /datum/round_event/radiation_storm
max_occurrences = 1
weight = 7
/datum/round_event/radiation_storm
+4 -5
View File
@@ -19,8 +19,7 @@
sentience_report += "<br><br>Based on [data], we believe that [one] of the station's [pets] has developed [strength] level intelligence, and the ability to communicate."
print_command_report(sentience_report, "Classified [command_name()] Update")
priority_announce("A report has been downloaded and printed out at all communications consoles.", "Incoming Classified Message", 'sound/AI/commandreport.ogg')
print_command_report(text=sentience_report)
..()
/datum/round_event/ghost_role/sentience/spawn_role()
@@ -60,10 +59,10 @@
spawned_mobs += SA
SA << "<span class='userdanger'>Hello world!</span>"
SA << "<span class='warning'>Due to freak radiation and/or chemicals \
to_chat(SA, "<span class='userdanger'>Hello world!</span>")
to_chat(SA, "<span class='warning'>Due to freak radiation and/or chemicals \
and/or lucky chance, you have gained human level intelligence \
and the ability to speak and understand human language!</span>"
and the ability to speak and understand human language!</span>")
return SUCCESSFUL_SPAWN
+1 -1
View File
@@ -80,7 +80,7 @@
var/list/empty_shuttle_turfs = list()
for(var/turf/open/floor/T in SSshuttle.supply.areaInstance)
if(T.density || T.contents.len)
if(is_blocked_turf(T))
continue
empty_shuttle_turfs += T
if(!empty_shuttle_turfs.len)
+9 -9
View File
@@ -119,7 +119,7 @@
/datum/spacevine_mutation/light/on_grow(obj/structure/spacevine/holder)
if(holder.energy)
holder.SetLuminosity(severity, 3)
holder.set_light(severity, 0.3)
/datum/spacevine_mutation/toxicity
name = "toxic"
@@ -131,7 +131,7 @@
if(issilicon(crosser))
return
if(prob(severity) && istype(crosser) && !isvineimmune(crosser))
crosser << "<span class='alert'>You accidently touch the vine and feel a strange sensation.</span>"
to_chat(crosser, "<span class='alert'>You accidently touch the vine and feel a strange sensation.</span>")
crosser.adjustToxLoss(5)
/datum/spacevine_mutation/toxicity/on_eat(obj/structure/spacevine/holder, mob/living/eater)
@@ -196,7 +196,7 @@
quality = POSITIVE
/datum/spacevine_mutation/transparency/on_grow(obj/structure/spacevine/holder)
holder.SetOpacity(0)
holder.set_opacity(0)
holder.alpha = 125
/datum/spacevine_mutation/oxy_eater
@@ -269,13 +269,13 @@
if(prob(severity) && istype(crosser) && !isvineimmune(holder))
var/mob/living/M = crosser
M.adjustBruteLoss(5)
M << "<span class='alert'>You cut yourself on the thorny vines.</span>"
to_chat(M, "<span class='alert'>You cut yourself on the thorny vines.</span>")
/datum/spacevine_mutation/thorns/on_hit(obj/structure/spacevine/holder, mob/living/hitter, obj/item/I, expected_damage)
if(prob(severity) && istype(hitter) && !isvineimmune(holder))
var/mob/living/M = hitter
M.adjustBruteLoss(5)
M << "<span class='alert'>You cut yourself on the thorny vines.</span>"
to_chat(M, "<span class='alert'>You cut yourself on the thorny vines.</span>")
. = expected_damage
/datum/spacevine_mutation/woodening
@@ -341,7 +341,7 @@
else
text += " normal"
text += " vine."
user << text
to_chat(user, text)
/obj/structure/spacevine/Destroy()
for(var/datum/spacevine_mutation/SM in mutations)
@@ -355,7 +355,7 @@
KZ.set_potency(master.mutativeness * 10)
KZ.set_production((master.spread_cap / initial(master.spread_cap)) * 5)
mutations = list()
SetOpacity(0)
set_opacity(0)
if(has_buckled_mobs())
unbuckle_all_mobs(force=1)
return ..()
@@ -521,7 +521,7 @@
if(!energy)
src.icon_state = pick("Med1", "Med2", "Med3")
energy = 1
SetOpacity(1)
set_opacity(1)
else
src.icon_state = pick("Hvy1", "Hvy2", "Hvy3")
energy = 2
@@ -543,7 +543,7 @@
for(var/datum/spacevine_mutation/SM in mutations)
SM.on_buckle(src, V)
if((V.stat != DEAD) && (V.buckled != src)) //not dead or captured
V << "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>"
to_chat(V, "<span class='danger'>The vines [pick("wind", "tangle", "tighten")] around you!</span>")
buckle_mob(V, 1)
/obj/structure/spacevine/proc/spread()
+2 -2
View File
@@ -17,7 +17,7 @@
S.clothes_req = 0
spell_improved = 1
if(spell_improved)
L << "<span class='notice'>You suddenly feel like you never needed those garish robes in the first place...</span>"
to_chat(L, "<span class='notice'>You suddenly feel like you never needed those garish robes in the first place...</span>")
//--//
@@ -53,4 +53,4 @@
if(5)
S.name = "Ludicrous [S.name]"
L << "<span class='notice'>You suddenly feel more competent with your casting!</span>"
to_chat(L, "<span class='notice'>You suddenly feel more competent with your casting!</span>")
@@ -44,8 +44,8 @@
citizens += H
ticker.mode.traitors += M
M.special_role = "separatist"
H.attack_log += "\[[time_stamp()]\] <font color='red'>Was made into a separatist, long live [nation]!</font>"
H << "<B>You are a separatist! [nation] forever! Protect the soverignty of your newfound land with your comrades in arms!</B>"
H.log_message("<font color='red'>Was made into a separatist, long live [nation]!</font>", INDIVIDUAL_ATTACK_LOG)
to_chat(H, "<B>You are a separatist! [nation] forever! Protect the soverignty of your newfound land with your comrades in arms!</B>")
if(citizens.len)
var/message
for(var/job in jobs_to_revolt)
+1 -1
View File
@@ -8,4 +8,4 @@
/datum/round_event/wizard/fake_explosion/start()
for(var/mob/M in player_list)
M << 'sound/machines/Alarm.ogg'
addtimer(CALLBACK(ticker, /datum/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
addtimer(CALLBACK(ticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
+4 -5
View File
@@ -2,13 +2,12 @@
name = "G-G-G-Ghosts!"
weight = 3
typepath = /datum/round_event/wizard/ghost
max_occurrences = 5
max_occurrences = 1
earliest_start = 0
/datum/round_event/wizard/ghost/start()
for(var/mob/dead/observer/G in player_list)
G.invisibility = 0
G << "You suddenly feel extremely obvious..."
var/msg = "<span class='warning'>You suddenly feel extremely obvious...</span>"
set_observer_default_invisibility(0, msg)
//--//
@@ -24,4 +23,4 @@
for(var/mob/dead/observer/G in player_list)
G.verbs += /mob/dead/observer/verb/boo
G.verbs += /mob/dead/observer/verb/possess
G << "You suddenly feel a welling of new spooky powers..."
to_chat(G, "You suddenly feel a welling of new spooky powers...")
+8 -8
View File
@@ -16,7 +16,7 @@
var/mob/living/carbon/human/H = pick(holder_canadates)
new /obj/item/weapon/greentext(H.loc)
H << "<font color='green'>The mythical greentext appear at your feet! Pick it up if you dare...</font>"
to_chat(H, "<font color='green'>The mythical greentext appear at your feet! Pick it up if you dare...</font>")
/obj/item/weapon/greentext
@@ -36,9 +36,9 @@
poi_list |= src
/obj/item/weapon/greentext/equipped(mob/living/user as mob)
user << "<font color='green'>So long as you leave this place with greentext in hand you know will be happy...</font>"
to_chat(user, "<font color='green'>So long as you leave this place with greentext in hand you know will be happy...</font>")
if(user.mind && user.mind.objectives.len > 0)
user << "<span class='warning'>... so long as you still perform your other objectives that is!</span>"
to_chat(user, "<span class='warning'>... so long as you still perform your other objectives that is!</span>")
new_holder = user
if(!last_holder)
last_holder = user
@@ -50,7 +50,7 @@
/obj/item/weapon/greentext/dropped(mob/living/user as mob)
if(user in color_altered_mobs)
user << "<span class='warning'>A sudden wave of failure washes over you...</span>"
to_chat(user, "<span class='warning'>A sudden wave of failure washes over you...</span>")
user.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY) //ya blew it
last_holder = null
new_holder = null
@@ -59,7 +59,7 @@
/obj/item/weapon/greentext/process()
if(new_holder && new_holder.z == ZLEVEL_CENTCOM)//you're winner!
new_holder << "<font color='green'>At last it feels like victory is assured!</font>"
to_chat(new_holder, "<font color='green'>At last it feels like victory is assured!</font>")
if(!(new_holder in ticker.mode.traitors))
ticker.mode.traitors += new_holder.mind
new_holder.mind.special_role = "winner"
@@ -67,13 +67,13 @@
O.completed = 1 //YES!
O.owner = new_holder.mind
new_holder.mind.objectives += O
new_holder.attack_log += "\[[time_stamp()]\] <font color='green'>Won with greentext!!!</font>"
new_holder.log_message("<font color='green'>Won with greentext!!!</font>", INDIVIDUAL_ATTACK_LOG)
color_altered_mobs -= new_holder
resistance_flags |= ON_FIRE
qdel(src)
if(last_holder && last_holder != new_holder) //Somehow it was swiped without ever getting dropped
last_holder << "<span class='warning'>A sudden wave of failure washes over you...</span>"
to_chat(last_holder, "<span class='warning'>A sudden wave of failure washes over you...</span>")
last_holder.add_atom_colour("#FF0000", ADMIN_COLOUR_PRIORITY)
last_holder = new_holder //long live the king
@@ -92,7 +92,7 @@
message += "...</span>"
// can't skip the mob check as it also does the decolouring
if(!quiet)
M << message
to_chat(M, message)
/obj/item/weapon/greentext/quiet
quiet = TRUE
+2 -2
View File
@@ -53,6 +53,6 @@
I.mind.objectives += protect_objective
ticker.mode.update_wiz_icons_added(I.mind)
I.attack_log += "\[[time_stamp()]\] <font color='red'>Is an imposter!</font>"
I << "<B>You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!</B>"
I.log_message("<font color='red'>Is an imposter!</font>", INDIVIDUAL_ATTACK_LOG)
to_chat(I, "<B>You are an imposter! Trick and confuse the crew to misdirect malice from your handsome original!</B>")
I << sound('sound/effects/magic.ogg')
+1 -1
View File
@@ -9,4 +9,4 @@
for(var/mob/living/carbon/human/H in living_mob_list)
H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs)
H << "<span class='notice'>You feel invincible, nothing can hurt you!</span>"
to_chat(H, "<span class='notice'>You feel invincible, nothing can hurt you!</span>")
+1 -1
View File
@@ -41,7 +41,7 @@
/obj/item/projectile/magic/death, /obj/item/projectile/magic/teleport, /obj/item/projectile/magic/door, /obj/item/projectile/magic/aoe/fireball,
/obj/item/projectile/magic/spellblade, /obj/item/projectile/magic/arcane_barrage)
/mob/living/simple_animal/hostile/carp/ranged/New()
/mob/living/simple_animal/hostile/carp/ranged/Initialize()
projectiletype = pick(allowed_projectile_types)
..()
+1 -1
View File
@@ -24,6 +24,6 @@
H.set_species(new_species)
H.real_name = new_species.random_name(H.gender,1)
H.dna.unique_enzymes = H.dna.generate_unique_enzymes()
H << "<span class='notice'>You feel somehow... different?</span>"
to_chat(H, "<span class='notice'>You feel somehow... different?</span>")
if(!all_the_same)
new_species = pick(all_species)
+2 -2
View File
@@ -48,7 +48,7 @@
return
var/quality = target.force - initial(target.force)
if(quality > 9 && prob((quality - 9)*10))
user << "<span class='danger'>[target] catches fire!</span>"
to_chat(user, "<span class='danger'>[target] catches fire!</span>")
if(target.resistance_flags & (LAVA_PROOF|FIRE_PROOF))
target.resistance_flags &= ~(LAVA_PROOF|FIRE_PROOF)
target.resistance_flags |= FLAMMABLE
@@ -59,5 +59,5 @@
target.throwforce += 1
for(var/value in target.armor)
target.armor[value] += 1
user << "<span class='notice'>[target] glows blue and seems vaguely \"better\"!</span>"
to_chat(user, "<span class='notice'>[target] glows blue and seems vaguely \"better\"!</span>")
qdel(src)