Merge pull request #5699 from Zuhayr/calamity

Calamity mode.
This commit is contained in:
Mloc
2014-08-02 11:39:29 +01:00
31 changed files with 665 additions and 221 deletions
+3
View File
@@ -481,6 +481,9 @@
if(ticker.mode.traitors.len)
dat += check_role_table("Traitors", ticker.mode.traitors, src)
if(ticker.mode.borers.len)
dat += check_role_table("Cortical Borers", ticker.mode.borers, src)
var/datum/game_mode/mutiny/mutiny = get_mutiny_mode()
if(mutiny)
dat += mutiny.check_antagonists_ui(src)
+1 -1
View File
@@ -533,7 +533,7 @@ client/proc/one_click_antag()
if(ticker.mode && ( istype( ticker.mode,/datum/game_mode/heist ) ) )
var/datum/game_mode/heist/M = ticker.mode
M.cortical_stacks += I
cortical_stacks += I
M.raiders[new_vox.mind] = I
ticker.mode.traitors += new_vox.mind
+1 -4
View File
@@ -20,10 +20,7 @@
H.mind.objectives += hijack_objective
H << "<B>You are the traitor.</B>"
var/obj_count = 1
for(var/datum/objective/OBJ in H.mind.objectives)
H << "<B>Objective #[obj_count]</B>: [OBJ.explanation_text]"
obj_count++
show_objectives(H.mind)
for (var/obj/item/I in H)
if (istype(I, /obj/item/weapon/implant))
+4
View File
@@ -30,6 +30,10 @@ var/scheduledEvent = null
playercount_modifier = 0.9
if(36 to 100000)
playercount_modifier = 0.8
if(ticker.mode && ticker.mode.name == "calamity") //Calamity mode lowers the time required between events drastically.
playercount_modifier = playercount_modifier * 0.3
var/next_event_delay = rand(eventTimeLower, eventTimeUpper) * playercount_modifier
scheduledEvent = world.timeofday + next_event_delay
log_debug("Next event in [next_event_delay/600] minutes.")
+7 -5
View File
@@ -54,23 +54,25 @@
//Mob specific holders.
/obj/item/weapon/holder/diona
name = "diona nymph"
desc = "It's a tiny plant critter."
icon_state = "nymph"
origin_tech = "magnets=3;biotech=5"
/obj/item/weapon/holder/drone
name = "maintenance drone"
desc = "It's a small maintenance robot."
icon_state = "drone"
origin_tech = "magnets=3;engineering=5"
/obj/item/weapon/holder/cat
name = "cat"
desc = "It's a cat. Meow."
icon_state = "cat"
origin_tech = null
origin_tech = null
/obj/item/weapon/holder/borer
name = "cortical borer"
desc = "It's a slimy brain slug. Gross."
icon_state = "borer"
origin_tech = "biotech=6"
+6 -5
View File
@@ -1,6 +1,6 @@
/mob/living/carbon/Life()
..()
// Increase germ_level regularly
if(germ_level < GERM_LEVEL_AMBIENT && prob(30)) //if you're just standing there, you shouldn't get more germs beyond an ambient level
germ_level++
@@ -14,7 +14,7 @@
src.nutrition -= HUNGER_FACTOR/10
if((FAT in src.mutations) && src.m_intent == "run" && src.bodytemperature <= 360)
src.bodytemperature += 2
// Moving around increases germ_level faster
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
germ_level++
@@ -206,7 +206,7 @@
if (istype(src,/mob/living/carbon/human) && src:w_uniform)
var/mob/living/carbon/human/H = src
H.w_uniform.add_fingerprint(M)
if(lying)
src.sleeping = max(0,src.sleeping-5)
if(src.sleeping == 0)
@@ -216,7 +216,7 @@
else
M.visible_message("<span class='notice'>[M] hugs [src] to make [t_him] feel better!</span>", \
"<span class='notice'>You hug [src] to make [t_him] feel better!</span>")
AdjustParalysis(-3)
AdjustStunned(-3)
AdjustWeakened(-3)
@@ -470,9 +470,10 @@
return
if(B.chemicals >= 100)
src << "\red <B>Your host twitches and quivers as you rapdly excrete several larvae from your sluglike body.</B>"
src << "\red <B>Your host twitches and quivers as you rapidly excrete a larva from your sluglike body.</B>"
visible_message("\red <B>[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!</B>")
B.chemicals -= 100
B.has_reproduced = 1
new /obj/effect/decal/cleanable/vomit(get_turf(src))
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
+16 -7
View File
@@ -1,6 +1,9 @@
/datum/game_mode/var/list/borers = list()
/mob/living/captive_brain
name = "host brain"
real_name = "host brain"
universal_understand = 1
/mob/living/captive_brain/say(var/message)
@@ -45,6 +48,8 @@
friendly = "prods"
wander = 0
pass_flags = PASSTABLE
universal_understand = 1
holder_type = /obj/item/weapon/holder/borer
var/used_dominate
var/chemicals = 10 // Chemicals used for reproduction and spitting neurotoxin.
@@ -53,6 +58,11 @@
var/mob/living/captive_brain/host_brain // Used for swapping control of the body back and forth.
var/controlling // Used in human death check.
var/docile = 0 // Sugar can stop borers from acting.
var/has_reproduced
var/roundstart
/mob/living/simple_animal/borer/roundstart
roundstart = 1
/mob/living/simple_animal/borer/Life()
@@ -96,9 +106,7 @@
..()
truename = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]"
host_brain = new/mob/living/captive_brain(src)
request_player()
if(!roundstart) request_player()
/mob/living/simple_animal/borer/say(var/message)
@@ -338,7 +346,7 @@
detatch()
mob/living/simple_animal/borer/proc/detatch()
/mob/living/simple_animal/borer/proc/detatch()
if(!host) return
@@ -530,7 +538,7 @@ mob/living/simple_animal/borer/proc/detatch()
src << text("\blue You have stopped hiding.")
//Procs for grabbing players.
mob/living/simple_animal/borer/proc/request_player()
/mob/living/simple_animal/borer/proc/request_player()
for(var/mob/dead/observer/O in player_list)
if(jobban_isbanned(O, "Syndicate"))
continue
@@ -538,7 +546,7 @@ mob/living/simple_animal/borer/proc/request_player()
if(O.client.prefs.be_special & BE_ALIEN)
question(O.client)
mob/living/simple_animal/borer/proc/question(var/client/C)
/mob/living/simple_animal/borer/proc/question(var/client/C)
spawn(0)
if(!C) return
var/response = alert(C, "A cortical borer needs a player. Are you interested?", "Cortical borer request", "Yes", "No", "Never for this round")
@@ -549,7 +557,7 @@ mob/living/simple_animal/borer/proc/question(var/client/C)
else if (response == "Never for this round")
C.prefs.be_special ^= BE_ALIEN
mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
/mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
if(!candidate)
return
@@ -558,3 +566,4 @@ mob/living/simple_animal/borer/proc/transfer_personality(var/client/candidate)
src.ckey = candidate.ckey
if(src.mind)
src.mind.assigned_role = "Cortical Borer"
src.mind.special_role = "Cortical Borer"