mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-26 05:27:39 +01:00
First pass on making heist a pirate mode (human based)
This commit is contained in:
@@ -190,25 +190,25 @@ var/global/datum/shuttle_controller/shuttle_controller
|
||||
shuttles["Special Operations"] = ERT
|
||||
process_shuttles += ERT
|
||||
|
||||
//Vox Shuttle.
|
||||
//Skipjack.
|
||||
var/datum/shuttle/multi_shuttle/VS = new/datum/shuttle/multi_shuttle()
|
||||
VS.origin = locate(/area/shuttle/vox/station)
|
||||
VS.origin = locate(/area/shuttle/skipjack/station)
|
||||
|
||||
VS.destinations = list(
|
||||
"Fore Starboard Solars" = locate(/area/vox_station/northeast_solars),
|
||||
"Fore Port Solars" = locate(/area/vox_station/northwest_solars),
|
||||
"Aft Starboard Solars" = locate(/area/vox_station/southeast_solars),
|
||||
"Aft Port Solars" = locate(/area/vox_station/southwest_solars),
|
||||
"Mining asteroid" = locate(/area/vox_station/mining)
|
||||
"Fore Starboard Solars" = locate(/area/skipjack_station/northeast_solars),
|
||||
"Fore Port Solars" = locate(/area/skipjack_station/northwest_solars),
|
||||
"Aft Starboard Solars" = locate(/area/skipjack_station/southeast_solars),
|
||||
"Aft Port Solars" = locate(/area/skipjack_station/southwest_solars),
|
||||
"Mining asteroid" = locate(/area/skipjack_station/mining)
|
||||
)
|
||||
|
||||
VS.announcer = "NSV Icarus"
|
||||
VS.arrival_message = "Attention, Exodus, we just tracked a small target bypassing our defensive perimeter. Can't fire on it without hitting the station - you've got incoming visitors, like it or not."
|
||||
VS.departure_message = "Your guests are pulling away, Exodus - moving too fast for us to draw a bead on them. Looks like they're heading out of the system at a rapid clip."
|
||||
VS.interim = locate(/area/vox_station/transit)
|
||||
VS.interim = locate(/area/skipjack_station/transit)
|
||||
|
||||
VS.warmup_time = 0
|
||||
shuttles["Vox Skipjack"] = VS
|
||||
shuttles["Skipjack"] = VS
|
||||
|
||||
//Nuke Ops shuttle.
|
||||
var/datum/shuttle/multi_shuttle/MS = new/datum/shuttle/multi_shuttle()
|
||||
|
||||
@@ -330,8 +330,8 @@ area/space/atmosalert()
|
||||
/area/shuttle/research/outpost
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/shuttle/vox/station
|
||||
name = "\improper Vox Skipjack"
|
||||
/area/shuttle/skipjack/station
|
||||
name = "\improper Skipjack"
|
||||
icon_state = "yellow"
|
||||
requires_power = 0
|
||||
|
||||
@@ -527,31 +527,28 @@ area/space/atmosalert()
|
||||
icon_state = "yellow"
|
||||
requires_power = 0
|
||||
|
||||
/area/vox_station
|
||||
requires_power = 0
|
||||
flags = RAD_SHIELDED
|
||||
/area/skipjack_station/transit
|
||||
|
||||
/area/vox_station/transit
|
||||
name = "\improper hyperspace"
|
||||
icon_state = "shuttle"
|
||||
|
||||
/area/vox_station/southwest_solars
|
||||
/area/skipjack_station/southwest_solars
|
||||
name = "\improper aft port solars"
|
||||
icon_state = "southwest"
|
||||
|
||||
/area/vox_station/northwest_solars
|
||||
/area/skipjack_station/northwest_solars
|
||||
name = "\improper fore port solars"
|
||||
icon_state = "northwest"
|
||||
|
||||
/area/vox_station/northeast_solars
|
||||
/area/skipjack_station/northeast_solars
|
||||
name = "\improper fore starboard solars"
|
||||
icon_state = "northeast"
|
||||
|
||||
/area/vox_station/southeast_solars
|
||||
/area/skipjack_station/southeast_solars
|
||||
name = "\improper aft starboard solars"
|
||||
icon_state = "southeast"
|
||||
|
||||
/area/vox_station/mining
|
||||
/area/skipjack_station/mining
|
||||
name = "\improper nearby mining asteroid"
|
||||
icon_state = "north"
|
||||
|
||||
|
||||
@@ -20,9 +20,10 @@
|
||||
break
|
||||
additional_antag_types |= antag_id
|
||||
i++
|
||||
|
||||
..()
|
||||
|
||||
/datum/game_mode/calamity/check_victory()
|
||||
world << "<font size = 3><b>This terrible, terrible day has finally ended!</b></font>"
|
||||
|
||||
#undef ANTAG_TYPE_RATIO
|
||||
#undef ANTAG_TYPE_RATIO
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
VOX HEIST ROUNDTYPE
|
||||
HEIST ROUNDTYPE
|
||||
*/
|
||||
|
||||
var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' objective. Clumsy, rewrite sometime.
|
||||
@@ -16,17 +16,19 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind'
|
||||
end_on_antag_death = 1
|
||||
|
||||
/datum/game_mode/heist/check_finished()
|
||||
|
||||
if(!..())
|
||||
var/datum/shuttle/multi_shuttle/skipjack = shuttle_controller.shuttles["Vox Skipjack"]
|
||||
if (skipjack && skipjack.returned_home)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
/datum/game_mode/heist/cleanup()
|
||||
//the skipjack and everything in it have left and aren't coming back, so get rid of them.
|
||||
var/area/skipjack = locate(/area/shuttle/vox/station)
|
||||
var/area/skipjack = locate(/area/shuttle/skipjack/station)
|
||||
for (var/mob/living/M in skipjack.contents)
|
||||
//maybe send the player a message that they've gone home/been kidnapped? Someone responsible for vox lore should write that.
|
||||
del(M)
|
||||
for (var/obj/O in skipjack.contents)
|
||||
del(O) //no hiding in lockers or anything
|
||||
@@ -688,7 +688,7 @@ datum/objective/capture
|
||||
else
|
||||
return 0
|
||||
|
||||
//Vox heist objectives.
|
||||
// Heist objectives.
|
||||
datum/objective/heist
|
||||
proc/choose_target()
|
||||
return
|
||||
@@ -725,7 +725,7 @@ datum/objective/heist/kidnap
|
||||
//if (!target.current.restrained())
|
||||
// return 0 // They're loose. Close but no cigar.
|
||||
|
||||
var/area/shuttle/vox/station/A = locate()
|
||||
var/area/shuttle/skipjack/station/A = locate()
|
||||
for(var/mob/living/carbon/human/M in A)
|
||||
if(target.current == M)
|
||||
return 1 //They're restrained on the shuttle. Success.
|
||||
@@ -776,7 +776,7 @@ datum/objective/heist/loot
|
||||
|
||||
var/total_amount = 0
|
||||
|
||||
for(var/obj/O in locate(/area/shuttle/vox/station))
|
||||
for(var/obj/O in locate(/area/shuttle/skipjack/station))
|
||||
if(istype(O,target)) total_amount++
|
||||
for(var/obj/I in O.contents)
|
||||
if(istype(I,target)) total_amount++
|
||||
@@ -825,7 +825,7 @@ datum/objective/heist/salvage
|
||||
|
||||
var/total_amount = 0
|
||||
|
||||
for(var/obj/item/O in locate(/area/shuttle/vox/station))
|
||||
for(var/obj/item/O in locate(/area/shuttle/skipjack/station))
|
||||
|
||||
var/obj/item/stack/sheet/S
|
||||
if(istype(O,/obj/item/stack/sheet))
|
||||
@@ -851,20 +851,20 @@ datum/objective/heist/salvage
|
||||
|
||||
|
||||
/datum/objective/heist/inviolate_crew
|
||||
explanation_text = "Do not leave any Vox behind, alive or dead."
|
||||
explanation_text = "Do not leave anyone behind, alive or dead."
|
||||
|
||||
check_completion()
|
||||
if(raiders && raiders.is_raider_crew_safe()) return 1
|
||||
return 0
|
||||
|
||||
#define MAX_VOX_KILLS 10 //Number of kills during the round before the Inviolate is broken.
|
||||
//Would be nice to use vox-specific kills but is currently not feasible.
|
||||
var/global/vox_kills = 0 //Used to check the Inviolate.
|
||||
#define MAX_RAIDER_KILLS 10 //Number of kills during the round before the Inviolate is broken.
|
||||
//Would be nice to use raider-specific kills but is currently not feasible.
|
||||
var/global/raider_kills = 0 //Used to check the Inviolate.
|
||||
|
||||
datum/objective/heist/inviolate_death
|
||||
explanation_text = "Follow the Inviolate. Minimise death and loss of resources."
|
||||
explanation_text = "Minimise deaths and loss of resources."
|
||||
check_completion()
|
||||
if(vox_kills > MAX_VOX_KILLS) return 0
|
||||
if(raider_kills > MAX_RAIDER_KILLS) return 0
|
||||
return 1
|
||||
|
||||
//Borer objective(s).
|
||||
|
||||
@@ -64,3 +64,24 @@
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] hits [src] and bounces off!</span>")
|
||||
return 1
|
||||
|
||||
// The following mirror is ~special~.
|
||||
|
||||
/obj/structure/mirror/raider
|
||||
name = "cracked mirror"
|
||||
desc = "Something seems strange about this old, dirty mirror. Your reflection doesn't look like you remember it."
|
||||
icon_state = "mirror_broke"
|
||||
shattered = 1
|
||||
|
||||
/obj/structure/mirror/raider/attack_hand(var/mob/living/carbon/human/user)
|
||||
|
||||
if(istype(get_area(src),/area/shuttle/skipjack/station))
|
||||
if(istype(user) && user.mind && user.mind.special_role == "Raider" && user.species != "Vox" && is_alien_whitelisted(user, "Vox"))
|
||||
var/choice = input("Do you wish to become a Vox? This is not reversible.") as null|anything in list("No","Yes")
|
||||
if(choice && choice == "Yes")
|
||||
var/mob/living/carbon/human/vox = new(get_turf(src),"Vox")
|
||||
vox.equip_vox_raider()
|
||||
if(user.mind)
|
||||
user.mind.transfer_to(vox)
|
||||
del(user)
|
||||
..()
|
||||
@@ -136,7 +136,7 @@
|
||||
icon = 'icons/turf/floors.dmi'
|
||||
icon_state = "plating"
|
||||
|
||||
/turf/simulated/shuttle/plating/vox //Vox skipjack plating
|
||||
/turf/simulated/shuttle/plating/vox //Skipjack plating
|
||||
oxygen = 0
|
||||
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle.
|
||||
icon_state = "floor4"
|
||||
|
||||
/turf/simulated/shuttle/floor4/vox //Vox skipjack floors
|
||||
/turf/simulated/shuttle/floor4/vox //skipjack floors
|
||||
name = "skipjack floor"
|
||||
oxygen = 0
|
||||
nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD
|
||||
@@ -216,4 +216,4 @@
|
||||
icon_state = "snow"
|
||||
|
||||
/turf/simulated/floor/plating/snow/ex_act(severity)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -15,7 +15,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
|
||||
"cultist" = IS_MODE_COMPILED("cult"), // 8
|
||||
"infested monkey" = IS_MODE_COMPILED("monkey"), // 9
|
||||
"ninja" = "true", // 10
|
||||
"vox raider" = IS_MODE_COMPILED("heist"), // 11
|
||||
"raider" = IS_MODE_COMPILED("heist"), // 11
|
||||
"diona" = 1, // 12
|
||||
"mutineer" = IS_MODE_COMPILED("mutiny"), // 13
|
||||
"pAI candidate" = 1, // -- TLE // 14
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
item_state = "w_suit"
|
||||
|
||||
/obj/item/clothing/under/captain_fly
|
||||
name = "rogue captains uniform"
|
||||
name = "rogue's uniform"
|
||||
desc = "For the man who doesn't care because he's still free."
|
||||
icon_state = "captain_fly"
|
||||
item_state = "captain_fly"
|
||||
@@ -154,7 +154,7 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
|
||||
/obj/item/clothing/under/gentlesuit
|
||||
name = "Gentlemans Suit"
|
||||
name = "gentlemans suit"
|
||||
desc = "A silk black shirt with a white tie and a matching gray vest and slacks. Feels proper."
|
||||
icon_state = "gentlesuit"
|
||||
item_state = "gentlesuit"
|
||||
@@ -477,14 +477,14 @@
|
||||
item_color = "tan_suit"
|
||||
|
||||
/obj/item/clothing/under/serviceoveralls
|
||||
name = "Workman outfit"
|
||||
name = "workman outfit"
|
||||
desc = "The very image of a working man. Not that you're probably doing work."
|
||||
icon_state = "mechanic"
|
||||
item_state = "mechanic"
|
||||
item_color = "mechanic"
|
||||
|
||||
/obj/item/clothing/under/cheongsam
|
||||
name = "White Cheongsam"
|
||||
name = "white cheongsam"
|
||||
desc = "It is a white cheongsam dress."
|
||||
icon_state = "mai_yang"
|
||||
item_state = "mai_yang"
|
||||
@@ -496,4 +496,4 @@
|
||||
desc = "A bold but yet conservative outfit, red corduroys, navy blazer and a tie."
|
||||
icon_state = "blue_blazer"
|
||||
item_state = "blue_blazer"
|
||||
item_color = "blue_blazer"
|
||||
item_color = "blue_blazer"
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
sql_report_death(src)
|
||||
ticker.mode.check_win()
|
||||
if(istype(ticker.mode,/datum/game_mode/heist))
|
||||
vox_kills++ //Bad vox. Shouldn't be killing humans.
|
||||
raider_kills++ //Bad raider. Shouldn't be killing people.
|
||||
|
||||
return ..(gibbed,species.death_message)
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
//Vox pinning weapon.
|
||||
/obj/item/weapon/gun/launcher/spikethrower
|
||||
name = "vox spike thrower"
|
||||
|
||||
name = "spike thrower"
|
||||
desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive."
|
||||
|
||||
var/last_regen = 0
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/mindflayer
|
||||
name = "mind flayer"
|
||||
desc = "A prototype weapon recovered from the ruins of Research-Station Epsilon."
|
||||
desc = "A custom-built weapon of some kind."
|
||||
icon_state = "xray"
|
||||
projectile_type = /obj/item/projectile/beam/mindflayer
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/machinery/computer/shuttle_control/multi/vox
|
||||
name = "skipjack control console"
|
||||
req_access = list(access_syndicate)
|
||||
shuttle_tag = "Vox Skipjack"
|
||||
shuttle_tag = "Skipjack"
|
||||
|
||||
/obj/machinery/computer/shuttle_control/multi/syndicate
|
||||
name = "mercenary shuttle control console"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//This is a holder for things like the Vox and Nuke shuttle.
|
||||
//This is a holder for things like the Skipjack and Nuke shuttle.
|
||||
/datum/shuttle/multi_shuttle
|
||||
|
||||
var/cloaked = 1
|
||||
|
||||
Reference in New Issue
Block a user