Blob event fixes, toggle preferences age check, jobban check

This commit is contained in:
Markolie
2015-02-01 14:19:11 +01:00
parent d3d54b53fd
commit 8fb90212b8
22 changed files with 67 additions and 59 deletions
@@ -131,6 +131,10 @@
set desc = "Toggles which special roles you would like to be a candidate for, during events."
var/role_flag = be_special_flags[role]
if(!role_flag) return
if(!player_old_enough_antag(src,be_special_flags[role]))
var/available_in_days_antag = available_in_days_antag(src,be_special_flags[role])
src << "<span class='warning'>This role is not yet available to you. You need to wait another [available_in_days_antag] days.</span>"
return
prefs.be_special ^= role_flag
prefs.save_preferences(src)
src << "You will [(prefs.be_special & role_flag) ? "now" : "no longer"] be considered for [role] events (where possible)."
+1 -1
View File
@@ -26,7 +26,7 @@
if(temp_vent.network.normal_members.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
vents += temp_vent
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien")
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
while(spawncount > 0 && vents.len && candidates.len)
var/obj/vent = pick_n_take(vents)
+18 -16
View File
@@ -1,6 +1,7 @@
/datum/event/blob
announceWhen = 12
endWhen = 120
announceWhen = 120
noAutoEnd = 1
var/nuke_announced = 0
var/obj/effect/blob/core/Blob
@@ -28,12 +29,10 @@
/datum/event/blob/tick()
if(Blob && IsMultiple(activeFor, 3))
Blob.process()
var/blobs = 0
for(var/obj/effect/blob/core/core in world)
blobs++
if(blobs >= 3)
if(blobs.len > 700*0.6 && !nuke_announced)
announce_nuke()
if(!Blob && !blobs)
nuke_announced = 1
if(!Blob && !blob_cores.len)
kill()
return
@@ -62,12 +61,15 @@
world << sound('sound/effects/siren.ogg')
/datum/event/blob/kill()
command_alert("The level 7 biohazard aboard [station_name()] has been eliminated. Directive 7-10 has been lifted, and the station is no longer quarantined.", "Biohazard Update")
for (var/mob/living/silicon/ai/aiPlayer in player_list)
if (aiPlayer.client)
var/law = ""
aiPlayer.set_zeroth_law(law)
aiPlayer << "\red <b>You have detected a change in your laws information:</b>"
aiPlayer << "Laws Updated: [law]"
..()
spawn(10)
if(Blob || blob_cores.len)
return
command_alert("The level 7 biohazard aboard [station_name()] has been eliminated. Directive 7-10 has been lifted, and the station is no longer quarantined.", "Biohazard Update")
for (var/mob/living/silicon/ai/aiPlayer in player_list)
if (aiPlayer.client)
var/law = ""
aiPlayer.set_zeroth_law(law)
aiPlayer << "\red <b>You have detected a change in your laws information:</b>"
aiPlayer << "Laws Updated: [law]"
..()
+1 -1
View File
@@ -23,7 +23,7 @@
if(temp_vent.network.normal_members.len > 50)
vents += temp_vent
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien")
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
while(spawncount > 0 && vents.len && candidates.len)
var/obj/vent = pick_n_take(vents)
var/client/C = pick_n_take(candidates)
+4 -3
View File
@@ -57,6 +57,7 @@
var/isRunning = 1 //If this event is currently running. You should not change this.
var/startedAt = 0 //When this event started.
var/endedAt = 0 //When this event ended.
var/noAutoEnd = 0 //Does the event end automatically after endWhen passes?
var/area/impact_area //The area the event will hit
var/datum/event_meta/event_meta = null
@@ -104,7 +105,7 @@
//Do not override this proc, instead use the appropiate procs.
//This proc will handle the calls to the appropiate procs.
/datum/event/proc/process()
if(activeFor > startWhen && activeFor < endWhen)
if(activeFor > startWhen && activeFor < endWhen || noAutoEnd)
tick()
if(activeFor == startWhen)
@@ -114,12 +115,12 @@
if(activeFor == announceWhen)
announce()
if(activeFor == endWhen)
if(activeFor == endWhen && !noAutoEnd)
isRunning = 0
end()
// Everything is done, let's clean up.
if(activeFor >= lastProcessAt())
if(activeFor >= lastProcessAt() && !noAutoEnd)
kill()
activeFor++
+3 -2
View File
@@ -172,11 +172,12 @@
var/datum/event_meta/EM = E.event_meta
var/ends_at = E.startedAt + (E.lastProcessAt() * master_controller.minimum_ticks) // A best estimate
var/ends_in = max(0, round((ends_at - world.time) / 600, 0.1))
var/no_end = E.noAutoEnd
html += "<tr>"
html += "<td>[severity_to_string[EM.severity]]</td>"
html += "<td>[EM.name]</td>"
html += "<td>[worldtime2text(ends_at)]</td>"
html += "<td>[ends_in]</td>"
html += "<td>[no_end ? "N/A" : worldtime2text(ends_at)]</td>"
html += "<td>[no_end ? "N/A" : ends_in]</td>"
html += "<td><A align='right' href='?src=\ref[src];stop=\ref[E]'>Stop</A></td>"
html += "</tr>"
html += "</table>"
@@ -26,7 +26,7 @@
if(temp_vent.network.normal_members.len > 50) //Stops Aliens getting stuck in small networks. See: Security, Virology
vents += temp_vent
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien")
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
while(spawncount > 0 && vents.len && candidates.len)
var/obj/vent = pick_n_take(vents)
+1 -1
View File
@@ -16,7 +16,7 @@
/area/jungle
name = "jungle"
icon = 'code/workinprogress/cael_aislinn/jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "area"
lighting_use_dynamic = 0
luminosity = 1
+2 -2
View File
@@ -50,7 +50,7 @@
/mob/living/simple_animal/hostile/panther
name = "panther"
desc = "A long sleek, black cat with sharp teeth and claws."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "panther"
icon_living = "panther"
icon_dead = "panther_dead"
@@ -108,7 +108,7 @@
/mob/living/simple_animal/hostile/snake
name = "snake"
desc = "A sinuously coiled, venomous looking reptile."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "snake"
icon_living = "snake"
icon_dead = "snake_dead"
+5 -5
View File
@@ -5,7 +5,7 @@
/obj/structure/bush
name = "foliage"
desc = "Pretty thick scrub, it'll take something sharp and a lot of determination to clear away."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "bush1"
density = 1
anchored = 1
@@ -69,12 +69,12 @@ var/jungle_plants_init = 0
/obj/item/weapon/reagent_containers/food/snacks/grown/jungle_fruit
name = "jungle fruit"
desc = "It smells weird and looks off."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "orange"
potency = 1
/obj/structure/jungle_plant
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "plant1"
desc = "Looks like some of that fruit might be edible."
var/fruits_left = 3
@@ -93,7 +93,7 @@ var/jungle_plants_init = 0
fruit_type = rand(1,7)
icon_state = "plant[fruit_type]"
fruits_left = rand(1,5)
fruit_overlay = icon('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"fruit[fruits_left]")
fruit_overlay = icon('code/modules/jungle/jungle.dmi',"fruit[fruits_left]")
fruit_r = 255 - fruit_type * 36
fruit_g = rand(1,255)
fruit_b = fruit_type * 36
@@ -114,7 +114,7 @@ var/jungle_plants_init = 0
J.attack_hand(user)
overlays -= fruit_overlay
fruit_overlay = icon('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"fruit[fruits_left]")
fruit_overlay = icon('code/modules/jungle/jungle.dmi',"fruit[fruits_left]")
fruit_overlay.Blend(rgb(fruit_r, fruit_g, fruit_b), ICON_ADD)
overlays += fruit_overlay
else
+12 -12
View File
@@ -3,37 +3,37 @@
/area/jungle/temple_one
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple1"
/area/jungle/temple_two
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple2"
/area/jungle/temple_three
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple3"
/area/jungle/temple_four
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple4"
/area/jungle/temple_five
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple5"
/area/jungle/temple_six
name = "temple"
lighting_use_dynamic = 1
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "temple6"
/obj/effect/landmark/door_spawner
@@ -280,8 +280,8 @@
/obj/effect/step_trigger/trap
name = "trap"
icon = 'code/workinprogress/cael_aislinn/jungle/jungle.dmi'
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "trap"
var/trap_type
@@ -306,7 +306,7 @@
M.apply_damage(rand(5,10), BRUTE, sharp=1, edge=1)
var/atom/myloc = src.loc
var/image/flicker = image('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"sawblade")
var/image/flicker = image('code/modules/jungle/jungle.dmi',"sawblade")
myloc.overlays += flicker
spawn(8)
myloc.overlays -= flicker
@@ -317,7 +317,7 @@
M.apply_damage(rand(5,10), TOX)
var/atom/myloc = src.loc
var/image/flicker = image('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"dart[rand(1,3)]")
var/image/flicker = image('code/modules/jungle/jungle.dmi',"dart[rand(1,3)]")
myloc.overlays += flicker
spawn(8)
myloc.overlays -= flicker
@@ -328,7 +328,7 @@
M.apply_damage(rand(5,10), BURN)
var/atom/myloc = src.loc
var/image/flicker = image('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"flameburst")
var/image/flicker = image('code/modules/jungle/jungle.dmi',"flameburst")
myloc.overlays += flicker
spawn(8)
myloc.overlays -= flicker
@@ -344,7 +344,7 @@
M.visible_message("\red <b>The floor under [M] suddenly tips upward!</b>","\red <b>The floor tips upward under you!</b>")
var/atom/myloc = src.loc
var/image/flicker = image('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"throw[throw_dir]")
var/image/flicker = image('code/modules/jungle/jungle.dmi',"throw[throw_dir]")
myloc.overlays += flicker
var/turf/my_turf = get_turf(loc)
if(!my_turf.density)
+2 -2
View File
@@ -8,7 +8,7 @@
/obj/effect/jungle_tribe_spawn
name = "campfire"
desc = "Looks cosy, in an alien sort of way."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "campfire"
anchored = 1
var/list/tribesmen = list()
@@ -46,7 +46,7 @@
/mob/living/simple_animal/hostile/tribesman
name = "tribesman"
desc = "A noble savage, doesn't seem to know what to make of you."
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "native1"
icon_living = "native1"
icon_dead = "native1_dead"
+3 -3
View File
@@ -4,7 +4,7 @@
var/plants_spawn = 1
name = "wet grass"
desc = "Thick, long wet grass"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "grass1"
var/icon_spawn_state = "grass1"
luminosity = 3
@@ -16,7 +16,7 @@
if(prob(90))
var/image/I
if(prob(35))
I = image('code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi',"plant[rand(1,7)]")
I = image('code/modules/jungle/jungle.dmi',"plant[rand(1,7)]")
else
if(prob(30))
I = image('icons/obj/flora/ausflora.dmi',"reedbush_[rand(1,4)]")
@@ -46,7 +46,7 @@
bushes_spawn = 0
name = "wet grass"
desc = "thick, long wet grass"
icon = 'code/WorkInProgress/Cael_Aislinn/Jungle/jungle.dmi'
icon = 'code/modules/jungle/jungle.dmi'
icon_state = "grass_path"
icon_spawn_state = "grass2"
@@ -74,7 +74,7 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
AttemptGrow()
/obj/item/alien_embryo/proc/AttemptGrow(var/gib_on_success = 1)
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien")
var/list/candidates = get_candidates(BE_ALIEN,ALIEN_AFK_BRACKET,"alien","Syndicate")
var/client/C = null
// To stop clientless larva, we will check that our host has a client
+1 -1
View File
@@ -4,7 +4,7 @@
/obj/effect/energy_field
name = "energy field"
desc = "Impenetrable field of energy, capable of blocking anything as long as it's active."
icon = 'code/WorkInProgress/Cael_Aislinn/ShieldGen/shielding.dmi'
icon = 'code/modules/shieldgen/shielding.dmi'
icon_state = "shieldsparkles"
anchored = 1
layer = 4.1 //just above mobs
+1 -1
View File
@@ -5,7 +5,7 @@
/obj/machinery/shield_capacitor
name = "shield capacitor"
desc = "Machine that charges a shield generator."
icon = 'code/WorkInProgress/Cael_Aislinn/ShieldGen/shielding.dmi'
icon = 'code/modules/shieldgen/shielding.dmi'
icon_state = "capacitor"
var/active = 1
density = 1
+1 -1
View File
@@ -8,7 +8,7 @@
/obj/machinery/shield_gen
name = "shield generator"
desc = "Machine that generates an impenetrable field of energy when activated."
icon = 'code/WorkInProgress/Cael_Aislinn/ShieldGen/shielding.dmi'
icon = 'code/modules/shieldgen/shielding.dmi'
icon_state = "generator0"
var/active = 0
var/field_radius = 3