First pass on making heist a pirate mode (human based)

This commit is contained in:
Zuhayr
2015-03-21 11:13:05 +10:30
parent 4fdc00dee4
commit 8d698f0c06
18 changed files with 5397 additions and 5462 deletions
+9 -9
View File
@@ -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()
+8 -11
View File
@@ -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"
+2 -1
View File
@@ -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
+5 -3
View File
@@ -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
+10 -10
View File
@@ -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).
+21
View File
@@ -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)
..()
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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)
+2 -1
View File
@@ -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 -1
View File
@@ -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 -1
View File
@@ -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