mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 22:17:32 +01:00
Removes gateway missions we don't and won't use (#17530)
* removes gateway missions we don't and won't use * removes additionals * Update code/modules/power/singularity/singularity.dm Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com> * makes things work properly * tick this please * and of course this map used some random single gun stolen from another away mission Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
This commit is contained in:
@@ -1,261 +0,0 @@
|
||||
//Academy Areas
|
||||
|
||||
/area/awaymission/academy
|
||||
name = "\improper Academy Asteroids"
|
||||
icon_state = "away"
|
||||
report_alerts = FALSE
|
||||
|
||||
/area/awaymission/academy/headmaster
|
||||
name = "\improper Academy Fore Block"
|
||||
icon_state = "away1"
|
||||
|
||||
/area/awaymission/academy/classrooms
|
||||
name = "\improper Academy Classroom Block"
|
||||
icon_state = "away2"
|
||||
|
||||
/area/awaymission/academy/academyaft
|
||||
name = "\improper Academy Ship Aft Block"
|
||||
icon_state = "away3"
|
||||
|
||||
/area/awaymission/academy/academygate
|
||||
name = "\improper Academy Gateway"
|
||||
icon_state = "away4"
|
||||
|
||||
//Academy Items
|
||||
|
||||
/obj/singularity/academy
|
||||
dissipate = 0
|
||||
move_self = 0
|
||||
grav_pull = 1
|
||||
|
||||
/obj/singularity/academy/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/singularity/academy/process()
|
||||
eat()
|
||||
if(prob(1))
|
||||
mezzer()
|
||||
|
||||
/obj/item/clothing/glasses/meson/truesight
|
||||
name = "The Lens of Truesight"
|
||||
desc = "I can see forever!"
|
||||
icon_state = "monocle"
|
||||
item_state = "headset"
|
||||
|
||||
// Die of Fate
|
||||
/obj/item/dice/d20/fate
|
||||
name = "\improper Die of Fate"
|
||||
desc = "A die with twenty sides. You can feel unearthly energies radiating from it. Using this might be VERY risky."
|
||||
icon_state = "d20"
|
||||
var/reusable = TRUE
|
||||
var/used = FALSE
|
||||
|
||||
/obj/item/dice/d20/fate/stealth
|
||||
name = "d20"
|
||||
desc = "A die with twenty sides. The preferred die to throw at the GM."
|
||||
|
||||
/obj/item/dice/d20/fate/one_use
|
||||
reusable = FALSE
|
||||
|
||||
/obj/item/dice/d20/fate/one_use/stealth
|
||||
name = "d20"
|
||||
desc = "A die with twenty sides. The preferred die to throw at the GM."
|
||||
|
||||
/obj/item/dice/d20/fate/cursed
|
||||
name = "cursed Die of Fate"
|
||||
desc = "A die with twenty sides. You feel that rolling this is a REALLY bad idea."
|
||||
color = "#00BB00"
|
||||
|
||||
rigged = DICE_TOTALLY_RIGGED
|
||||
rigged_value = 1
|
||||
|
||||
/obj/item/dice/d20/fate/diceroll(mob/user)
|
||||
. = ..()
|
||||
if(!used)
|
||||
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
|
||||
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans!</span>")
|
||||
return
|
||||
|
||||
if(!reusable)
|
||||
used = TRUE
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
T.visible_message("<span class='userdanger'>[src] flares briefly.</span>")
|
||||
|
||||
addtimer(CALLBACK(src, .proc/effect, user, .), 1 SECONDS)
|
||||
|
||||
/obj/item/dice/d20/fate/equipped(mob/user, slot)
|
||||
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
|
||||
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans! You should leave it alone.</span>")
|
||||
user.unEquip(src)
|
||||
|
||||
/obj/item/dice/d20/fate/proc/create_smoke(amount)
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(amount, 0, drop_location())
|
||||
smoke.start()
|
||||
|
||||
/obj/item/dice/d20/fate/proc/effect(mob/living/carbon/human/user, roll)
|
||||
var/turf/T = get_turf(src)
|
||||
switch(roll)
|
||||
if(1)
|
||||
//Dust
|
||||
T.visible_message("<span class='userdanger'>[user] turns to dust!</span>")
|
||||
user.dust()
|
||||
if(2)
|
||||
//Death
|
||||
T.visible_message("<span class='userdanger'>[user] suddenly dies!</span>")
|
||||
user.death()
|
||||
if(3)
|
||||
//Swarm of creatures
|
||||
T.visible_message("<span class='userdanger'>A swarm of creatures surround [user]!</span>")
|
||||
for(var/direction in GLOB.alldirs)
|
||||
new /mob/living/simple_animal/hostile/netherworld(get_step(get_turf(user),direction))
|
||||
if(4)
|
||||
//Destroy Equipment
|
||||
T.visible_message("<span class='userdanger'>Everything [user] is holding and wearing disappears!</span>")
|
||||
for(var/obj/item/I in user)
|
||||
if(istype(I, /obj/item/implant))
|
||||
continue
|
||||
qdel(I)
|
||||
if(5)
|
||||
//Monkeying
|
||||
T.visible_message("<span class='userdanger'>[user] transforms into a monkey!</span>")
|
||||
user.monkeyize()
|
||||
if(6)
|
||||
//Cut speed
|
||||
T.visible_message("<span class='userdanger'>[user] starts moving slower!</span>")
|
||||
var/datum/species/S = user.dna.species
|
||||
S.speed_mod += 1
|
||||
if(7)
|
||||
//Throw
|
||||
T.visible_message("<span class='userdanger'>Unseen forces throw [user]!</span>")
|
||||
user.Stun(6)
|
||||
user.adjustBruteLoss(50)
|
||||
var/throw_dir = GLOB.cardinal
|
||||
var/atom/throw_target = get_edge_target_turf(user, throw_dir)
|
||||
user.throw_at(throw_target, 200, 4)
|
||||
if(8)
|
||||
//Fueltank Explosion
|
||||
T.visible_message("<span class='userdanger'>An explosion bursts into existence around [user]!</span>")
|
||||
explosion(get_turf(user),-1,0,2, flame_range = 2)
|
||||
if(9)
|
||||
//Cold
|
||||
var/datum/disease/D = new /datum/disease/cold()
|
||||
T.visible_message("<span class='userdanger'>[user] looks a little under the weather!</span>")
|
||||
user.ForceContractDisease(D)
|
||||
if(10)
|
||||
//Nothing
|
||||
T.visible_message("<span class='userdanger'>Nothing seems to happen.</span>")
|
||||
if(11)
|
||||
//Cookie
|
||||
T.visible_message("<span class='userdanger'>A cookie appears out of thin air!</span>")
|
||||
var/obj/item/reagent_containers/food/snacks/cookie/C = new(drop_location())
|
||||
create_smoke(2)
|
||||
C.name = "Cookie of Fate"
|
||||
if(12)
|
||||
//Healing
|
||||
T.visible_message("<span class='userdanger'>[user] looks very healthy!</span>")
|
||||
user.revive()
|
||||
if(13)
|
||||
//Mad Dosh
|
||||
T.visible_message("<span class='userdanger'>Mad dosh shoots out of [src]!</span>")
|
||||
var/turf/Start = get_turf(src)
|
||||
for(var/direction in GLOB.alldirs)
|
||||
var/turf/dirturf = get_step(Start,direction)
|
||||
if(rand(0,1))
|
||||
new /obj/item/stack/spacecash/c1000(dirturf)
|
||||
else
|
||||
var/obj/item/storage/bag/money/M = new(dirturf)
|
||||
for(var/i in 1 to rand(5,50))
|
||||
new /obj/item/coin/gold(M)
|
||||
if(14)
|
||||
//Free Gun
|
||||
T.visible_message("<span class='userdanger'>An impressive gun appears!</span>")
|
||||
create_smoke(2)
|
||||
new /obj/item/gun/projectile/revolver/mateba(drop_location())
|
||||
if(15)
|
||||
//Random One-use spellbook
|
||||
T.visible_message("<span class='userdanger'>A magical looking book drops to the floor!</span>")
|
||||
create_smoke(2)
|
||||
new /obj/item/spellbook/oneuse/random(drop_location())
|
||||
if(16)
|
||||
//Servant & Servant Summon
|
||||
T.visible_message("<span class='userdanger'>A Dice Servant appears in a cloud of smoke!</span>")
|
||||
var/mob/living/carbon/human/H = new(drop_location())
|
||||
create_smoke(2)
|
||||
|
||||
H.equipOutfit(/datum/outfit/butler)
|
||||
var/datum/mind/servant_mind = new /datum/mind()
|
||||
var/datum/objective/O = new
|
||||
O.owner = servant_mind
|
||||
O.target = user.mind
|
||||
O.explanation_text = "Serve [user.real_name]."
|
||||
servant_mind.objectives += O
|
||||
servant_mind.transfer_to(H)
|
||||
|
||||
var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the servant of [user.real_name]?", ROLE_WIZARD, poll_time = 30 SECONDS, source = H)
|
||||
if(length(candidates) && !QDELETED(H))
|
||||
var/mob/dead/observer/C = pick(candidates)
|
||||
message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant")
|
||||
H.key = C.key
|
||||
to_chat(H, "<span class='notice'>You are a servant of [user.real_name]. You must do everything in your power to follow their orders.</span>")
|
||||
|
||||
var/obj/effect/proc_holder/spell/summonmob/S = new
|
||||
S.target_mob = H
|
||||
user.mind.AddSpell(S)
|
||||
|
||||
if(17)
|
||||
//Tator Kit
|
||||
T.visible_message("<span class='userdanger'>A suspicious box appears!</span>")
|
||||
new /obj/item/storage/box/syndicate(drop_location())
|
||||
create_smoke(2)
|
||||
if(18)
|
||||
//Captain ID
|
||||
T.visible_message("<span class='userdanger'>A golden identification card appears!</span>")
|
||||
new /obj/item/card/id/captains_spare(drop_location())
|
||||
create_smoke(2)
|
||||
if(19)
|
||||
//Instrinct Resistance
|
||||
T.visible_message("<span class='userdanger'>[user] looks very robust!</span>")
|
||||
user.physiology.brute_mod *= 0.5
|
||||
user.physiology.burn_mod *= 0.5
|
||||
|
||||
if(20)
|
||||
//Free wizard!
|
||||
T.visible_message("<span class='userdanger'>Magic flows out of [src] and into [user]!</span>")
|
||||
user.mind.make_Wizard()
|
||||
|
||||
// Butler outfit
|
||||
/datum/outfit/butler
|
||||
name = "Butler"
|
||||
uniform = /obj/item/clothing/under/suit_jacket/really_black
|
||||
shoes = /obj/item/clothing/shoes/laceup
|
||||
head = /obj/item/clothing/head/bowlerhat
|
||||
glasses = /obj/item/clothing/glasses/monocle
|
||||
gloves = /obj/item/clothing/gloves/color/white
|
||||
|
||||
/obj/effect/proc_holder/spell/summonmob
|
||||
name = "Summon Servant"
|
||||
desc = "This spell can be used to call your servant, whenever you need it."
|
||||
charge_max = 100
|
||||
clothes_req = 0
|
||||
invocation = "JE VES"
|
||||
invocation_type = "whisper"
|
||||
level_max = 0 //cannot be improved
|
||||
cooldown_min = 100
|
||||
|
||||
var/mob/living/target_mob
|
||||
|
||||
action_icon_state = "summons"
|
||||
|
||||
/obj/effect/proc_holder/spell/summonmob/create_new_targeting()
|
||||
return new /datum/spell_targeting/self
|
||||
|
||||
/obj/effect/proc_holder/spell/summonmob/cast(list/targets, mob/user = usr)
|
||||
if(!target_mob)
|
||||
return
|
||||
var/turf/Start = get_turf(user)
|
||||
for(var/direction in GLOB.alldirs)
|
||||
var/turf/T = get_step(Start,direction)
|
||||
if(!T.density)
|
||||
target_mob.Move(T)
|
||||
@@ -14,26 +14,3 @@
|
||||
icon_state = "away1"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
|
||||
/area/awaymission/challenge/end
|
||||
name = "Administration"
|
||||
icon_state = "away2"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
|
||||
|
||||
/obj/machinery/power/emitter/energycannon
|
||||
name = "energy cannon"
|
||||
desc = "A heavy duty industrial laser"
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
icon_state = "emitter"
|
||||
anchored = 1
|
||||
density = 1
|
||||
|
||||
use_power = NO_POWER_USE
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
|
||||
active = 1
|
||||
locked = 1
|
||||
state = 2
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
//Spacebattle Areas
|
||||
|
||||
/area/awaymission/spacebattle
|
||||
name = "\improper Space Battle"
|
||||
icon_state = "away"
|
||||
requires_power = FALSE
|
||||
report_alerts = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
|
||||
/area/awaymission/spacebattle/cruiser
|
||||
name = "\improper Nanotrasen Cruiser"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate1
|
||||
name = "\improper Syndicate Assault Ship 1"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate2
|
||||
name = "\improper Syndicate Assault Ship 2"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate3
|
||||
name = "\improper Syndicate Assault Ship 3"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate4
|
||||
name = "\improper Syndicate War Sphere 1"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate5
|
||||
name = "\improper Syndicate War Sphere 2"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate6
|
||||
name = "\improper Syndicate War Sphere 3"
|
||||
|
||||
/area/awaymission/spacebattle/syndicate7
|
||||
name = "\improper Syndicate Fighter"
|
||||
|
||||
/area/awaymission/spacebattle/secret
|
||||
name = "\improper Hidden Chamber"
|
||||
@@ -1,203 +0,0 @@
|
||||
/* Station-Collision(sc) away mission map specific stuff
|
||||
*
|
||||
* Notes:
|
||||
* Feel free to use parts of this map, or even all of it for your own project. Just include me in the credits :)
|
||||
*
|
||||
* Some of this code unnecessary, but the intent is to add a little bit of everything to serve as examples
|
||||
* for anyone who wants to make their own stuff.
|
||||
*
|
||||
* Contains:
|
||||
* Areas
|
||||
* Landmarks
|
||||
* Guns
|
||||
* Safe code hints
|
||||
* Captain's safe
|
||||
* Modified Nar-Sie
|
||||
*/
|
||||
|
||||
/*
|
||||
* Areas
|
||||
*/
|
||||
//Gateroom gets its own APC specifically for the gate
|
||||
/area/awaymission/gateroom
|
||||
|
||||
//Library, medbay, storage room
|
||||
/area/awaymission/southblock
|
||||
|
||||
//Arrivals, security, hydroponics, shuttles (since they dont move, they dont need specific areas)
|
||||
/area/awaymission/arrivalblock
|
||||
|
||||
//Crew quarters, cafeteria, chapel
|
||||
/area/awaymission/midblock
|
||||
|
||||
//engineering, bridge (not really north but it doesnt really need its own APC)
|
||||
/area/awaymission/northblock
|
||||
|
||||
//That massive research room
|
||||
/area/awaymission/research
|
||||
|
||||
//Syndicate shuttle
|
||||
/area/awaymission/syndishuttle
|
||||
|
||||
|
||||
/*
|
||||
* Landmarks - Instead of spawning a new object type, I'll spawn the bible using a landmark!
|
||||
*/
|
||||
/obj/effect/landmark/sc_bible_spawner
|
||||
name = "Safecode hint spawner"
|
||||
|
||||
/obj/effect/landmark/sc_bible_spawner/New()
|
||||
. = ..()
|
||||
var/obj/item/storage/bible/B = new /obj/item/storage/bible/booze(src.loc)
|
||||
B.name = "The Holy book of the Geometer"
|
||||
B.deity_name = "Narsie"
|
||||
B.icon_state = "melted"
|
||||
B.item_state = "melted"
|
||||
new /obj/item/paper/sc_safehint_paper_bible(B)
|
||||
new /obj/item/pen(B)
|
||||
qdel(src)
|
||||
|
||||
/*
|
||||
* Guns - I'm making these specifically so that I dont spawn a pile of fully loaded weapons on the map.
|
||||
*/
|
||||
//Captain's retro laser - Fires practice laser shots instead.
|
||||
/obj/item/gun/energy/laser/retro/sc_retro
|
||||
desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/laser/practice)
|
||||
clumsy_check = 0 //No sense in having a harmless gun blow up in the clowns face
|
||||
|
||||
//Syndicate sub-machine guns.
|
||||
/obj/item/gun/projectile/automatic/c20r/sc_c20r
|
||||
|
||||
/obj/item/gun/projectile/automatic/c20r/sc_c20r/New()
|
||||
..()
|
||||
for(var/ammo in magazine.stored_ammo)
|
||||
if(prob(95)) //95% chance
|
||||
magazine.stored_ammo -= ammo
|
||||
|
||||
//Barman's shotgun
|
||||
/obj/item/gun/projectile/shotgun/sc_pump
|
||||
|
||||
/obj/item/gun/projectile/shotgun/sc_pump/New()
|
||||
..()
|
||||
for(var/ammo in magazine.stored_ammo)
|
||||
if(prob(95)) //95% chance
|
||||
magazine.stored_ammo -= ammo
|
||||
|
||||
//Lasers
|
||||
/obj/item/gun/energy/laser/practice/sc_laser
|
||||
name = "old laser"
|
||||
desc = "A once potent weapon, years of dust have collected in the chamber and lens, weakening the beam significantly."
|
||||
clumsy_check = 0
|
||||
|
||||
/*
|
||||
* Safe code hints
|
||||
*/
|
||||
|
||||
//These vars hold the code itself, they'll be generated at round-start
|
||||
GLOBAL_VAR_INIT(sc_safecode1, "[rand(0,9)]") // Do these even need to be strings? Probably for the best
|
||||
GLOBAL_VAR_INIT(sc_safecode2, "[rand(0,9)]")
|
||||
GLOBAL_VAR_INIT(sc_safecode3, "[rand(0,9)]")
|
||||
GLOBAL_VAR_INIT(sc_safecode4, "[rand(0,9)]")
|
||||
GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
|
||||
|
||||
//Pieces of paper actually containing the hints
|
||||
/obj/item/paper/sc_safehint_paper_prison
|
||||
name = "smudged paper"
|
||||
|
||||
/obj/item/paper/sc_safehint_paper_prison/New()
|
||||
..()
|
||||
info = "<i>The ink is smudged, you can only make out a couple numbers:</i> '[GLOB.sc_safecode1]**[GLOB.sc_safecode4]*'"
|
||||
|
||||
/obj/item/paper/sc_safehint_paper_hydro
|
||||
name = "shredded paper"
|
||||
/obj/item/paper/sc_safehint_paper_hydro/New()
|
||||
..()
|
||||
info = "<i>Although the paper is shredded, you can clearly see the number:</i> '[GLOB.sc_safecode2]'"
|
||||
|
||||
/obj/item/paper/sc_safehint_paper_caf
|
||||
name = "blood-soaked paper"
|
||||
//This does not have to be in New() because it is a constant. There are no variables in it i.e. [sc_safcode]
|
||||
info = "<font color=red><i>This paper is soaked in blood, it is impossible to read any text.</i></font>"
|
||||
|
||||
/obj/item/paper/sc_safehint_paper_bible
|
||||
name = "hidden paper"
|
||||
/obj/item/paper/sc_safehint_paper_bible/New()
|
||||
..()
|
||||
info = {"<i>It would appear that the pen hidden with the paper had leaked ink over the paper.
|
||||
However you can make out the last three digits:</i>'[GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]'
|
||||
"}
|
||||
|
||||
/obj/item/paper/sc_safehint_paper_shuttle
|
||||
info = {"<b>Target:</b> Research-station Epsilon<br>
|
||||
<b>Objective:</b> Prototype weaponry. The captain likely keeps them locked in her safe.<br>
|
||||
<br>
|
||||
Our on-board spy has learned the code and has hidden away a few copies of the code around the station. Unfortunatly he has been captured by security
|
||||
Your objective is to split up, locate any of the papers containing the captain's safe code, open the safe and
|
||||
secure anything found inside. If possible, recover the imprisioned syndicate operative and recieve the code from him.<br>
|
||||
<br>
|
||||
<u>As always, eliminate anyone who gets in the way.</u><br>
|
||||
<br>
|
||||
Your assigned ship is designed specifically for penetrating the hull of another station or ship with minimal damage to operatives.
|
||||
It is completely fly-by-wire meaning you have just have to enjoy the ride and when the red light comes on... find something to hold onto!
|
||||
"}
|
||||
/*
|
||||
* Captain's safe
|
||||
*/
|
||||
/obj/item/storage/secure/safe/sc_ssafe
|
||||
name = "Captain's secure safe"
|
||||
|
||||
/obj/item/storage/secure/safe/sc_ssafe/New()
|
||||
..()
|
||||
l_code = "[GLOB.sc_safecode1][GLOB.sc_safecode2][GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]"
|
||||
l_set = 1
|
||||
new /obj/item/gun/energy/mindflayer(src)
|
||||
new /obj/item/soulstone(src)
|
||||
new /obj/item/clothing/head/helmet/space/cult(src)
|
||||
new /obj/item/clothing/suit/space/cult(src)
|
||||
//new /obj/item/teleportation_scroll(src)
|
||||
new /obj/item/stack/ore/diamond(src)
|
||||
|
||||
/*
|
||||
* Modified Nar-Sie
|
||||
*/
|
||||
/obj/singularity/narsie/sc_Narsie
|
||||
desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible."
|
||||
move_self = 0 //Contianed narsie does not move!
|
||||
grav_pull = 0 //Contained narsie does not pull stuff in!
|
||||
var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/hostile/construct)
|
||||
|
||||
//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment
|
||||
/obj/singularity/narsie/sc_Narsie/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/singularity/narsie/sc_Narsie/process()
|
||||
eat()
|
||||
if(prob(25))
|
||||
mezzer()
|
||||
|
||||
/obj/singularity/narsie/sc_Narsie/consume(atom/A)
|
||||
if(!A.simulated)
|
||||
return FALSE
|
||||
if(is_type_in_list(A, uneatable))
|
||||
return FALSE
|
||||
if(istype(A,/mob/living))
|
||||
var/mob/living/L = A
|
||||
L.gib()
|
||||
else if(istype(A,/obj/))
|
||||
var/obj/O = A
|
||||
O.ex_act(1)
|
||||
if(O) qdel(O)
|
||||
else if(isturf(A))
|
||||
var/turf/T = A
|
||||
if(T.intact)
|
||||
for(var/obj/O in T.contents)
|
||||
if(O.level != 1)
|
||||
continue
|
||||
if(O.invisibility == 101)
|
||||
src.consume(O)
|
||||
T.ChangeTurf(T.baseturf)
|
||||
return
|
||||
|
||||
/obj/singularity/narsie/sc_Narsie/ex_act()
|
||||
return
|
||||
@@ -1,242 +0,0 @@
|
||||
/* Code for the Wild West map by Brotemis
|
||||
* Contains:
|
||||
* Wish Granter
|
||||
* Meat Grinder
|
||||
*/
|
||||
|
||||
//Wild West Areas
|
||||
|
||||
/area/awaymission/wwmines
|
||||
name = "\improper Wild West Mines"
|
||||
icon_state = "away1"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
/area/awaymission/wwgov
|
||||
name = "\improper Wild West Mansion"
|
||||
icon_state = "away2"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
/area/awaymission/wwrefine
|
||||
name = "\improper Wild West Refinery"
|
||||
icon_state = "away3"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
/area/awaymission/wwvault
|
||||
name = "\improper Wild West Vault"
|
||||
icon_state = "away3"
|
||||
|
||||
/area/awaymission/wwvaultdoors
|
||||
name = "\improper Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power
|
||||
icon_state = "away2"
|
||||
requires_power = FALSE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
|
||||
/*
|
||||
* Wish Granter
|
||||
*/
|
||||
/obj/machinery/wish_granter_dark
|
||||
name = "Wish Granter"
|
||||
desc = "You're not so sure about this, anymore..."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "syndbeacon"
|
||||
|
||||
anchored = 1
|
||||
density = 1
|
||||
use_power = NO_POWER_USE
|
||||
|
||||
var/chargesa = 1
|
||||
var/insistinga = 0
|
||||
|
||||
/obj/machinery/wish_granter_dark/attack_hand(mob/living/carbon/human/user as mob)
|
||||
usr.set_machine(src)
|
||||
|
||||
if(chargesa <= 0)
|
||||
to_chat(user, "The Wish Granter lies silent.")
|
||||
return
|
||||
|
||||
else if(!istype(user, /mob/living/carbon/human))
|
||||
to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.")
|
||||
return
|
||||
|
||||
else if(is_special_character(user))
|
||||
to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.")
|
||||
|
||||
else if(!insistinga)
|
||||
to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?")
|
||||
insistinga++
|
||||
|
||||
else
|
||||
chargesa--
|
||||
insistinga = 0
|
||||
var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","Immortality","Peace")
|
||||
switch(wish)
|
||||
if("Power")
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
ADD_TRAIT(user, TRAIT_LASEREYES, "ww_wishgranter")
|
||||
user.dna.SetSEState(GLOB.fireblock, TRUE)
|
||||
singlemutcheck(user, GLOB.fireblock, MUTCHK_FORCED)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(!isshadowperson(human))
|
||||
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species(/datum/species/shadow)
|
||||
user.regenerate_icons()
|
||||
if("Wealth")
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
new /obj/structure/closet/syndicate/resources/everything(loc)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(!isshadowperson(human))
|
||||
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species(/datum/species/shadow)
|
||||
user.regenerate_icons()
|
||||
if("Immortality")
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
user.verbs += /mob/living/carbon/proc/immortality
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/human = user
|
||||
if(!isshadowperson(human))
|
||||
to_chat(user, "<span class='warning'>Your flesh rapidly mutates!</span>")
|
||||
to_chat(user, "<b>You are now a Shadow Person, a mutant race of darkness-dwelling humanoids.</b>")
|
||||
to_chat(user, "<span class='warning'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
|
||||
to_chat(user, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species(/datum/species/shadow)
|
||||
user.regenerate_icons()
|
||||
if("Peace")
|
||||
to_chat(user, "<B>Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.</B>")
|
||||
to_chat(user, "You feel as if you just narrowly avoided a terrible fate...")
|
||||
for(var/mob/living/simple_animal/hostile/faithless/F in GLOB.mob_living_list)
|
||||
F.death()
|
||||
|
||||
|
||||
///////////////Meatgrinder//////////////
|
||||
|
||||
|
||||
/obj/effect/meatgrinder
|
||||
name = "Meat Grinder"
|
||||
desc = "What is that thing?"
|
||||
density = TRUE
|
||||
icon = 'icons/mob/blob.dmi'
|
||||
icon_state = "blobpod"
|
||||
var/triggered = FALSE
|
||||
|
||||
/obj/effect/meatgrinder/Crossed(AM as mob|obj, oldloc)
|
||||
Bumped(AM)
|
||||
|
||||
/obj/effect/meatgrinder/Bumped(mob/M as mob|obj)
|
||||
|
||||
if(triggered) return
|
||||
|
||||
if(istype(M, /mob/living/carbon/human))
|
||||
visible_message("<span class='danger'>[M] triggers [src]!</span>")
|
||||
triggered = TRUE
|
||||
triggerrad1(M)
|
||||
|
||||
/obj/effect/meatgrinder/proc/triggerrad1(mob)
|
||||
for(var/mob/O in viewers(world.view, src.loc))
|
||||
do_sparks(3, 1, src)
|
||||
explosion(mob, 1, 0, 0, 0)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/////For the Wishgranter///////////
|
||||
|
||||
/mob/living/carbon/proc/immortality()
|
||||
set category = "Immortality"
|
||||
set name = "Resurrection"
|
||||
|
||||
var/mob/living/carbon/C = usr
|
||||
if(!C.stat)
|
||||
to_chat(C, "<span class='notice'>You're not dead yet!</span>")
|
||||
return
|
||||
to_chat(C, "<span class='notice'>Death is not your end!</span>")
|
||||
|
||||
spawn(rand(800,1200))
|
||||
C.revive()
|
||||
to_chat(C, "<span class='notice'>You have regenerated.</span>")
|
||||
C.visible_message("<span class='warning'>[usr] appears to wake from the dead, having healed all wounds.</span>")
|
||||
return 1
|
||||
|
||||
/obj/item/wildwest_communicator
|
||||
name = "Syndicate Comms Device"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "gangtool-red"
|
||||
item_state = "walkietalkie"
|
||||
desc = "Use to communicate with the syndicate base commander."
|
||||
var/used = FALSE
|
||||
|
||||
/obj/item/wildwest_communicator/attack_self(mob/living/user)
|
||||
|
||||
if(!is_away_level(user.z))
|
||||
to_chat(user, "<span class='warning'>The communicator emits a faint beep. Perhaps it is out of range?</span>")
|
||||
return
|
||||
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>The communicator buzzes, and then dies. Apparently nobody is responding.</span>")
|
||||
return
|
||||
|
||||
var/initial_question = "<span class='warning'>The communicator buzzes, and you hear a voice on the line, almost lost in the static. 'Hello? Who is this?'.</span>"
|
||||
to_chat(user, initial_question)
|
||||
|
||||
var/const/option_explorer = "(TRUTH) Explorers."
|
||||
var/const/option_bluff = "(BLUFF) Weapons delivery."
|
||||
var/const/option_threat = "(THREAT) NT, here to kick your ass!"
|
||||
var/const/option_syndicate = "(SYNDI) Agent reporting in..."
|
||||
var/list/response_choices = list(option_explorer, option_bluff, option_threat)
|
||||
|
||||
if(istype(user, /mob/living) && user.mind)
|
||||
if(user.mind.special_role == "Traitor")
|
||||
response_choices |= option_syndicate
|
||||
|
||||
var/selected_choice = input(user, "How do you respond on the comms device?", "Response to Syndicate") as null|anything in response_choices
|
||||
|
||||
if(!selected_choice)
|
||||
return
|
||||
switch(selected_choice)
|
||||
if(option_explorer)
|
||||
to_chat(user, "<span class='warning'>The communicator buzzes, and you hear the voice again: 'Hah! You sure picked the wrong asteroid to explore. Get em, boys!'</span>")
|
||||
if(option_bluff)
|
||||
to_chat(user, "<span class='warning'>The communicator buzzes, and you hear the voice again: 'Really? I think not. Get them!'</span>")
|
||||
if(option_threat)
|
||||
to_chat(user, "<span class='warning'>The communicator buzzes, and you hear the voice again: 'Oh really now?' You hear a clicking sound. 'Team, get back here. We have trouble'. Then the line goes dead.</span>")
|
||||
for(var/thing in GLOB.landmarks_list)
|
||||
var/obj/effect/landmark/L = thing
|
||||
if(L.name == "wildwest_syndibackup")
|
||||
var/mob/living/simple_animal/hostile/syndicate/ranged/space/R = new /mob/living/simple_animal/hostile/syndicate/ranged/space(get_turf(L))
|
||||
R.name = "Syndi Recon Team"
|
||||
if(option_syndicate)
|
||||
to_chat(user, "<span class='warning'>The communicator buzzes, and you hear the voice again: 'Well, I'll be damned. An agent out here? You must be off-mission! Leave my troops alone, and they will do the same for you. Our Commander will handle you himself.'</span>")
|
||||
stand_down()
|
||||
used = TRUE
|
||||
|
||||
/obj/item/wildwest_communicator/proc/stand_down()
|
||||
for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in GLOB.alive_mob_list)
|
||||
W.on_alert = FALSE
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/wildwest
|
||||
var/on_alert = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/ListTargets()
|
||||
if(on_alert)
|
||||
return ..()
|
||||
return list()
|
||||
|
||||
/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/death(gibbed)
|
||||
// putting this up here so we don't say anything after deathgasp
|
||||
if(can_die() && !on_alert)
|
||||
say("How could you betray the Syndicate?")
|
||||
for(var/mob/living/simple_animal/hostile/syndicate/ranged/wildwest/W in GLOB.alive_mob_list)
|
||||
W.on_alert = TRUE
|
||||
return ..(gibbed)
|
||||
@@ -431,3 +431,16 @@
|
||||
explosion(src.loc,(dist),(dist*2),(dist*4))
|
||||
qdel(src)
|
||||
return(gain)
|
||||
|
||||
/obj/singularity/onetile
|
||||
dissipate = FALSE
|
||||
move_self = FALSE
|
||||
grav_pull = TRUE
|
||||
|
||||
/obj/singularity/onetile/admin_investigate_setup()
|
||||
return
|
||||
|
||||
/obj/singularity/onetile/process()
|
||||
eat()
|
||||
if(prob(1))
|
||||
mezzer()
|
||||
|
||||
Reference in New Issue
Block a user