mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-28 06:27:26 +01:00
WIP: Implementing space ninja gamemode
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/announce()
|
||||
..()
|
||||
world << "<B>Game mode is AutoTraitor. Traitors will be added to the round automagically as needed.<br>Expect bugs.</B>"
|
||||
world << "<B>Game mode is AutoTraitor. Traitors will be added to the round automagically as needed.</B>"
|
||||
|
||||
/datum/game_mode/traitor/autotraitor/pre_setup()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 << "<B>The current game mode is Ninja!</B>"
|
||||
|
||||
/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 << "<B>\red A proper starting location for you could not be found, please report this bug!</B>"
|
||||
ninja.current << "<B>\red Attempting to place at a carpspawn.</B>"
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "carpspawn")
|
||||
ninjastart.Add(L)
|
||||
if(ninjastart.len == 0)
|
||||
ninja.current << "<B>\red Still no spawneable locations could be found. Aborting.</B>"
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/game_mode/ninja/pre_setup()
|
||||
ninja.current.loc = pick(ninjastart)
|
||||
ninja.current = create_space_ninja(pick(ninjastart))
|
||||
return 1
|
||||
@@ -45,7 +45,6 @@
|
||||
/datum/game_mode/wizard/pre_setup()
|
||||
for(var/datum/mind/wizard in wizards)
|
||||
wizard.current.loc = pick(wizardstart)
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -69,6 +69,10 @@
|
||||
xeno_spawn += loc
|
||||
del(src)
|
||||
|
||||
if("ninjastart")
|
||||
ninjastart += loc
|
||||
del(src)
|
||||
|
||||
landmarks_list += src
|
||||
return 1
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user