NikNakFlak V. An0n3 || Ninja Ruling/Not Objectives
Posted: Tue Feb 03, 2015 12:19 am
This is half a complaint and half a policy thing I guess. The main point of this is not a complaint against conduct but a complaint against a ruling which stemmed from a ban which I believed to be invalid at the time it was made.
This mainly concerns a ban that I noticed in the ban database in which a player (coder in this case), was banned from syndicate antag positions for murderboning 21 people when he had the objective to save/protect lives or whatever. There are several ninja objectives that tell you to not kill people and I'm not sure which exact objective it was.
Here is the code.
Now in this, there are several things stating "Good guy or bad guy" or whatever based on what objectives you get. You can see them in the code comments where it states if your debraining a good guy or debraining a bad guy or whatever. At the bottom, there are the RP objectives which is where this ban and complaint comes from. As I said, Im not sure which objective the player got but I will list below the objectives that state "Do not kill" or whatever.
We are currently negotiating with Nanotrasen command. Prioritize saving human lives over ending them."
Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter."
Our reputation is on the line. Harm as few civilians or innocents as possible."
All that aside, we have never enforced objectives for singular antags before ever as far as I am aware. Team antagonists are different as you work together as a team and while you may not want to do an objective in a team antag mode, you are required to. As a singular antag, as far as I was aware, you were free to do whatever you wanted. An0n3 and I argued many times about ERTs, ninjas as antags, the functions behind ninjas, and various other things which included forcing people to follow "Not" objectives or objectives that restrict behavior. We come into multiple conflicts about how he has always seen ninjas with that objective, and I have seen ninjas with any multiple amounts of objective, and ninjas even with that objective (to not kill anyone) and murderboned anyway.
While in the logs, HG points out Ninja should just be turned off permanently, this is still in debate, at least for me.
Edit: The ban was lifted but I guess my argument still stands at least in some cases. As I said, this is also half policy thing I guess.
This mainly concerns a ban that I noticed in the ban database in which a player (coder in this case), was banned from syndicate antag positions for murderboning 21 people when he had the objective to save/protect lives or whatever. There are several ninja objectives that tell you to not kill people and I'm not sure which exact objective it was.
Here is the code.
Code: Select all
if(mission)
var/datum/objective/O = new /datum/objective(mission)
O.owner = Mind
Mind.objectives += O
else
if(helping_station) //DS are the highest priority (if we're a helpful ninja)
for(var/datum/mind/M in ticker.minds)
if(M.current && M.current.stat != DEAD)
if(M.special_role == "Death Commando")
var/datum/objective/assassinate/O = new /datum/objective/assassinate()
O.owner = Mind
O.target = M
O.explanation_text = "Slay \the [M.current.real_name], the Death Commando."
Mind.objectives += O
else //Xenos are the highest priority (if we're not so helpful) Although this makes zero sense at all...
for(var/mob/living/carbon/alien/humanoid/queen/Q in player_list)
if(Q.mind && Q.stat != DEAD)
var/datum/objective/assassinate/O = new /datum/objective/assassinate()
O.owner = Mind
O.target = Q.mind
O.explanation_text = "Slay \the [Q.real_name]."
Mind.objectives += O
if(Mind.objectives.len < 4) //not enough objectives still!
var/list/possible_targets = list()
for(var/datum/mind/M in ticker.minds)
if(M.current && M.current.stat != DEAD)
if(istype(M.current,/mob/living/carbon/human))
if(M.special_role)
possible_targets[M] = 0 //bad-guy
else if(M.assigned_role in command_positions)
possible_targets[M] = 1 //good-guy
var/list/objectives = list(1,2,3,4)
while(Mind.objectives.len < 4) //still not enough objectives!
switch(pick_n_take(objectives))
if(1) //research
var/datum/objective/download/O = new /datum/objective/download()
O.owner = Mind
O.gen_amount_goal()
Mind.objectives += O
if(2) //steal
var/datum/objective/steal/special/O = new /datum/objective/steal/special()
O.owner = Mind
Mind.objectives += O
if(3) //protect/kill
if(!possible_targets.len) continue
var/selected = rand(1,possible_targets.len)
var/datum/mind/M = possible_targets[selected]
var/is_bad_guy = possible_targets[M]
possible_targets.Cut(selected,selected+1)
if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy)
var/datum/objective/assassinate/O = new /datum/objective/assassinate()
O.owner = Mind
O.target = M
O.explanation_text = "Slay \the [M.current.real_name], the [M.assigned_role]."
Mind.objectives += O
else //protect
var/datum/objective/protect/O = new /datum/objective/protect()
O.owner = Mind
O.target = M
O.explanation_text = "Protect \the [M.current.real_name], the [M.assigned_role], from harm."
Mind.objectives += O
if(4) //debrain/capture
if(!possible_targets.len) continue
var/selected = rand(1,possible_targets.len)
var/datum/mind/M = possible_targets[selected]
var/is_bad_guy = possible_targets[M]
possible_targets.Cut(selected,selected+1)
if(is_bad_guy ^ helping_station) //debrain (good-ninja + bad-guy or bad-ninja + good-guy)
var/datum/objective/debrain/O = new /datum/objective/debrain()
O.owner = Mind
O.target = M
O.explanation_text = "Steal the brain of [M.current.real_name]."
Mind.objectives += O
else //capture
var/datum/objective/capture/O = new /datum/objective/capture()
O.owner = Mind
O.gen_amount_goal()
Mind.objectives += O
else
break
//Add a survival objective since it's usually broad enough for any round type.
var/datum/objective/O = new /datum/objective/survive()
O.owner = Mind
Mind.objectives += O
//Finally, add their RP-directive
var/directive = generate_ninja_directive()
O = new /datum/objective(directive) //making it an objective so admins can reward the for completion
O.owner = Mind
Mind.objectives += O
//add some RP-fluff
Mind.store_memory("I am an elite mercenary assassin of the mighty Spider Clan. A <font color='red'><B>SPACE NINJA</B></font>!")
Mind.store_memory("Suprise is my weapon. Shadows are my armor. Without them, I am nothing. (//initialize your suit by right clicking on it, to use abilities like stealth)!")
Mind.store_memory("Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.")
//spawn the ninja and assign the candidate
Ninja = create_space_ninja(spawn_loc)
Mind.transfer_to(Ninja)
//initialise equipment
Ninja.wear_suit:randomize_param()
Ninja.internal = Ninja.s_store
if(Ninja.internals)
Ninja.internals.icon_state = "internal1"
if(Ninja.mind != Mind) //something has gone wrong!
ERROR("The ninja wasn't assigned the right mind. ;รง;")
Ninja << sound('sound/effects/ninja_greeting.ogg') //so ninja you probably wouldn't even know if you were made one
success_spawn = 1
/*
This proc will give the ninja a directive to follow. They are not obligated to do so but it's a fun roleplay reminder.
Making this random or semi-random will probably not work without it also being incredibly silly.
As such, it's hard-coded for now. No reason for it not to be, really.
*/
/datum/round_event/ninja/proc/generate_ninja_directive()
switch(rand(1,13))
if(1) return "The Spider Clan must not be linked to this operation. Remain as hidden and covert as possible."
if(2) return "[station_name] is financed by an enemy of the Spider Clan. Cause as much structural damage as possible."
if(3) return "A wealthy animal rights activist has made a request we cannot refuse. Prioritize saving animal lives whenever possible."
if(4) return "The Spider Clan absolutely cannot be linked to this operation. Eliminate all witnesses using most extreme prejudice."
if(5) return "We are currently negotiating with Nanotrasen command. Prioritize saving human lives over ending them."
if(6) return "We are engaged in a legal dispute over [station_name]. If a laywer is present on board, force their cooperation in the matter."
if(7) return "A financial backer has made an offer we cannot refuse. Implicate Syndicate involvement in the operation."
if(8) return "Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter."
if(9) return "A free agent has proposed a lucrative business deal. Implicate Nanotrasen involvement in the operation."
if(10) return "Our reputation is on the line. Harm as few civilians or innocents as possible."
if(11) return "Our honor is on the line. Utilize only honorable tactics when dealing with opponents."
if(12) return "We are currently negotiating with a Syndicate leader. Disguise assassinations as suicide or another natural cause."
else return "There are no special supplemental instructions at this time."
We are currently negotiating with Nanotrasen command. Prioritize saving human lives over ending them."
Let no one question the mercy of the Spider Clan. Ensure the safety of all non-essential personnel you encounter."
Our reputation is on the line. Harm as few civilians or innocents as possible."
All that aside, we have never enforced objectives for singular antags before ever as far as I am aware. Team antagonists are different as you work together as a team and while you may not want to do an objective in a team antag mode, you are required to. As a singular antag, as far as I was aware, you were free to do whatever you wanted. An0n3 and I argued many times about ERTs, ninjas as antags, the functions behind ninjas, and various other things which included forcing people to follow "Not" objectives or objectives that restrict behavior. We come into multiple conflicts about how he has always seen ninjas with that objective, and I have seen ninjas with any multiple amounts of objective, and ninjas even with that objective (to not kill anyone) and murderboned anyway.
While in the logs, HG points out Ninja should just be turned off permanently, this is still in debate, at least for me.
Edit: The ban was lifted but I guess my argument still stands at least in some cases. As I said, this is also half policy thing I guess.