mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 21:48:39 +01:00
[MIRROR] Ports #10649 from Citadel: An attempt at making hijack not shit and more about point defence (#1311)
* Ports #10649 from Citadel: An attempt at making hijack not shit and more about point defence (#54146) So essentially there was discussion already here (https://tgstation13.org/phpBB/viewtopic.php?f=33&t=27620) about how hijack is one of the few objectives on Manuel that you can murderbone with, which is mildly at odds with the intention of the server. Personally, I think hijack is just straight up terrible regardless of what server you're on. The way it functions is dreadful. Nobody must be aboard the shuttle in any part of the shuttle at all. This means you have people hiding in the walls or hiding in some invisible corner of the shuttle, cucking you of the hijack. For the most part, the only way to actually hijack the shuttle is to render it completely inhospitable or destroying it utterly save for, maybe, one square. The one you are standing on. It's absurd. So, I knew kev made a pretty honest attempt at reworking hijack. And it works pretty well. It doesn't necessarily solve the problem of hijackers being mandatory mass shooters, but it goes some ways to improving the objective in a more interesting fashion, and allows for the discussion around the objective to be a little more open ended for the sake of the higher roleplay servers without actually detracting from the lower roleplay servers at all. If anything, this should improve the experience of being that gamer to stage a hijacking all the more interesting and about robustness, and less of hide-and-go-seek. * Ports #10649 from Citadel: An attempt at making hijack not shit and more about point defence Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
This commit is contained in:
co-authored by
necromanceranne
parent
febd2cc0b3
commit
491e445a35
@@ -14,7 +14,9 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
var/list/objectives = list()
|
||||
var/antag_memory = ""//These will be removed with antag datum
|
||||
var/antag_moodlet //typepath of moodlet that the mob will gain with their status
|
||||
var/can_hijack = HIJACK_NEUTRAL //If these antags are alone on shuttle hijack happens.
|
||||
var/can_elimination_hijack = ELIMINATION_NEUTRAL //If these antags are alone when a shuttle elimination happens.
|
||||
/// If above 0, this is the multiplier for the speed at which we hijack the shuttle. Do not directly read, use hijack_speed().
|
||||
var/hijack_speed = 0
|
||||
var/antag_hud_type
|
||||
var/antag_hud_name
|
||||
|
||||
@@ -264,6 +266,11 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
return
|
||||
antag_memory = new_memo
|
||||
|
||||
/// Gets how fast we can hijack the shuttle, return 0 for can not hijack. Defaults to hijack_speed var, override for custom stuff like buffing hijack speed for hijack objectives or something.
|
||||
/datum/antagonist/proc/hijack_speed()
|
||||
var/datum/objective/hijack/H = locate() in objectives
|
||||
return H?.hijack_speed_override || hijack_speed
|
||||
|
||||
//This one is created by admin tools for custom objectives
|
||||
/datum/antagonist/custom
|
||||
antagpanel_category = "Custom"
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
var/special_role = ROLE_BROTHER
|
||||
antag_hud_type = ANTAG_HUD_BROTHER
|
||||
antag_hud_name = "brother"
|
||||
hijack_speed = 0.5
|
||||
var/datum/team/brother_team/team
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
|
||||
/datum/antagonist/brother/create_team(datum/team/brother_team/new_team)
|
||||
if(!new_team)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
antag_hud_type = ANTAG_HUD_CHANGELING
|
||||
antag_hud_name = "changeling"
|
||||
|
||||
hijack_speed = 0.5
|
||||
var/you_are_greet = TRUE
|
||||
var/give_objectives = TRUE
|
||||
var/team_mode = FALSE //Should assign team objectives ?
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
job_rank = ROLE_HERETIC
|
||||
antag_hud_type = ANTAG_HUD_HERETIC
|
||||
antag_hud_name = "heretic"
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
hijack_speed = 0.5
|
||||
var/give_equipment = TRUE
|
||||
var/list/researched_knowledge = list()
|
||||
var/total_sacrifices = 0
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
/datum/antagonist/heretic_monster
|
||||
name = "Eldritch Horror"
|
||||
roundend_category = "Heretics"
|
||||
can_hijack = HIJACK_NEUTRAL
|
||||
antagpanel_category = "Heretic Beast"
|
||||
antag_moodlet = /datum/mood_event/heretics
|
||||
job_rank = ROLE_HERETIC
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
var/rip_and_tear = FALSE
|
||||
var/equip_ert = TRUE
|
||||
var/forge_objectives_for_ert = TRUE
|
||||
can_elimination_hijack = ELIMINATION_PREVENT
|
||||
show_in_antagpanel = FALSE
|
||||
show_to_ghosts = TRUE
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
can_hijack = HIJACK_PREVENT
|
||||
|
||||
/datum/antagonist/ert/on_gain()
|
||||
if(random_names)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
var/obj/item/claymore/highlander/sword
|
||||
show_in_antagpanel = FALSE
|
||||
show_name_in_check_antagonists = TRUE
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
can_elimination_hijack = ELIMINATION_ENABLED
|
||||
|
||||
/datum/antagonist/highlander/apply_innate_effects(mob/living/mob_override)
|
||||
var/mob/living/L = owner.current || mob_override
|
||||
@@ -25,10 +25,9 @@
|
||||
steal_objective.owner = owner
|
||||
steal_objective.set_target(new /datum/objective_item/steal/nukedisc)
|
||||
objectives += steal_objective
|
||||
|
||||
var/datum/objective/hijack/highlander/hijack_objective = new
|
||||
hijack_objective.owner = owner
|
||||
objectives += hijack_objective
|
||||
var/datum/objective/elimination/highlander/elimination_objective = new
|
||||
elimination_objective.owner = owner
|
||||
objectives += elimination_objective
|
||||
|
||||
/datum/antagonist/highlander/on_gain()
|
||||
forge_objectives()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/datum/antagonist/ninja/New()
|
||||
if(helping_station)
|
||||
can_hijack = HIJACK_PREVENT
|
||||
can_elimination_hijack = ELIMINATION_PREVENT
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override)
|
||||
@@ -145,7 +145,7 @@
|
||||
else
|
||||
return
|
||||
if(helping_station)
|
||||
can_hijack = HIJACK_PREVENT
|
||||
can_elimination_hijack = ELIMINATION_PREVENT
|
||||
new_owner.assigned_role = ROLE_NINJA
|
||||
new_owner.special_role = ROLE_NINJA
|
||||
new_owner.add_antag_datum(src)
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
antag_hud_name = "synd"
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
show_to_ghosts = TRUE
|
||||
hijack_speed = 2 //If you can't take out the station, take the shuttle instead.
|
||||
var/datum/team/nuclear/nuke_team
|
||||
var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team.
|
||||
var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint.
|
||||
var/nukeop_outfit = /datum/outfit/syndicate
|
||||
can_hijack = HIJACK_HIJACKER //Alternative way to wipe out the station.
|
||||
|
||||
|
||||
/datum/antagonist/nukeop/apply_innate_effects(mob/living/mob_override)
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
name = "CentCom Official"
|
||||
show_name_in_check_antagonists = TRUE
|
||||
show_in_antagpanel = FALSE
|
||||
can_elimination_hijack = ELIMINATION_PREVENT
|
||||
var/datum/objective/mission
|
||||
var/datum/team/ert/ert_team
|
||||
can_hijack = HIJACK_PREVENT
|
||||
show_to_ghosts = TRUE
|
||||
|
||||
/datum/antagonist/official/greet()
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
antag_hud_type = ANTAG_HUD_TRAITOR
|
||||
antag_hud_name = "traitor"
|
||||
hijack_speed = 0.5 //10 seconds per hijack stage by default
|
||||
var/special_role = ROLE_TRAITOR
|
||||
var/employer = "The Syndicate"
|
||||
var/give_objectives = TRUE
|
||||
@@ -16,7 +17,6 @@
|
||||
var/should_equip = TRUE
|
||||
var/traitor_kind = TRAITOR_HUMAN //Set on initial assignment
|
||||
var/datum/contractor_hub/contractor_hub
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
|
||||
/datum/antagonist/traitor/on_gain()
|
||||
if(owner.current && isAI(owner.current))
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Wishgranter Avatar"
|
||||
show_in_antagpanel = FALSE
|
||||
show_name_in_check_antagonists = TRUE
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
hijack_speed = 2 //You literally are here to do nothing else. Might as well be fast about it.
|
||||
|
||||
/datum/antagonist/wishgranter/proc/forge_objectives()
|
||||
var/datum/objective/hijack/hijack = new
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
antag_hud_type = ANTAG_HUD_WIZ
|
||||
antag_hud_name = "wizard"
|
||||
antag_moodlet = /datum/mood_event/focused
|
||||
hijack_speed = 0.5
|
||||
var/give_objectives = TRUE
|
||||
var/strip = TRUE //strip before equipping
|
||||
var/allow_rename = TRUE
|
||||
@@ -13,7 +14,6 @@
|
||||
var/move_to_lair = TRUE
|
||||
var/outfit_type = /datum/outfit/wizard
|
||||
var/wiz_age = WIZARD_AGE_MIN /* Wizards by nature cannot be too young. */
|
||||
can_hijack = HIJACK_HIJACKER
|
||||
show_to_ghosts = TRUE
|
||||
|
||||
/datum/antagonist/wizard/on_gain()
|
||||
|
||||
Reference in New Issue
Block a user