diff --git a/code/game/gamemodes/extra/space_ninja.dm b/code/game/gamemodes/extra/space_ninja.dm
index 1bc8ec9a034..694e589ed6d 100644
--- a/code/game/gamemodes/extra/space_ninja.dm
+++ b/code/game/gamemodes/extra/space_ninja.dm
@@ -47,7 +47,7 @@ ________________________________________________________________________________
xenos, death squads, and cyborgs. Ninjas are not admin PCs--please do not use them for that purpose.
I'm currently looking for feedback from regular players since beta testing is largely done. I would appreciate if
you spawned regular players as ninjas when rounds are boring. Or exciting, it's all good as long as there is feedback.
- Admin quick-spawning as ninjas is disabled for that reason. You can spawn ninja gear manually if you want to.
+ You can also spawn ninja gear manually if you want to.
How to do that:
Make sure your character has a mind.
@@ -128,8 +128,7 @@ ________________________________________________________________________________
var/mob/dead/observer/G
var/list/candidates = list()
for(G in world)
- if(G.client&&!G.client.holder)
- //if(G.client)//Good for testing.
+ if(G.client)//Now everyone can ninja!
if(((G.client.inactivity/10)/60) <= 5)
candidates.Add(G)
if(candidates.len)
@@ -209,10 +208,7 @@ client/proc/create_space_ninja(obj/spawn_point)
//This proc prevents the suit from being taken off.
/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/U, X = 0)
if(X)//If you want to check for icons.
- if(U.gender==FEMALE)
- icon_state = "s-ninjanf"
- else
- icon_state = "s-ninjan"
+ icon_state = U.gender==FEMALE ? "s-ninjanf" : "s-ninjan"
U:gloves.icon_state = "s-ninjan"
U:gloves.item_state = "s-ninjan"
else
@@ -266,7 +262,7 @@ client/proc/create_space_ninja(obj/spawn_point)
invisibility = 2//Set ninja invis to 2.
var/icon/opacity_icon = new(A.icon, A.icon_state)
var/icon/alpha_mask = getIconMask(src)
- var/icon/alpha_mask_2 = new('effects.dmi', "wave1")
+ var/icon/alpha_mask_2 = new('effects.dmi', "at_shield1")
alpha_mask.AddAlphaMask(alpha_mask_2)
opacity_icon.AddAlphaMask(alpha_mask)
for(var/i=0,i<5,i++)//And now we add it as overlays. It's faster than creating an icon and then merging it.
@@ -351,10 +347,7 @@ client/proc/create_space_ninja(obj/spawn_point)
kamikaze = 1
- if(U.gender==FEMALE)
- icon_state = "s-ninjakf"
- else
- icon_state = "s-ninjak"
+ icon_state = U.gender==FEMALE ? "s-ninjakf" : "s-ninjak"
if(n_gloves)
n_gloves.icon_state = "s-ninjak"
n_gloves.item_state = "s-ninjak"
diff --git a/code/game/objects/devices/PDA/cart.dm b/code/game/objects/devices/PDA/cart.dm
index 01b150762e5..63814d98f77 100644
--- a/code/game/objects/devices/PDA/cart.dm
+++ b/code/game/objects/devices/PDA/cart.dm
@@ -124,8 +124,8 @@
if (!istype(loc, /obj/item/device/pda))
return
- src.generate_menu()
- src.print_to_host(menu)
+ generate_menu()
+ print_to_host(menu)
return
proc/print_to_host(var/text)
@@ -169,14 +169,14 @@
Frequency:
-
-
-[format_frequency(src.radio:frequency)]
+[format_frequency(radio:frequency)]
+
+
Code:
-
-
-[src.radio:code]
+[radio:code]
+
+
"}
if (41) //crew manifest
@@ -239,7 +239,7 @@ Code:
menu = "
Medical Record
Medical Data
Security Record
Security DataGood morning soldier!. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:
#1 Work as a team.
#2 Accomplish your objective at all costs.
#3 Leave no witnesses.
You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.
If deemed appropriate, Central Command will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.
In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations LEADER is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.
Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.
First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE. Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.
To make the device functional:
#1 Place bomb in designated detonation zone
#2 Extend and anchor bomb (attack with hand).
#3 Insert Nuclear Auth. Disk into slot.
#4 Type numeric code into keypad ([nuke_code]).
Note: If you make a mistake press R to reset the device.
#5 Press the E button to log onto the device.
You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.
Note: Toggle off the SAFETY.
Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
Note: THE BOMB IS STILL SET AND WILL DETONATE
Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.
The nuclear authorization code is: [nuke_code]
Good luck, soldier!
" - PAPER.name = "Spec. Ops. Manual" + for (var/obj/landmark/L) + if (L.name == "Commando_Manual") + new /obj/item/weapon/gun/energy/pulse_rifle(L.loc) + var/obj/item/weapon/paper/P = new(L.loc) + P.info = "Good morning soldier!. This compact guide will familiarize you with standard operating procedure. There are three basic rules to follow:
#1 Work as a team.
#2 Accomplish your objective at all costs.
#3 Leave no witnesses.
You are fully equipped and stocked for your mission--before departing on the Spec. Ops. Shuttle due South, make sure that all operatives are ready. Actual mission objective will be relayed to you by Central Command through your headsets.
If deemed appropriate, Central Command will also allow members of your team to equip assault power-armor for the mission. You will find the armor storage due West of your position. Once you are ready to leave, utilize the Special Operations shuttle console and toggle the hull doors via the other console.
In the event that the team does not accomplish their assigned objective in a timely manner, or finds no other way to do so, attached below are instructions on how to operate a Nanotrasen Nuclear Device. Your operations LEADER is provided with a nuclear authentication disk and a pin-pointer for this reason. You may easily recognize them by their rank: Lieutenant, Captain, or Major. The nuclear device itself will be present somewhere on your destination.
Hello and thank you for choosing Nanotrasen for your nuclear information needs. Today's crash course will deal with the operation of a Fission Class Nanotrasen made Nuclear Device.
First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE. Pressing any button on the compacted bomb will cause it to extend and bolt itself into place. If this is done to unbolt it one must completely log in which at this time may not be possible.
To make the device functional:
#1 Place bomb in designated detonation zone
#2 Extend and anchor bomb (attack with hand).
#3 Insert Nuclear Auth. Disk into slot.
#4 Type numeric code into keypad ([nuke_code]).
Note: If you make a mistake press R to reset the device.
#5 Press the E button to log onto the device.
You now have activated the device. To deactivate the buttons at anytime, for example when you have already prepped the bomb for detonation, remove the authentication disk OR press the R on the keypad. Now the bomb CAN ONLY be detonated using the timer. A manual detonation is not an option.
Note: Toggle off the SAFETY.
Use the - - and + + to set a detonation time between 5 seconds and 10 minutes. Then press the timer toggle button to start the countdown. Now remove the authentication disk so that the buttons deactivate.
Note: THE BOMB IS STILL SET AND WILL DETONATE
Now before you remove the disk if you need to move the bomb you can: Toggle off the anchor, move it, and re-anchor.
The nuclear authorization code is: [nuke_code]
Good luck, soldier!
" + P.name = "Spec. Ops. Manual" - for (var/obj/landmark/BOMB in world) - if (BOMB.name == "Commando-Bomb") - new /obj/spawner/newbomb/timer/syndicate(BOMB.loc) - del(BOMB) + for (var/obj/landmark/L in world) + if (L.name == "Commando-Bomb") + new /obj/spawner/newbomb/timer/syndicate(L.loc) + del(L) message_admins("\blue [key_name_admin(usr)] has spawned a CentCom strike squad.", 1) log_admin("[key_name(usr)] used Spawn Death Squad.") @@ -117,14 +114,9 @@ var/global/sent_strike_team = 0 var/datum/preferences/A = new()//Randomize appearance for the commando. A.randomize_appearance_for(new_commando) - if (!leader_selected) - new_commando.real_name = "[commando_rank] [commando_name]" - else - new_commando.real_name = "[commando_leader_rank] [commando_name]" - if (!leader_selected) - new_commando.age = rand(23,35) - else - new_commando.age = rand(35,45) + new_commando.real_name = "[!leader_selected ? commando_rank : commando_leader_rank] [commando_name]" + new_commando.age = !leader_selected ? rand(23,35) : rand(35,45) + new_commando.dna.ready_dna(new_commando)//Creates DNA. //Creates mind stuff. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 1f147549ba6..81734df7ce1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1377,7 +1377,8 @@ AddCamoOverlay(loc)//Overlay camo. if(3) if(istype(loc, /turf)) - if(prob(90))//Ninjas may flick into view once in a while if they are stealthed. + //Ninjas may flick into view once in a while if they are stealthed. + if(prob(90)) NinjaStealthActive(loc) else NinjaStealthMalf() diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index 9f5ac93528b..1fe9d6908c6 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -1,7 +1,7 @@ /mob/living/silicon/robot/verb/cmd_show_laws() set category = "Robot Commands" set name = "Show Laws" - src.show_laws() + show_laws() /mob/living/silicon/robot/show_laws(var/everyone = 0) var/who @@ -16,13 +16,13 @@ src << "AI signal lost, unable to sync laws." else - src.lawsync() + lawsync() src << "Laws synced with AI, be sure to note any changes." if (mind.special_role == "traitor" && mind.original == src) src << "Remember, your AI does NOT share or know about your law 0." else src << "No AI selected to sync laws with, disabling lawsync protocol." - src.lawupdate = 0 + lawupdate = 0 who << "Obey these laws:" laws.show_laws(who) @@ -59,59 +59,60 @@ */ /mob/living/silicon/robot/proc/lawsync() - var/datum/ai_laws/master = src.connected_ai.laws + var/datum/ai_laws/master = connected_ai ? connected_ai.laws : null var/temp if (master) - src.laws.ion.len = master.ion.len + laws.ion.len = master.ion.len for (var/index = 1, index <= master.ion.len, index++) temp = master.ion[index] if (length(temp) > 0) - src.laws.ion[index] = temp + laws.ion[index] = temp if (!checktraitor(src) || mind.original != src) temp = master.zeroth - src.laws.zeroth = temp + laws.zeroth = temp - src.laws.inherent.len = master.inherent.len + laws.inherent.len = master.inherent.len for (var/index = 1, index <= master.inherent.len, index++) temp = master.inherent[index] if (length(temp) > 0) - src.laws.inherent[index] = temp + laws.inherent[index] = temp - src.laws.supplied.len = master.supplied.len + laws.supplied.len = master.supplied.len for (var/index = 1, index <= master.supplied.len, index++) temp = master.supplied[index] if (length(temp) > 0) - src.laws.supplied[index] = temp + laws.supplied[index] = temp + return /mob/living/silicon/robot/proc/laws_sanity_check() - if (!src.laws) - src.laws = new /datum/ai_laws/asimov + if (!laws) + laws = new /datum/ai_laws/asimov /mob/living/silicon/robot/proc/set_zeroth_law(var/law) - src.laws_sanity_check() - src.laws.set_zeroth_law(law) + laws_sanity_check() + laws.set_zeroth_law(law) /mob/living/silicon/robot/proc/add_inherent_law(var/law) - src.laws_sanity_check() - src.laws.add_inherent_law(law) + laws_sanity_check() + laws.add_inherent_law(law) /mob/living/silicon/robot/proc/clear_inherent_laws() - src.laws_sanity_check() - src.laws.clear_inherent_laws() + laws_sanity_check() + laws.clear_inherent_laws() /mob/living/silicon/robot/proc/add_supplied_law(var/number, var/law) - src.laws_sanity_check() - src.laws.add_supplied_law(number, law) + laws_sanity_check() + laws.add_supplied_law(number, law) /mob/living/silicon/robot/proc/clear_supplied_laws() - src.laws_sanity_check() - src.laws.clear_supplied_laws() + laws_sanity_check() + laws.clear_supplied_laws() /mob/living/silicon/robot/proc/add_ion_law(var/law) - src.laws_sanity_check() - src.laws.add_ion_law(law) + laws_sanity_check() + laws.add_ion_law(law) /mob/living/silicon/robot/proc/clear_ion_laws() - src.laws_sanity_check() - src.laws.clear_ion_laws() \ No newline at end of file + laws_sanity_check() + laws.clear_ion_laws() \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5aa4bc6d2b4..d55ed5c5675 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -2166,8 +2166,8 @@ note dizziness decrements automatically in the mob's Life() proc. var/mob/M = mob M.loc = null // HACK, but whatever, this works - var/obj/screen/boom = M.hud_used.station_explosion - if (M.client) + if (M.client&&M.hud_used)//They may some times not have a hud, apparently. + var/obj/screen/boom = M.hud_used.station_explosion M.client.screen += boom if(ticker) switch(ticker.mode.name) diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index c6f41426ddc..11267b5ac83 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -902,17 +902,14 @@ datum/preferences else character.face_icon_state = "bald" - if (underwear == 1) - character.underwear = pick(1,2,3,4,5) - else - character.underwear = 0 + character.underwear = underwear == 1 ? pick(1,2,3,4,5) : 0 character.update_face() character.update_body() if(!safety)//To prevent run-time errors due to null datum when using randomize_appearance_for() - spawn(10)//as they should already have these set at game spawn. - if(character) + spawn(10) + if(character&&character.client) character.client.midis = midis character.client.ooccolor = ooccolor character.client.be_alien = be_alien