diff --git a/baystation12.dme b/baystation12.dme index f002ef969d2..e68d87a85f3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -252,6 +252,7 @@ #include "code\game\gamemodes\malfunction\malfunction.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\ninja\ninja.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\nuclearbomb.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" diff --git a/code/game/gamemodes/autotraitor/autotraitor.dm b/code/game/gamemodes/autotraitor/autotraitor.dm index c5b159dd1a9..f5ddfdfb366 100644 --- a/code/game/gamemodes/autotraitor/autotraitor.dm +++ b/code/game/gamemodes/autotraitor/autotraitor.dm @@ -11,7 +11,7 @@ /datum/game_mode/traitor/autotraitor/announce() ..() - world << "Game mode is AutoTraitor. Traitors will be added to the round automagically as needed.
Expect bugs.
" + world << "Game mode is AutoTraitor. Traitors will be added to the round automagically as needed." /datum/game_mode/traitor/autotraitor/pre_setup() diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index 2314f382588..55012d30e25 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -211,7 +211,7 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp ninja_selection_active = 0 //The ninja will be created on the right spawn point or at late join. - var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin )) + var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(ninjastart)) new_ninja.key = ninja_key new_ninja.wear_suit:randomize_param()//Give them a random set of suit parameters. new_ninja.internal = new_ninja.s_store //So the poor ninja has something to breath when they spawn in spess. @@ -491,8 +491,8 @@ As such, it's hard-coded for now. No reason for it not to be, really. //=======//NINJA CREATION PROCS//=======// -/proc/create_space_ninja(obj/spawn_point) - var/mob/living/carbon/human/new_ninja = new(spawn_point.loc) +/proc/create_space_ninja(var/loc/spawnpoint) + var/mob/living/carbon/human/new_ninja = new(spawnpoint) var/ninja_title = pick(ninja_titles) var/ninja_name = pick(ninja_names) new_ninja.gender = pick(MALE, FEMALE) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e1fbf5dfb4f..c0dfd4fb7c3 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -261,7 +261,7 @@ Implants; set_security_level(SEC_LEVEL_BLUE)*/ -/datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=1) +/datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=0) var/list/players = list() var/list/candidates = list() var/list/drafted = list() @@ -275,7 +275,7 @@ Implants; if(BE_WIZARD) roletext="wizard" if(BE_REV) roletext="revolutionary" if(BE_CULTIST) roletext="cultist" - + if(BE_NINJA) roletext="ninja" // Ultimate randomizing code right here for(var/mob/new_player/player in player_list) diff --git a/code/game/gamemodes/ninja/ninja.dm b/code/game/gamemodes/ninja/ninja.dm new file mode 100644 index 00000000000..1f5e7e5c9fa --- /dev/null +++ b/code/game/gamemodes/ninja/ninja.dm @@ -0,0 +1,41 @@ +/datum/game_mode + var/list/datum/mind/ninjas = list() + +/datum/game_mode/ninja + name = "ninja" + config_tag = "ninja" + required_players = 2 + required_players_secret = 10 + required_enemies = 1 + recommended_enemies = 1 + +/datum/game_mode/ninja/announce() + world << "The current game mode is Ninja!" + +/datum/game_mode/ninja/can_start() + if(!..()) + return 0 + var/list/datum/mind/possible_ninjas = get_players_for_role(BE_NINJA) + if(possible_ninjas.len==0) + return 0 + var/datum/mind/ninja = pick(possible_ninjas) + ninjas += ninja + modePlayer += ninja + ninja.assigned_role = "MODE" //So they aren't chosen for other jobs. + ninja.special_role = "Ninja" + ninja.original = ninja.current + if(ninjastart.len == 0) + ninja.current << "\red A proper starting location for you could not be found, please report this bug!" + ninja.current << "\red Attempting to place at a carpspawn." + for(var/obj/effect/landmark/L in landmarks_list) + if(L.name == "carpspawn") + ninjastart.Add(L) + if(ninjastart.len == 0) + ninja.current << "\red Still no spawneable locations could be found. Aborting." + return 0 + return 1 + +/datum/game_mode/ninja/pre_setup() + ninja.current.loc = pick(ninjastart) + ninja.current = create_space_ninja(pick(ninjastart)) + return 1 \ No newline at end of file diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index e1b19a287b6..ba5700b1df3 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -45,7 +45,6 @@ /datum/game_mode/wizard/pre_setup() for(var/datum/mind/wizard in wizards) wizard.current.loc = pick(wizardstart) - return 1 diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index b72dafb4c30..ae155f32ade 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -69,6 +69,10 @@ xeno_spawn += loc del(src) + if("ninjastart") + ninjastart += loc + del(src) + landmarks_list += src return 1 diff --git a/code/global.dm b/code/global.dm index cd6e374a94f..d656197df85 100644 --- a/code/global.dm +++ b/code/global.dm @@ -133,6 +133,8 @@ var/list/tdomeadmin = list() var/list/prisonsecuritywarp = list() //prison security goes to these var/list/prisonwarped = list() //list of players already warped var/list/blobstart = list() +var/list/carpspawn = list() +var/list/ninjastart = list() // list/traitors = list() //traitor list var/list/cardinal = list( NORTH, SOUTH, EAST, WEST ) var/list/alldirs = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)