mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Blob event fixes, toggle preferences age check, jobban check
This commit is contained in:
@@ -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)."
|
||||
|
||||
@@ -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
@@ -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]"
|
||||
..()
|
||||
@@ -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)
|
||||
|
||||
@@ -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++
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user