stop this nonsense
This commit is contained in:
@@ -173,7 +173,7 @@
|
||||
AH.Resolve() //with prejudice
|
||||
if(banned_client && banned_client.ckey == ckey)
|
||||
qdel(banned_client)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/admins/proc/DB_ban_unban(ckey, bantype, job = "")
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
if(!GLOB.Banlist) // if Banlist cannot be located for some reason
|
||||
LoadBans() // try to load the bans
|
||||
if(!GLOB.Banlist) // uh oh, can't find bans!
|
||||
return 0 // ABORT ABORT ABORT
|
||||
return FALSE // ABORT ABORT ABORT
|
||||
|
||||
. = list()
|
||||
var/appeal
|
||||
@@ -20,7 +20,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
if (GLOB.Banlist["temp"])
|
||||
if (!GetExp(GLOB.Banlist["minutes"]))
|
||||
ClearTempbans()
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
.["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: [GetExp(GLOB.Banlist["minutes"])]\nBy: [GLOB.Banlist["bannedby"]] during round ID [GLOB.Banlist["roundid"]][appeal]"
|
||||
else
|
||||
@@ -47,18 +47,18 @@ GLOBAL_PROTECT(Banlist)
|
||||
if(GLOB.Banlist["temp"])
|
||||
if (!GetExp(GLOB.Banlist["minutes"]))
|
||||
ClearTempbans()
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
.["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: [GetExp(GLOB.Banlist["minutes"])]\nBy: [GLOB.Banlist["bannedby"]] during round ID [GLOB.Banlist["roundid"]][appeal]"
|
||||
else
|
||||
.["desc"] = "\nReason: [GLOB.Banlist["reason"]]\nExpires: <B>PERMENANT</B>\nBy: [GLOB.Banlist["bannedby"]] during round ID [GLOB.Banlist["roundid"]][appeal]"
|
||||
.["reason"] = matches
|
||||
return .
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/proc/UpdateTime() //No idea why i made this a proc.
|
||||
GLOB.CMinutes = (world.realtime / 10) / 60
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/proc/LoadBans()
|
||||
if(!CONFIG_GET(flag/ban_legacy_system))
|
||||
@@ -78,7 +78,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
GLOB.Banlist.cd = "/base"
|
||||
|
||||
ClearTempbans()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/proc/ClearTempbans()
|
||||
UpdateTime()
|
||||
@@ -97,7 +97,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
if (GLOB.CMinutes >= GLOB.Banlist["minutes"])
|
||||
RemoveBan(A)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/proc/AddBan(key, computerid, reason, bannedby, temp, minutes, address)
|
||||
@@ -111,7 +111,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
GLOB.Banlist.cd = "/base"
|
||||
if ( GLOB.Banlist.dir.Find("[ban_ckey][computerid]") )
|
||||
to_chat(usr, text("<span class='danger'>Ban already exists.</span>"))
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
GLOB.Banlist.dir.Add("[ban_ckey][computerid]")
|
||||
GLOB.Banlist.cd = "/base/[ban_ckey][computerid]"
|
||||
@@ -128,7 +128,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
create_message("note", key, bannedby, "Permanently banned - [reason]", null, null, 0, 0, null, 0, 0)
|
||||
else
|
||||
create_message("note", key, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0, null, 0, 0)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/proc/RemoveBan(foldername)
|
||||
var/key
|
||||
@@ -140,7 +140,7 @@ GLOBAL_PROTECT(Banlist)
|
||||
GLOB.Banlist.cd = "/base"
|
||||
|
||||
if (!GLOB.Banlist.dir.Remove(foldername))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!usr)
|
||||
log_admin_private("Ban Expired: [key]")
|
||||
@@ -157,13 +157,13 @@ GLOBAL_PROTECT(Banlist)
|
||||
GLOB.Banlist.dir.Remove(A)
|
||||
continue
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/proc/GetExp(minutes as num)
|
||||
UpdateTime()
|
||||
var/exp = minutes - GLOB.CMinutes
|
||||
if (exp <= 0)
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
var/timeleftstring
|
||||
if (exp >= 1440) //1440 = 1 day in minutes
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
if ("Instant Runoff Voting")
|
||||
polltype = POLLTYPE_IRV
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
var/starttime = SQLtime()
|
||||
var/endtime = input("Set end time for poll as format YYYY-MM-DD HH:MM:SS. All times in server time. HH:MM:SS is optional and 24-hour. Must be later than starting time for obvious reasons.", "Set end time", SQLtime()) as text
|
||||
if(!endtime)
|
||||
@@ -117,7 +117,7 @@
|
||||
if("Finish")
|
||||
add_option = 0
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
var/m1 = "[key_name(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"] - Question: [question]"
|
||||
var/m2 = "[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]<br>Question: [question]"
|
||||
var/datum/db_query/query_polladd_question = SSdbcore.NewQuery({"
|
||||
|
||||
@@ -140,21 +140,21 @@ GLOBAL_PROTECT(href_token)
|
||||
|
||||
/datum/admins/proc/check_for_rights(rights_required)
|
||||
if(rights_required && !(rights_required & rank.rights))
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/admins/proc/check_if_greater_rights_than_holder(datum/admins/other)
|
||||
if(!other)
|
||||
return 1 //they have no rights
|
||||
return TRUE //they have no rights
|
||||
if(rank.rights == R_EVERYTHING)
|
||||
return 1 //we have all the rights
|
||||
return TRUE //we have all the rights
|
||||
if(src == other)
|
||||
return 1 //you always have more rights than yourself
|
||||
return TRUE //you always have more rights than yourself
|
||||
if(rank.rights != other.rank.rights)
|
||||
if( (rank.rights & other.rank.rights) == other.rank.rights )
|
||||
return 1 //we have all the rights they have and more
|
||||
return 0
|
||||
return TRUE //we have all the rights they have and more
|
||||
return FALSE
|
||||
|
||||
/datum/admins/vv_edit_var(var_name, var_value)
|
||||
if(var_name == NAMEOF(src, fakekey))
|
||||
@@ -164,7 +164,7 @@ GLOBAL_PROTECT(href_token)
|
||||
/*
|
||||
checks if usr is an admin with at least ONE of the flags in rights_required. (Note, they don't need all the flags)
|
||||
if rights_required == 0, then it simply checks if they are an admin.
|
||||
if it doesn't return 1 and show_msg=1 it will prints a message explaining why the check has failed
|
||||
if it doesn't return TRUE and show_msg=1 it will prints a message explaining why the check has failed
|
||||
generally it would be used like so:
|
||||
|
||||
/proc/admin_proc()
|
||||
@@ -178,26 +178,26 @@ you will have to do something like if(client.rights & R_ADMIN) yourself.
|
||||
/proc/check_rights(rights_required, show_msg=1)
|
||||
if(usr && usr.client)
|
||||
if (check_rights_for(usr.client, rights_required))
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
if(show_msg)
|
||||
to_chat(usr, "<font color='red'>Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")].</font>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//probably a bit iffy - will hopefully figure out a better solution
|
||||
/proc/check_if_greater_rights_than(client/other)
|
||||
if(usr && usr.client)
|
||||
if(usr.client.holder)
|
||||
if(!other || !other.holder)
|
||||
return 1
|
||||
return TRUE
|
||||
return usr.client.holder.check_if_greater_rights_than_holder(other.holder)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//This proc checks whether subject has at least ONE of the rights specified in rights_required.
|
||||
/proc/check_rights_for(client/subject, rights_required)
|
||||
if(subject && subject.holder)
|
||||
return subject.holder.check_for_rights(rights_required)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/proc/GenerateToken()
|
||||
. = ""
|
||||
|
||||
@@ -1026,7 +1026,7 @@
|
||||
to_chat(M, "<span class='boldannounce'>The reason is: [reason]</span>")
|
||||
to_chat(M, "<span class='danger'>This jobban will be lifted in [mins] minutes.</span>")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
return TRUE
|
||||
if("No")
|
||||
var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null
|
||||
severity = input("Set the severity of the note/ban.", "Severity", null, null) as null|anything in list("High", "Medium", "Minor", "None")
|
||||
@@ -1052,7 +1052,7 @@
|
||||
to_chat(M, "<span class='boldannounce'>The reason is: [reason]</span>")
|
||||
to_chat(M, "<span class='danger'>Jobban can be lifted only upon request.</span>")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
return TRUE
|
||||
if("Cancel")
|
||||
return
|
||||
|
||||
@@ -1081,8 +1081,8 @@
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] unbanned [key_name_admin(M)] from [msg].</span>")
|
||||
to_chat(M, "<span class='boldannounce'><BIG>You have been un-jobbanned by [usr.client.key] from [msg].</BIG></span>")
|
||||
href_list["jobban2"] = 1 // lets it fall through and refresh
|
||||
return 1
|
||||
return 0 //we didn't do anything!
|
||||
return TRUE
|
||||
return FALSE //we didn't do anything!
|
||||
|
||||
else if(href_list["boot2"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
|
||||
@@ -89,11 +89,11 @@
|
||||
available.Add(C)
|
||||
var/mob/choice = input("Choose a player to play the pAI", "Spawn pAI") in available
|
||||
if(!choice)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!isobserver(choice))
|
||||
var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank him out of them out of their body and place them in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/paicard/card = new(T)
|
||||
var/mob/living/silicon/pai/pai = new(card)
|
||||
pai.name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text
|
||||
|
||||
@@ -65,7 +65,7 @@ GLOBAL_PROTECT(admin_verbs_debug_mapping)
|
||||
icon_state = "yellow"
|
||||
|
||||
/obj/effect/debugging/marker/Move()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/client/proc/camera_view()
|
||||
set category = "Mapping"
|
||||
@@ -111,7 +111,7 @@ GLOBAL_LIST_EMPTY(dirty_vars)
|
||||
|
||||
if(!Master)
|
||||
alert(usr,"Master_controller not found.","Sec Camera Report")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/list/obj/machinery/camera/CL = list()
|
||||
|
||||
|
||||
@@ -70,10 +70,10 @@
|
||||
H.mind.make_Traitor()
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
/datum/admins/proc/makeChangelings()
|
||||
@@ -102,9 +102,9 @@
|
||||
H.mind.make_Changeling()
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/admins/proc/makeRevs()
|
||||
|
||||
@@ -131,9 +131,9 @@
|
||||
H = pick(candidates)
|
||||
H.mind.make_Rev()
|
||||
candidates.Remove(H)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/admins/proc/makeWizard()
|
||||
|
||||
@@ -171,9 +171,9 @@
|
||||
H.mind.make_Cultist()
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
/datum/admins/proc/makeClockCult()
|
||||
@@ -206,9 +206,9 @@
|
||||
SSticker.mode.equip_servant(H)
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
break
|
||||
//Making sure we have atleast 3 Nuke agents, because less than that is kinda bad
|
||||
if(agentcount < 3)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//Let's find the spawn locations
|
||||
var/leader_chosen = FALSE
|
||||
@@ -249,9 +249,9 @@
|
||||
nuke_team = N.nuke_team
|
||||
else
|
||||
new_character.mind.add_antag_datum(/datum/antagonist/nukeop,nuke_team)
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
|
||||
@@ -451,8 +451,8 @@
|
||||
//Abductors
|
||||
/datum/admins/proc/makeAbductorTeam()
|
||||
new /datum/round_event/ghost_role/abductor
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/admins/proc/makeRevenant()
|
||||
new /datum/round_event/ghost_role/revenant(TRUE, TRUE)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
else
|
||||
to_chat(usr, "<span class='danger'>Error: create_xeno(): no suitable candidates.</span>")
|
||||
if(!istext(ckey))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/alien_caste = input(usr, "Please choose which caste to spawn.","Pick a caste",null) as null|anything in list("Queen","Praetorian","Hunter","Sentinel","Drone","Larva")
|
||||
var/obj/effect/landmark/spawn_here = GLOB.xeno_spawn.len ? pick(GLOB.xeno_spawn) : null
|
||||
@@ -319,7 +319,7 @@
|
||||
if("Larva")
|
||||
new_xeno = new /mob/living/carbon/alien/larva(spawn_here)
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
if(!spawn_here)
|
||||
SSjob.SendToLateJoin(new_xeno, FALSE)
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
var/msg = "<span class='notice'>[key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].</span>"
|
||||
message_admins(msg)
|
||||
admin_ticket_log(new_xeno, msg)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/*
|
||||
If a guy was gibbed and you want to revive him, this is a good way to do so.
|
||||
|
||||
@@ -449,7 +449,7 @@ GLOBAL_LIST_EMPTY(antagonists)
|
||||
antag_memory = new_memo
|
||||
|
||||
/**
|
||||
* Gets how fast we can hijack the shuttle, return 0 for can not hijack.
|
||||
* Gets how fast we can hijack the shuttle, return FALSE 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()
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
if(H.stat || H.restrained())
|
||||
return
|
||||
if(!ishuman(H))
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(loc == H || (in_range(src, H) && isturf(loc)))
|
||||
H.set_machine(src)
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/datum/station_state/proc/score(datum/station_state/result)
|
||||
if(!result)
|
||||
return 0
|
||||
return FALSE
|
||||
var/output = 0
|
||||
output += (result.floor / max(floor,1))
|
||||
output += (result.r_wall/ max(r_wall,1))
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/Process_Spacemove(movement_dir = 0)
|
||||
for(var/obj/structure/blob/B in range(1, src))
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/blob/proc/blob_chat(msg)
|
||||
|
||||
@@ -65,7 +65,7 @@ GLOBAL_LIST_INIT(valid_blobstrains, subtypesof(/datum/blobstrain) - list(/datum/
|
||||
return
|
||||
|
||||
/datum/blobstrain/proc/tesla_reaction(obj/structure/blob/B, power, coefficient = 1) //when the blob is hit by a tesla bolt, do this
|
||||
return 1 //return 0 to ignore damage
|
||||
return TRUE //return FALSE to ignore damage
|
||||
|
||||
/datum/blobstrain/proc/extinguish_reaction(obj/structure/blob/B, coefficient = 1) //when the blob is hit with water, do this
|
||||
return
|
||||
|
||||
@@ -29,5 +29,5 @@
|
||||
|
||||
/datum/reagent/blob/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
|
||||
if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob))
|
||||
return 0 //the dead, and blob mobs, don't cause reactions
|
||||
return FALSE //the dead, and blob mobs, don't cause reactions
|
||||
return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
if(!(C && C.overmind && C.overmind.blobstrain.type == B.overmind.blobstrain.type) && prob(80))
|
||||
new /obj/effect/hotspot(T)
|
||||
if(damage_flag == FIRE)
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/reagent/blob/blazing_oil
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/blobstrain/reagent/energized_jelly/tesla_reaction(obj/structure/blob/B, power)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/blobstrain/reagent/energized_jelly/emp_reaction(obj/structure/blob/B, severity)
|
||||
var/damage = rand(30, 50) - severity * rand(10, 15)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/datum/blobstrain/reagent/explosive_lattice/damage_reaction(obj/structure/blob/B, damage, damage_type, damage_flag)
|
||||
if(damage_flag == BOMB)
|
||||
return 0
|
||||
return FALSE
|
||||
else if(damage_flag != MELEE && damage_flag != BULLET && damage_flag != LASER)
|
||||
return damage * 1.5
|
||||
return ..()
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
for (var/datum/blobstrain/bt in blobstrains)
|
||||
. += bt.tesla_reaction(B, power, coefficient*typeshare)
|
||||
if (prob(. / length(blobstrains) * 100))
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/blobstrain/multiplex/extinguish_reaction(obj/structure/blob/B, coefficient = 1) //when the blob is hit with water, do this
|
||||
for (var/datum/blobstrain/bt in blobstrains)
|
||||
|
||||
@@ -26,5 +26,5 @@
|
||||
|
||||
/datum/reagent/blob/reactive_spines/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
|
||||
if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob))
|
||||
return 0 //the dead, and blob mobs, don't cause reactions
|
||||
return FALSE //the dead, and blob mobs, don't cause reactions
|
||||
M.adjustBruteLoss(0.8*reac_volume)
|
||||
|
||||
@@ -264,13 +264,13 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
if(B)
|
||||
forceMove(NewLoc)
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
var/area/A = get_area(NewLoc)
|
||||
if(isspaceturf(NewLoc) || istype(A, /area/shuttle)) //if unplaced, can't go on shuttles or space tiles
|
||||
return 0
|
||||
return FALSE
|
||||
forceMove(NewLoc)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/camera/blob/mind_initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
/mob/camera/blob/proc/can_buy(cost = 15)
|
||||
if(blob_points < cost)
|
||||
to_chat(src, "<span class='warning'>You cannot afford this, you need at least [cost] resources!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
add_points(-cost)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
// Power verbs
|
||||
|
||||
/mob/camera/blob/proc/place_blob_core(placement_override, pop_override = FALSE)
|
||||
if(placed && placement_override != -1)
|
||||
return 1
|
||||
return TRUE
|
||||
if(!placement_override)
|
||||
if(!pop_override)
|
||||
for(var/mob/living/M in range(7, src))
|
||||
@@ -17,30 +17,30 @@
|
||||
continue
|
||||
if(M.client)
|
||||
to_chat(src, "<span class='warning'>There is someone too close to place your blob core!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
for(var/mob/living/M in view(13, src))
|
||||
if(ROLE_BLOB in M.faction)
|
||||
continue
|
||||
if(M.client)
|
||||
to_chat(src, "<span class='warning'>Someone could see your blob core from here!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
var/turf/T = get_turf(src)
|
||||
if(T.density)
|
||||
to_chat(src, "<span class='warning'>This spot is too dense to place a blob core on!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
for(var/obj/O in T)
|
||||
if(istype(O, /obj/structure/blob))
|
||||
if(istype(O, /obj/structure/blob/normal))
|
||||
qdel(O)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>There is already a blob here!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else if(O.density)
|
||||
to_chat(src, "<span class='warning'>This spot is too dense to place a blob core on!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!pop_override && world.time <= manualplace_min_time && world.time <= autoplace_max_time)
|
||||
to_chat(src, "<span class='warning'>It is too early to place your blob core!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else if(placement_override == 1)
|
||||
var/turf/T = pick(GLOB.blobstart)
|
||||
forceMove(T) //got overrided? you're somewhere random, motherfucker
|
||||
@@ -54,7 +54,7 @@
|
||||
core.update_icon()
|
||||
update_health_hud()
|
||||
placed = 1
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/camera/blob/verb/transport_core()
|
||||
set category = "Blob"
|
||||
|
||||
@@ -123,8 +123,8 @@
|
||||
heal_timestamp = world.time + 20
|
||||
update_icon()
|
||||
pulse_timestamp = world.time + 10
|
||||
return 1 //we did it, we were pulsed!
|
||||
return 0 //oh no we failed
|
||||
return TRUE //we did it, we were pulsed!
|
||||
return FALSE //oh no we failed
|
||||
|
||||
/obj/structure/blob/proc/ConsumeTile()
|
||||
for(var/atom/A in loc)
|
||||
@@ -157,7 +157,7 @@
|
||||
else
|
||||
T = null
|
||||
if(!T)
|
||||
return 0
|
||||
return FALSE
|
||||
var/make_blob = TRUE //can we make a blob?
|
||||
|
||||
if(isspaceturf(T) && !(locate(/obj/structure/lattice) in T) && prob(80))
|
||||
@@ -271,7 +271,7 @@
|
||||
damage_amount *= fire_resist
|
||||
if(CLONE)
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
var/armor_protection = 0
|
||||
if(damage_flag)
|
||||
armor_protection = armor.getRating(damage_flag)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
/obj/item/organ/heart/vampheart/Restart()
|
||||
beating = 0 // DONT run ..(). We don't want to start beating again.
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/item/organ/heart/vampheart/Stop()
|
||||
fakingit = 0
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
update_icon()
|
||||
//to_chat(user, "<span class='notice'>You flip a secret latch and unlock [src].</span>") // Don't bother. We know it's unlocked.
|
||||
locked = FALSE
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
playsound(get_turf(src), 'sound/machines/door_locked.ogg', 20, 1)
|
||||
to_chat(user, "<span class='notice'>[src] is locked tight from the inside.</span>")
|
||||
|
||||
@@ -229,10 +229,10 @@
|
||||
playsound(get_turf(owner.current), 'sound/effects/lingreadapt.ogg', 75, TRUE, 5)
|
||||
can_respec = 0
|
||||
SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt")
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
to_chat(owner.current, "<span class='danger'>You lack the power to readapt your evolutions!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//Called in life()
|
||||
/datum/antagonist/changeling/proc/regenerate()//grants the HuD in life.dm
|
||||
@@ -285,7 +285,7 @@
|
||||
if(verbose)
|
||||
to_chat(user, "<span class='warning'>[target] is not compatible with our biology.</span>")
|
||||
return
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/antagonist/changeling/proc/create_profile(mob/living/carbon/human/H, protect = 0)
|
||||
|
||||
@@ -47,10 +47,10 @@ the same goes for Remove(). if you override Remove(), call parent or else your p
|
||||
|
||||
/datum/action/changeling/proc/sting_action(mob/user, mob/target)
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/action/changeling/proc/sting_feedback(mob/user, mob/target)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//Fairly important to remember to return TRUE on success >.<
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ GLOBAL_LIST_EMPTY(hivemind_bank)
|
||||
if(first_prof.name == user.real_name)//If our current DNA is the stalest, we gotta ditch it.
|
||||
to_chat(user, "<span class='warning'>We have reached our capacity to store genetic information! We must transform before absorbing more.</span>")
|
||||
return
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/hivemind_download/sting_action(mob/user)
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(!chosen_prof)
|
||||
return
|
||||
if(!user || user.mob_transforming)
|
||||
return 0
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>We transform our appearance.</span>")
|
||||
|
||||
changeling.purchasedpowers -= src
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
changeling.chem_recharge_slowdown -= recharge_slowdown
|
||||
user.update_inv_hands()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/weapon/sting_action(mob/living/user)
|
||||
var/obj/item/held = user.get_active_held_item()
|
||||
@@ -597,7 +597,7 @@
|
||||
/datum/action/changeling/gloves/proc/check_gloves(mob/user)
|
||||
var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(!ishuman(user) || !changeling)
|
||||
return 1
|
||||
return TRUE
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H.gloves, glove_type))
|
||||
H.visible_message("<span class='warning'>With a sickening crunch, [H] reforms [H.p_their()] [glove_name_simple] into hands!</span>", "<span class='warning'>We assimilate our [glove_name_simple].</span>", "<span class='italics'>You hear organic matter ripping and tearing!</span>")
|
||||
@@ -609,7 +609,7 @@
|
||||
playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds
|
||||
|
||||
changeling.chem_recharge_slowdown -= recharge_slowdown
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/gloves/Remove(mob/user)
|
||||
if(!ishuman(user))
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling))
|
||||
sting_feedback(user, target)
|
||||
changeling.chem_charges -= chemical_cost
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/sting/sting_feedback(mob/user, mob/target)
|
||||
if(!target)
|
||||
@@ -61,7 +61,7 @@
|
||||
to_chat(user, "<span class='notice'>We stealthily sting [target.name].</span>")
|
||||
if(target.mind && target.mind.has_antag_datum(/datum/antagonist/changeling))
|
||||
to_chat(target, "<span class='warning'>You feel a tiny prick.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/action/changeling/sting/transformation
|
||||
@@ -94,8 +94,8 @@
|
||||
return
|
||||
if((HAS_TRAIT(target, TRAIT_HUSK)) || !iscarbon(target) || (NOTRANSSTING in target.dna.species.species_traits))
|
||||
to_chat(user, "<span class='warning'>Our sting appears ineffective against its DNA.</span>")
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/sting/transformation/sting_action(mob/user, mob/target)
|
||||
if(ismonkey(target))
|
||||
@@ -133,8 +133,8 @@
|
||||
var/mob/living/L = target
|
||||
if((HAS_TRAIT(L, TRAIT_HUSK)) || !L.has_dna())
|
||||
to_chat(user, "<span class='warning'>Our sting appears ineffective against its DNA.</span>")
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/action/changeling/sting/false_armblade/sting_action(mob/user, mob/target)
|
||||
log_combat(user, target, "stung", object="false armblade sting")
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
return ..()
|
||||
user.visible_message("<span class='warning'>[user] scatters [src] with [I]!</span>", "<span class='danger'>You scatter [src] with [I]!</span>")
|
||||
qdel(src)
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/sigil/attack_tk(mob/user)
|
||||
|
||||
@@ -16,22 +16,22 @@ drain_amount: How much is drained by default; Influenced by a multiplier on most
|
||||
var/obj/item/stock_parts/cell/cell = get_cell()
|
||||
if(cell)
|
||||
return cell.power_drain(clockcult_user, drain_weapons, recursive, drain_amount)
|
||||
return 0 //Returns 0 instead of FALSE to symbolise it returning the power amount in other cases, not TRUE aka 1
|
||||
return FALSE //Returns 0 instead of FALSE to symbolise it returning the power amount in other cases, not TRUE aka 1
|
||||
|
||||
/obj/item/melee/baton/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) //balance memes
|
||||
if(!drain_weapons)
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/stock_parts/cell/cell = get_cell()
|
||||
if(cell)
|
||||
return cell.power_drain(clockcult_user, drain_weapons, recursive, drain_amount)
|
||||
return 0 //No need to recurse further in batons
|
||||
return FALSE //No need to recurse further in batons
|
||||
|
||||
/obj/item/gun/power_drain(clockcult_user, drain_weapons = FALSE, recursive = FALSE, drain_amount = MIN_CLOCKCULT_POWER) //balance memes
|
||||
if(!drain_weapons)
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/stock_parts/cell/cell = get_cell()
|
||||
if(!cell)
|
||||
return 0
|
||||
return FALSE
|
||||
if(cell.charge)
|
||||
. = min(cell.charge, drain_amount*4) //Done snowflakey because guns have far smaller cells than batons / other equipment, also no need to recurse further in guns
|
||||
cell.use(.)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/obj/item/shield/riot/ratvarian/proc/calc_bash_mult()
|
||||
var/bash_mult = 0
|
||||
if(!dam_absorbed)
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
bash_mult += round(clamp(1 + (dam_absorbed / bash_mult_steps), 1, max_bash_mult), 0.1) //Multiplies the effect of bashes by up to [max_bash_mult], though never less than one
|
||||
return bash_mult
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/clockwork/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/armor/clockwork
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
/obj/item/clothing/suit/armor/clockwork/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/suit/armor/clockwork/equipped(mob/living/user, slot)
|
||||
@@ -160,7 +160,7 @@
|
||||
|
||||
/obj/item/clothing/gloves/clockwork/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/clockwork/equipped(mob/living/user, slot)
|
||||
@@ -210,7 +210,7 @@
|
||||
|
||||
/obj/item/clothing/shoes/clockwork/mob_can_equip(M, equipper, slot, disable_warning, bypass_equip_delay_self)
|
||||
if(equipper && !is_servant_of_ratvar(equipper))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/shoes/clockwork/equipped(mob/living/user, slot)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot != ITEM_SLOT_EYES)
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/equipped(mob/living/user, slot)
|
||||
@@ -38,7 +38,7 @@
|
||||
update_status(FALSE)
|
||||
if(blaster.ranged_ability_user)
|
||||
blaster.remove_ranged_ability()
|
||||
return 0
|
||||
return FALSE
|
||||
if(is_servant_of_ratvar(user))
|
||||
update_status(TRUE)
|
||||
else
|
||||
@@ -48,7 +48,7 @@
|
||||
to_chat(user, "<span class='userdanger'>You suddenly catch fire!</span>")
|
||||
user.adjust_fire_stacks(5)
|
||||
user.IgniteMob()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/dropped(mob/user)
|
||||
. = ..()
|
||||
@@ -67,27 +67,27 @@
|
||||
/obj/item/clothing/glasses/judicial_visor/proc/update_status(change_to)
|
||||
if(recharging || !isliving(loc))
|
||||
icon_state = "judicial_visor_0"
|
||||
return 0
|
||||
return FALSE
|
||||
if(active == change_to)
|
||||
return 0
|
||||
return FALSE
|
||||
var/mob/living/L = loc
|
||||
active = change_to
|
||||
icon_state = "judicial_visor_[active]"
|
||||
L.update_action_buttons_icon()
|
||||
L.update_inv_glasses()
|
||||
if(!is_servant_of_ratvar(L) || L.stat)
|
||||
return 0
|
||||
return FALSE
|
||||
switch(active)
|
||||
if(TRUE)
|
||||
to_chat(L, "<span class='notice'>As you put on [src], its lens begins to glow, information flashing before your eyes.</span>\n\
|
||||
<span class='heavy_brass'>Judicial visor active. Use the action button to gain the ability to smite the unworthy.</span>")
|
||||
if(FALSE)
|
||||
to_chat(L, "<span class='notice'>As you take off [src], its lens darkens once more.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/glasses/judicial_visor/proc/recharge_visor(mob/living/user)
|
||||
if(!src)
|
||||
return 0
|
||||
return FALSE
|
||||
recharging = FALSE
|
||||
if(user && src == user.get_item_by_slot(ITEM_SLOT_EYES))
|
||||
to_chat(user, "<span class='brass'>Your [name] hums. It is ready.</span>")
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/obj/item/clockwork/replica_fabricator/scarab/fabricate(atom/target, mob/living/user)
|
||||
if(!debug && !isdrone(user))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/clockwork/replica_fabricator/scarab/debug
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
fully_heal(TRUE)
|
||||
|
||||
/mob/living/simple_animal/hostile/clockwork/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE)
|
||||
return 0 //ouch, my metal-unlikely-to-be-damaged-by-electricity-body
|
||||
return FALSE //ouch, my metal-unlikely-to-be-damaged-by-electricity-body
|
||||
|
||||
/mob/living/simple_animal/hostile/clockwork/examine(mob/user)
|
||||
var/t_He = p_they(TRUE)
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
stat(null, "You do [melee_damage_upper] damage on melee attacks.")
|
||||
|
||||
/mob/living/simple_animal/hostile/clockwork/guardian/Process_Spacemove(movement_dir = 0)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/clockwork/guardian/proc/bind_to_host(mob/living/new_host)
|
||||
if(!new_host)
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
if(is_servant_of_ratvar(user) && I.tool_behaviour == TOOL_WRENCH && unanchored_icon)
|
||||
if(default_unfasten_wrench(user, I, 50) == SUCCESSFUL_UNFASTEN)
|
||||
update_anchored(user)
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/attacked_by(obj/item/I, mob/living/user, attackchain_flags = NONE, damage_multiplier = 1)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
if(user.canUseTopic(src, !issilicon(user), NO_DEXTERY) && is_servant_of_ratvar(user))
|
||||
if(!can_access_clockwork_power(src, mania_cost))
|
||||
to_chat(user, "<span class='warning'>[src] needs more power to function!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
toggle(0, user)
|
||||
|
||||
/obj/structure/destructible/clockwork/powered/mania_motor/toggle(fast_process, mob/living/user)
|
||||
|
||||
@@ -144,10 +144,10 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/proc/lose_target()
|
||||
if(!target)
|
||||
return 0
|
||||
return FALSE
|
||||
target = null
|
||||
visible_message("<span class='warning'>[src] settles and seems almost disappointed.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/structure/destructible/clockwork/ocular_warden/get_efficiency_mod()
|
||||
if(GLOB.ratvar_awakens)
|
||||
|
||||
@@ -43,19 +43,19 @@
|
||||
to_chat(user, "<span class='brass'>You break [src] apart, refunding some of the power used.</span>")
|
||||
adjust_clockwork_power(power_refund)
|
||||
take_damage(max_integrity)
|
||||
return 0
|
||||
return FALSE
|
||||
if(active)
|
||||
return 0
|
||||
return FALSE
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T || !is_station_level(T.z))
|
||||
to_chat(user, "<span class='warning'>[src] must be on the station to function!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(SSshuttle.emergency.mode != SHUTTLE_CALL)
|
||||
to_chat(user, "<span class='warning'>No emergency shuttles are attempting to arrive at the station!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!try_use_power(get_delay_cost()))
|
||||
to_chat(user, "<span class='warning'>[src] needs more power to function!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
delay_cost += delay_cost_increase
|
||||
delay_remaining += PRISM_DELAY_DURATION
|
||||
toggle(0, user)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/obj/structure/destructible/clockwork/wall_gear/attackby(obj/item/I, mob/user, params)
|
||||
if(I.tool_behaviour == TOOL_WRENCH)
|
||||
default_unfasten_wrench(user, I, 10)
|
||||
return 1
|
||||
return TRUE
|
||||
else if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
if(anchored)
|
||||
to_chat(user, "<span class='warning'>[src] needs to be unsecured to disassemble it!</span>")
|
||||
@@ -34,7 +34,7 @@
|
||||
if(I.use_tool(src, user, 30, volume=100) && !anchored)
|
||||
to_chat(user, "<span class='notice'>You disassemble [src].</span>")
|
||||
deconstruct(TRUE)
|
||||
return 1
|
||||
return TRUE
|
||||
else if(istype(I, /obj/item/stack/tile/brass))
|
||||
var/obj/item/stack/tile/brass/W = I
|
||||
if(W.get_amount() < 1)
|
||||
@@ -64,7 +64,7 @@
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need more brass to make a [anchored ? "false ":""]wall!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/wall_gear/deconstruct(disassembled = TRUE)
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
var/where = mob.equip_in_one_of_slots(T, slots, critical = TRUE)
|
||||
if(!where)
|
||||
to_chat(mob, "<span class='userdanger'>Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
to_chat(mob, "<span class='danger'>You have a [item_name] in your [where].</span>")
|
||||
if(where == "backpack")
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
/datum/action/innate/cult/master/IsAvailable(silent = FALSE)
|
||||
if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master) || GLOB.cult_narsie)
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/datum/action/innate/cult/master/finalreck
|
||||
|
||||
@@ -243,12 +243,12 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
for(var/M in invokers)
|
||||
to_chat(M, "<span class='warning'>You need at least two invokers to convert [convertee]!</span>")
|
||||
log_game("Offer rune failed - tried conversion with one invoker")
|
||||
return 0
|
||||
return FALSE
|
||||
if(convertee.anti_magic_check(TRUE, TRUE, chargecost = 0)) //Not major because it can be spammed
|
||||
for(var/M in invokers)
|
||||
to_chat(M, "<span class='warning'>Something is shielding [convertee]'s mind!</span>")
|
||||
log_game("Offer rune failed - convertee had anti-magic")
|
||||
return 0
|
||||
return FALSE
|
||||
var/brutedamage = convertee.getBruteLoss()
|
||||
var/burndamage = convertee.getFireLoss()
|
||||
if(brutedamage || burndamage)
|
||||
|
||||
@@ -389,43 +389,43 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
|
||||
if(iscarbon(body))
|
||||
var/mob/living/carbon/H = body
|
||||
return H.reagents.has_reagent(/datum/reagent/water/holywater)
|
||||
return 0
|
||||
return FALSE
|
||||
if(BANISH_COFFIN)
|
||||
return (body && istype(body.loc, /obj/structure/closet/crate/coffin))
|
||||
if(BANISH_FORMALDYHIDE)
|
||||
if(iscarbon(body))
|
||||
var/mob/living/carbon/H = body
|
||||
return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde)
|
||||
return 0
|
||||
return FALSE
|
||||
if(BANISH_RUNES)
|
||||
if(body)
|
||||
for(var/obj/effect/decal/cleanable/crayon/R in range(0,body))
|
||||
if (R.name == "rune")
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
if(BANISH_CANDLES)
|
||||
if(body)
|
||||
var/count = 0
|
||||
for(var/obj/item/candle/C in range(1,body))
|
||||
count += C.lit
|
||||
if(count>=4)
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
if(BANISH_DESTRUCTION)
|
||||
if(body)
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
if(BANISH_FUNERAL_GARB)
|
||||
if(ishuman(body))
|
||||
var/mob/living/carbon/human/H = body
|
||||
if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/misc/burial))
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
else
|
||||
for(var/obj/item/clothing/under/misc/burial/B in range(0,body))
|
||||
if(B.loc == get_turf(B)) //Make sure it's not in someone's inventory or something.
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/antagonist/devil/proc/hellish_resurrection(mob/living/body)
|
||||
message_admins("[owner.name] (true name is: [truename]) is resurrecting using hellish energy.</a>")
|
||||
|
||||
@@ -35,4 +35,4 @@
|
||||
DefaultCombatKnockdown(40)
|
||||
qdel(weapon)
|
||||
return 2
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
/datum/antagonist/sintouched/threat()
|
||||
switch(sin)
|
||||
if(SIN_GLUTTONY,SIN_ENVY)
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/antagonist/sintouched/New()
|
||||
. = ..()
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
. += "</span>"
|
||||
|
||||
/mob/living/carbon/true_devil/IsAdvancedToolUser()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/true_devil/resist_buckle()
|
||||
if(buckled)
|
||||
@@ -110,7 +110,7 @@
|
||||
return ..() //flashes don't stop devils UNLESS it's their bane.
|
||||
|
||||
/mob/living/carbon/true_devil/soundbang_act()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/true_devil/get_ear_protection()
|
||||
return 2
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
/mob/living/carbon/true_devil/singularity_act()
|
||||
if(ascended)
|
||||
return 0
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
//ATTACK GHOST IGNORING PARENT RETURN VALUE
|
||||
@@ -138,7 +138,7 @@
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/true_devil/can_be_revived()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/true_devil/resist_fire()
|
||||
//They're immune to fire.
|
||||
@@ -177,7 +177,7 @@
|
||||
// devils do not need to breathe
|
||||
|
||||
/mob/living/carbon/true_devil/is_literate()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/true_devil/ex_act(severity, target, origin)
|
||||
if(!ascended)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, invdrop, silent = FALSE)
|
||||
if(..())
|
||||
update_inv_hands()
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/true_devil/update_inv_hands()
|
||||
//TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_overlay should use the down sprite when facing down, left, or right, and the up sprite when facing up.
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
//Immunities
|
||||
|
||||
/mob/living/simple_animal/revenant/ex_act(severity, target, origin)
|
||||
return 1 //Immune to the effects of explosions.
|
||||
return TRUE //Immune to the effects of explosions.
|
||||
|
||||
/mob/living/simple_animal/revenant/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
return power
|
||||
@@ -225,7 +225,7 @@
|
||||
|
||||
/mob/living/simple_animal/revenant/death()
|
||||
if(!revealed || stasis) //Revenants cannot die if they aren't revealed //or are already dead
|
||||
return 0
|
||||
return FALSE
|
||||
stasis = TRUE
|
||||
to_chat(src, "<span class='revendanger'>NO! No... it's too late, you can feel your essence [pick("breaking apart", "drifting away")]...</span>")
|
||||
mob_transforming = TRUE
|
||||
@@ -333,7 +333,7 @@
|
||||
to_chat(src, "<span class='revennotice'>Gained [essence_amt]E[source ? " from [source]":""].</span>")
|
||||
else
|
||||
to_chat(src, "<span class='revenminor'>Lost [essence_amt]E[source ? " from [source]":""].</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/mob/living/simple_animal/revenant/proc/telekinesis_cooldown_end()
|
||||
if(!telekinesis_cooldown)
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/organ/heart/demon/Stop()
|
||||
return 0 // Always beating.
|
||||
return FALSE // Always beating.
|
||||
|
||||
/mob/living/simple_animal/slaughter/laughter
|
||||
// The laughter demon! It's everyone's best friend! It just wants to hug
|
||||
|
||||
@@ -142,9 +142,9 @@
|
||||
/mob/living/simple_animal/hostile/swarmer/CanAllowThrough(atom/movable/O)
|
||||
. = ..()
|
||||
if(istype(O, /obj/item/projectile/beam/disabler))//Allows for swarmers to fight as a group without wasting their shots hitting each other
|
||||
return 1
|
||||
return TRUE
|
||||
if(isswarmer(O))
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
////CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S////
|
||||
/mob/living/simple_animal/hostile/swarmer/AttackingTarget()
|
||||
@@ -191,11 +191,11 @@
|
||||
return S.Integrate(src)
|
||||
|
||||
/atom/movable/proc/IntegrateAmount()
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/item/IntegrateAmount() //returns the amount of resources gained when eating this item
|
||||
if(custom_materials[SSmaterials.GetMaterialRef(/datum/material/iron)] || custom_materials[SSmaterials.GetMaterialRef(/datum/material/glass)])
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/swarmer_act()//Stops you from eating the entire armory
|
||||
@@ -217,7 +217,7 @@
|
||||
return 2
|
||||
|
||||
/obj/item/clockwork/alloy_shards/small/IntegrateAmount()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/turf/open/floor/swarmer_act()//ex_act() on turf calls it on its contents, this is to prevent attacking mobs by DisIntegrate()'ing the floor
|
||||
return FALSE
|
||||
@@ -494,7 +494,7 @@
|
||||
resources -= fabrication_cost
|
||||
else
|
||||
to_chat(src, "<span class='warning'>You do not have the necessary resources to fabricate this object.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
return new fabrication_object(loc)
|
||||
|
||||
/mob/living/simple_animal/hostile/swarmer/proc/Integrate(atom/movable/target)
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
|
||||
/datum/round_event/spawn_swarmer/start()
|
||||
if(find_swarmer())
|
||||
return 0
|
||||
return FALSE
|
||||
if(!GLOB.the_gateway)
|
||||
return 0
|
||||
return FALSE
|
||||
new /obj/effect/mob_spawn/swarmer(get_turf(GLOB.the_gateway))
|
||||
if(prob(25)) //25% chance to announce it to the crew
|
||||
var/swarmer_report = "<span class='big bold'>[command_name()] High-Priority Update</span>"
|
||||
@@ -26,5 +26,5 @@
|
||||
for(var/i in GLOB.mob_living_list)
|
||||
var/mob/living/L = i
|
||||
if(istype(L, /mob/living/simple_animal/hostile/swarmer) && L.client) //If there is a swarmer with an active client, we've found our swarmer
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -21,18 +21,18 @@
|
||||
if(istype(SSticker.mode,/datum/game_mode/dynamic))
|
||||
var/datum/game_mode/dynamic/mode = SSticker.mode
|
||||
if(dynamic_requirement > 0 && mode.threat_level < dynamic_requirement)
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/proc/CanBuy(mob/living/carbon/human/user,obj/item/spellbook/book) // Specific circumstances
|
||||
if(book.uses<cost || limit == 0)
|
||||
return 0
|
||||
return FALSE
|
||||
for(var/spell in user.mind.spell_list)
|
||||
if(is_type_in_typecache(spell, no_coexistance_typecache))
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/proc/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success
|
||||
/datum/spellbook_entry/proc/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return TRUE on success
|
||||
if(!S || QDELETED(S))
|
||||
S = new spell_type()
|
||||
//Check if we got the spell already
|
||||
@@ -40,7 +40,7 @@
|
||||
if(initial(S.name) == initial(aspell.name)) // Not using directly in case it was learned from one spellbook then upgraded in another
|
||||
if(aspell.spell_level >= aspell.level_max)
|
||||
to_chat(user, "<span class='warning'>This spell cannot be improved further.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
aspell.name = initial(aspell.name)
|
||||
aspell.spell_level++
|
||||
@@ -63,22 +63,22 @@
|
||||
if(aspell.spell_level >= aspell.level_max)
|
||||
to_chat(user, "<span class='notice'>This spell cannot be strengthened any further.</span>")
|
||||
SSblackbox.record_feedback("nested tally", "wizard_spell_improved", 1, list("[name]", "[aspell.spell_level]"))
|
||||
return 1
|
||||
return TRUE
|
||||
//No same spell found - just learn it
|
||||
SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name)
|
||||
user.mind.AddSpell(S)
|
||||
to_chat(user, "<span class='notice'>You have learned [S.name].</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/proc/CanRefund(mob/living/carbon/human/user,obj/item/spellbook/book)
|
||||
if(!refundable)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!S)
|
||||
S = new spell_type()
|
||||
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
|
||||
if(initial(S.name) == initial(aspell.name))
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/spellbook_entry/proc/Refund(mob/living/carbon/human/user,obj/item/spellbook/book) //return point value or -1 for failure
|
||||
var/area/wizard_station/A = GLOB.areas_by_type[/area/wizard_station]
|
||||
@@ -228,7 +228,7 @@
|
||||
spell_type = /obj/effect/proc_holder/spell/aimed/lightningbolt
|
||||
cost = 3
|
||||
|
||||
/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return 1 on success
|
||||
/datum/spellbook_entry/lightningbolt/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) //return TRUE on success
|
||||
. = ..()
|
||||
ADD_TRAIT(user, TRAIT_TESLA_SHOCKIMMUNE, "lightning_bolt_spell")
|
||||
|
||||
@@ -291,7 +291,7 @@
|
||||
/datum/spellbook_entry/item/Buy(mob/living/carbon/human/user,obj/item/spellbook/book)
|
||||
new item_path(get_turf(user))
|
||||
SSblackbox.record_feedback("tally", "wizard_spell_learned", 1, name)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/item/GetInfo()
|
||||
var/dat =""
|
||||
@@ -520,7 +520,7 @@
|
||||
|
||||
/datum/spellbook_entry/summon/guns/IsAvailible()
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return FALSE
|
||||
return (!CONFIG_GET(flag/no_summon_guns) && ..())
|
||||
|
||||
/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/spellbook/book)
|
||||
@@ -529,7 +529,7 @@
|
||||
active = 1
|
||||
playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You have cast summon guns!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/magic
|
||||
name = "Summon Magic"
|
||||
@@ -539,7 +539,7 @@
|
||||
|
||||
/datum/spellbook_entry/summon/magic/IsAvailible()
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return FALSE
|
||||
return (!CONFIG_GET(flag/no_summon_guns) && ..())
|
||||
|
||||
/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/spellbook/book)
|
||||
@@ -548,7 +548,7 @@
|
||||
active = 1
|
||||
playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You have cast summon magic!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/events
|
||||
name = "Summon Events"
|
||||
@@ -558,7 +558,7 @@
|
||||
|
||||
/datum/spellbook_entry/summon/events/IsAvailible()
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return FALSE
|
||||
return (!CONFIG_GET(flag/no_summon_events) && ..())
|
||||
|
||||
/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/spellbook/book)
|
||||
@@ -567,7 +567,7 @@
|
||||
times++
|
||||
playsound(get_turf(user), 'sound/magic/castsummon.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>You have cast summon events.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spellbook_entry/summon/events/GetInfo()
|
||||
. = ..()
|
||||
@@ -755,7 +755,7 @@
|
||||
if(H.stat || H.restrained())
|
||||
return
|
||||
if(!ishuman(H))
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(H.mind.special_role == "apprentice")
|
||||
temp = "If you got caught sneaking a peek from your teacher's spellbook, you'd likely be expelled from the Wizard Academy. Better not."
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
var/activate_cooldown = 3 SECONDS
|
||||
|
||||
/obj/item/assembly/get_part_rating()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/proc/on_attach()
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/obj/item/assembly/health/proc/toggle_scan()
|
||||
if(!secured)
|
||||
return 0
|
||||
return FALSE
|
||||
scanning = !scanning
|
||||
if(scanning)
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -278,7 +278,7 @@ we use a hook instead
|
||||
/datum/gas_mixture/copy_from_turf(turf/model)
|
||||
set_temperature(initial(model.initial_temperature))
|
||||
parse_gas_string(model.initial_gas_mix)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/gas_mixture/proc/__auxtools_parse_gas_string(gas_string)
|
||||
|
||||
@@ -297,7 +297,7 @@ we use a hook instead
|
||||
for(var/id in gas)
|
||||
set_moles(id, text2num(gas[id]))
|
||||
archive()
|
||||
return 1
|
||||
return TRUE
|
||||
*/
|
||||
/*
|
||||
/datum/gas_mixture/react(datum/holder)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
TOTAL_MOLES(cached_gases, .)
|
||||
. *= R_IDEAL_GAS_EQUATION * temperature / volume
|
||||
return
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/gas_mixture/return_temperature() //kelvins
|
||||
return temperature
|
||||
@@ -91,11 +91,11 @@
|
||||
/datum/gas_mixture/archive()
|
||||
temperature_archived = temperature
|
||||
gas_archive = gases.Copy()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/gas_mixture/merge(datum/gas_mixture/giver)
|
||||
if(!giver)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//heat transfer
|
||||
if(abs(temperature - giver.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
||||
@@ -111,7 +111,7 @@
|
||||
for(var/giver_id in giver_gases)
|
||||
cached_gases[giver_id] += giver_gases[giver_id]
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/gas_mixture/remove(amount)
|
||||
var/sum
|
||||
@@ -172,7 +172,7 @@
|
||||
//remove all gases not in the sample
|
||||
cached_gases &= sample_gases
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/gas_mixture/copy_from_turf(turf/model)
|
||||
parse_gas_string(model.initial_gas_mix)
|
||||
@@ -182,7 +182,7 @@
|
||||
if(model.temperature != initial(model.temperature) || model.temperature != initial(model_parent.temperature))
|
||||
temperature = model.temperature
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4)
|
||||
|
||||
|
||||
@@ -16,10 +16,10 @@
|
||||
if(min2 != -1 && val <= min2)
|
||||
return 2
|
||||
if(max1 != -1 && val >= max1)
|
||||
return 1
|
||||
return TRUE
|
||||
if(min1 != -1 && val <= min1)
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/tlv/no_checks
|
||||
min2 = -1
|
||||
@@ -488,16 +488,16 @@
|
||||
|
||||
/obj/machinery/airalarm/proc/shock(mob/user, prb)
|
||||
if((stat & (NOPOWER))) // unpowered, no shock
|
||||
return 0
|
||||
return FALSE
|
||||
if(!prob(prb))
|
||||
return 0 //you lucked out, no shock for you
|
||||
return FALSE //you lucked out, no shock for you
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start() //sparks always.
|
||||
if (electrocute_mob(user, get_area(src), src, 1, TRUE))
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/airalarm/proc/refresh_all()
|
||||
var/area/A = get_base_area(src)
|
||||
@@ -519,7 +519,7 @@
|
||||
|
||||
/obj/machinery/airalarm/proc/send_signal(target, list/command, mob/user)//sends signal 'command' to 'target'. Returns 0 if no radio connection, 1 otherwise
|
||||
if(!radio_connection)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/datum/signal/signal = new(command)
|
||||
signal.data["tag"] = target
|
||||
@@ -527,7 +527,7 @@
|
||||
signal.data["user"] = user
|
||||
radio_connection.post_signal(src, signal, RADIO_FROM_AIRALARM)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/airalarm/proc/get_mode_name(mode_value)
|
||||
switch(mode_value)
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker).
|
||||
reagent_transfer = 0
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/process_atmos()
|
||||
..()
|
||||
@@ -445,7 +445,7 @@
|
||||
return // can't ventcrawl in or out of cryo.
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/can_see_pipes()
|
||||
return 0 // you can't see the pipe network when inside a cryo cell.
|
||||
return FALSE // you can't see the pipe network when inside a cryo cell.
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/return_temperature()
|
||||
var/datum/gas_mixture/G = airs[1]
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
update_parents()
|
||||
else
|
||||
active_power_usage = idle_power_usage
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/power_change()
|
||||
..()
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/vent_scrubber/receive_signal(datum/signal/signal)
|
||||
if(!is_operational() || !signal.data["tag"] || (signal.data["tag"] != id_tag) || (signal.data["sigtype"]!="command"))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/mob/signal_sender = signal.data["user"]
|
||||
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
self_temperature_delta = -heat/total_heat_capacity
|
||||
sharer_temperature_delta = heat/sharer_heat_capacity
|
||||
else
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
air.set_temperature(air.return_temperature() + self_temperature_delta)
|
||||
modeled_location.TakeTemperature(sharer_temperature_delta)
|
||||
|
||||
@@ -57,18 +57,18 @@
|
||||
/obj/machinery/meter/process_atmos()
|
||||
if(!(target?.flags_1 & INITIALIZED_1))
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(stat & (BROKEN|NOPOWER))
|
||||
icon_state = "meter0"
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
use_power(5)
|
||||
|
||||
var/datum/gas_mixture/environment = target.return_air()
|
||||
if(!environment)
|
||||
icon_state = "meterX"
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/env_pressure = environment.return_pressure()
|
||||
if(env_pressure <= 0.15*ONE_ATMOSPHERE)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
parent = P
|
||||
|
||||
/obj/machinery/atmospherics/pipe/zap_act(power, zap_flags)
|
||||
return 0 // they're not really machines in the normal sense, probably shouldn't explode
|
||||
return FALSE // they're not really machines in the normal sense, probably shouldn't explode
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Destroy()
|
||||
QDEL_NULL(parent)
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/pipe/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == MELEE && damage_amount < 12)
|
||||
return 0
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/paint(paint_color)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
air_contents = new(volume)
|
||||
air_contents.set_temperature(T20C)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/portable_atmospherics/Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
/datum/mapGeneratorModule/snow/checkPlaceAtom(turf/T)
|
||||
if(istype(T, /turf/open/floor/plating/asteroid/snow))
|
||||
return ..(T)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/mapGeneratorModule/bottomlayer/snow
|
||||
spawnableTurfs = list(/turf/open/floor/plating/asteroid/snow/atmosphere = 100)
|
||||
|
||||
@@ -168,4 +168,4 @@
|
||||
to_chat(C, "<span class='warning'>You're already resurrecting!</span>")
|
||||
return
|
||||
C.apply_status_effect(STATUS_EFFECT_WISH_GRANTERS_GIFT)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
build_dir = newdir
|
||||
close_dirswitch()
|
||||
dirbutton.update_icon()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/buildmode/proc/InterceptClickOn(mob/user, params, atom/object)
|
||||
mode.handle_click(user.client, params, object)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
else if(pa.Find("right"))
|
||||
bd.mode.change_settings(usr.client)
|
||||
update_icon()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/buildmode/mode/update_icon_state()
|
||||
icon_state = bd.mode.get_button_iconstate()
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
/atom/movable/screen/buildmode/help/Click(location, control, params)
|
||||
bd.mode.show_help(usr.client)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/buildmode/bdir
|
||||
icon_state = "build"
|
||||
@@ -50,7 +50,7 @@
|
||||
/atom/movable/screen/buildmode/bdir/Click()
|
||||
bd.toggle_dirswitch()
|
||||
update_icon()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
// used to switch between modes
|
||||
/atom/movable/screen/buildmode/modeswitch
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/atom/movable/screen/buildmode/modeswitch/Click()
|
||||
bd.change_mode(modetype)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
// used to switch between dirs
|
||||
/atom/movable/screen/buildmode/dirswitch
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/atom/movable/screen/buildmode/dirswitch/Click()
|
||||
bd.change_dir(dir)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/atom/movable/screen/buildmode/quit
|
||||
icon_state = "buildquit"
|
||||
@@ -86,4 +86,4 @@
|
||||
|
||||
/atom/movable/screen/buildmode/quit/Click()
|
||||
bd.quit()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -117,7 +117,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
// Checks the amount of exportable in object. Credits in the bill, sheets in the stack, etc.
|
||||
// Usually acts as a multiplier for a cost, so item that has 0 amount will be skipped in export.
|
||||
/datum/export/proc/get_amount(obj/O)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
// Checks if the item is fit for export datum.
|
||||
/datum/export/proc/applies_to(obj/O, allowed_categories = NONE, apply_elastic = TRUE)
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
|
||||
/datum/export/material/get_amount(obj/O)
|
||||
if(!material_id)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!isitem(O))
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/I = O
|
||||
if(!(SSmaterials.GetMaterialRef(material_id) in I.custom_materials))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/amount = I.custom_materials[SSmaterials.GetMaterialRef(material_id)]
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
/datum/export/seed/get_cost(obj/O)
|
||||
var/obj/item/seeds/S = O
|
||||
if(!needs_discovery && (S.type in discoveredPlants))
|
||||
return 0
|
||||
return FALSE
|
||||
if(needs_discovery && !(S.type in discoveredPlants))
|
||||
return 0
|
||||
return FALSE
|
||||
return ..() * S.rarity // That's right, no bonus for potency. Send a crappy sample first to "show improvement" later.
|
||||
|
||||
/datum/export/seed/sell_object(obj/O)
|
||||
@@ -31,7 +31,7 @@
|
||||
var/obj/item/seeds/S = O
|
||||
var/cost = ..()
|
||||
if(!cost)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/potDiff = (S.potency - discoveredPlants[S.type])
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/obj/item/stack/S = O
|
||||
if(istype(S))
|
||||
return S.amount
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
// Hides
|
||||
|
||||
|
||||
@@ -167,8 +167,8 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
/client/proc/is_content_unlocked()
|
||||
if(!prefs.unlock_content)
|
||||
to_chat(src, "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Only 10 bucks for 3 months! <a href=\"https://secure.byond.com/membership\">Click Here to find out more</a>.")
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
/*
|
||||
* Call back proc that should be checked in all paths where a client can send messages
|
||||
*
|
||||
@@ -199,11 +199,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
total_message_count = 0
|
||||
total_count_reset = 0
|
||||
cmd_admin_mute(src, mute_type, 1)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//Otherwise just supress the message
|
||||
else if(cache >= SPAM_TRIGGER_AUTOMUTE)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
if(CONFIG_GET(flag/automute_on) && !holder && last_message == message)
|
||||
@@ -211,21 +211,21 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
if(src.last_message_count >= SPAM_TRIGGER_AUTOMUTE)
|
||||
to_chat(src, "<span class='danger'>You have exceeded the spam filter limit for identical messages. An auto-mute was applied.</span>")
|
||||
cmd_admin_mute(src, mute_type, 1)
|
||||
return 1
|
||||
return TRUE
|
||||
if(src.last_message_count >= SPAM_TRIGGER_WARNING)
|
||||
to_chat(src, "<span class='danger'>You are nearing the spam filter limit for identical messages.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
last_message = message
|
||||
src.last_message_count = 0
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
//This stops files larger than UPLOAD_LIMIT being sent from client to server via input(), client.Import() etc.
|
||||
/client/AllowUpload(filename, filelength)
|
||||
if(filelength > UPLOAD_LIMIT)
|
||||
to_chat(src, "<font color='red'>Error: AllowUpload(): File Upload too large. Upload Limit: [UPLOAD_LIMIT/1024]KiB.</font>")
|
||||
return 0
|
||||
return 1
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
///////////
|
||||
@@ -393,7 +393,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
to_chat(src, "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade")
|
||||
else
|
||||
qdel(src)
|
||||
return 0
|
||||
return FALSE
|
||||
else if (byond_version < cwv) //We have words for this client.
|
||||
if(CONFIG_GET(flag/client_warn_popup))
|
||||
var/msg = "<b>Your version of byond may be getting out of date:</b><br>"
|
||||
@@ -413,11 +413,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
if (!CONFIG_GET(flag/allow_webclient))
|
||||
to_chat(src, "Web client is disabled")
|
||||
qdel(src)
|
||||
return 0
|
||||
return FALSE
|
||||
if (CONFIG_GET(flag/webclient_only_byond_members) && !IsByondMember())
|
||||
to_chat(src, "Sorry, but the web client is restricted to byond members only.")
|
||||
qdel(src)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if( (world.address == address || !address) && !GLOB.host )
|
||||
GLOB.host = key
|
||||
|
||||
@@ -1578,7 +1578,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
SetJobPreferenceLevel(job, jpval)
|
||||
SetChoices(user)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/preferences/proc/ResetJobs()
|
||||
@@ -1724,7 +1724,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
UpdateJobPreference(user, href_list["text"], text2num(href_list["level"]))
|
||||
else
|
||||
SetChoices(user)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
else if(href_list["preference"] == "trait")
|
||||
switch(href_list["task"])
|
||||
@@ -3333,7 +3333,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
user_gear[LOADOUT_CUSTOM_DESCRIPTION] = new_description
|
||||
|
||||
ShowChoices(user)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1, roundstart_checks = TRUE, initial_spawn = FALSE)
|
||||
if(be_random_name)
|
||||
|
||||
@@ -595,18 +595,18 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
/datum/preferences/proc/save_preferences(bypass_cooldown = FALSE, silent = FALSE)
|
||||
if(!path)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!bypass_cooldown)
|
||||
if(world.time < saveprefcooldown)
|
||||
if(istype(parent))
|
||||
queue_save_pref(PREF_SAVE_COOLDOWN, silent)
|
||||
return 0
|
||||
return FALSE
|
||||
COOLDOWN_START(src, saveprefcooldown, PREF_SAVE_COOLDOWN)
|
||||
if(pref_queue != -1)
|
||||
deltimer(pref_queue)
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(!S)
|
||||
return 0
|
||||
return FALSE
|
||||
S.cd = "/"
|
||||
|
||||
WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //updates (or failing that the sanity checks) will ensure data is not invalid at load. Assume up-to-date
|
||||
@@ -1093,22 +1093,22 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
cit_character_pref_load(S)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/preferences/proc/save_character(bypass_cooldown = FALSE, silent = FALSE)
|
||||
if(!path)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!bypass_cooldown)
|
||||
if(world.time < savecharcooldown)
|
||||
if(istype(parent))
|
||||
queue_save_char(PREF_SAVE_COOLDOWN, silent)
|
||||
return 0
|
||||
return FALSE
|
||||
COOLDOWN_START(src, savecharcooldown, PREF_SAVE_COOLDOWN)
|
||||
if(char_queue != -1)
|
||||
deltimer(char_queue)
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(!S)
|
||||
return 0
|
||||
return FALSE
|
||||
S.cd = "/character[default_slot]"
|
||||
|
||||
WRITE_FILE(S["version"] , SAVEFILE_VERSION_MAX) //load_character will sanitize any bad data, so assume up-to-date.)
|
||||
@@ -1295,7 +1295,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
if(parent && !silent)
|
||||
to_chat(parent, span_notice("Saved character slot!"))
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/preferences/proc/queue_save_char(save_in, silent)
|
||||
if(parent && !silent)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/obj/item/clothing/mask/chameleon/drone/Z = target
|
||||
Z.chameleon_action.random_look(owner)
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/action/item_action/chameleon/drone/togglehatmask
|
||||
@@ -65,7 +65,7 @@
|
||||
qdel(old_headgear)
|
||||
// where is `ITEM_SLOT_HEAD` defined? WHO KNOWS
|
||||
D.equip_to_slot(new_headgear, ITEM_SLOT_HEAD)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/action/chameleon_outfit
|
||||
@@ -245,7 +245,7 @@
|
||||
return
|
||||
|
||||
select_look(owner)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/action/item_action/chameleon/change/proc/emp_randomise(var/amount = EMP_RANDOMISE_TIME)
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
if(do_after(user, 6 SECONDS, src))
|
||||
if(S.use(3))
|
||||
repair(user, params)
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
// Set the clothing's integrity back to 100%, remove all damage to bodyparts, and generally fix it up
|
||||
@@ -420,8 +420,8 @@ BLIND // can't see anything
|
||||
/obj/item/clothing/proc/can_use(mob/user)
|
||||
if(user && ismob(user))
|
||||
if(!user.incapacitated())
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
/obj/item/clothing/obj_destruction(damage_flag)
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
/obj/item/clothing/glasses/science/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot == ITEM_SLOT_EYES)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/glasses/night
|
||||
name = "night vision goggles"
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
|
||||
/obj/item/clothing/head/fedora/suicide_act(mob/user)
|
||||
if(user.gender == FEMALE)
|
||||
return 0
|
||||
return FALSE
|
||||
var/mob/living/carbon/human/H = user
|
||||
user.visible_message("<span class='suicide'>[user] is donning [src]! It looks like [user.p_theyre()] trying to be nice to girls.</span>")
|
||||
user.say("M'lady.", forced = "fedora suicide")
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtons()
|
||||
to_chat(user, "<span class='notice'>Your Joy mask now has a [choice] Emotion!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/mask/kitsuneblk
|
||||
name = "Black Kitsune Mask"
|
||||
@@ -477,4 +477,4 @@
|
||||
var/datum/action/A = X
|
||||
A.UpdateButtons()
|
||||
to_chat(user, "<span class='notice'>Your paper mask now has a [choice] symbol!</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot == ITEM_SLOT_HEAD)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/equipped(mob/user, slot)
|
||||
..()
|
||||
@@ -159,7 +159,7 @@
|
||||
|
||||
/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot == ITEM_SLOT_OCLOTHING) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit.
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//Engineering
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/engine
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
if(prob(hit_reaction_chance))
|
||||
if(world.time < reactivearmor_cooldown)
|
||||
owner.visible_message("<span class='danger'>The repulse generator is still recharging!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, 1)
|
||||
owner.visible_message("<span class='danger'>[src] blocks [attack_text], converting the attack into a wave of force!</span>")
|
||||
var/turf/T = get_turf(owner)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/obj/item/clothing/suit/hooded/item_action_slot_check(slot, mob/user, datum/action/A)
|
||||
if(slot == ITEM_SLOT_OCLOTHING || slot == ITEM_SLOT_NECK)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/clothing/suit/hooded/equipped(mob/user, slot)
|
||||
if(slot != ITEM_SLOT_OCLOTHING && slot != ITEM_SLOT_NECK)
|
||||
@@ -127,7 +127,7 @@
|
||||
set src in usr
|
||||
|
||||
if(!can_use(usr))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
on_toggle(usr)
|
||||
if(src.suittoggled)
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
if((sensordamage || (has_sensor < HAS_SENSORS && has_sensor != NO_SENSORS)) && istype(I, /obj/item/stack/cable_coil))
|
||||
if(damaged_clothes == CLOTHING_SHREDDED)
|
||||
to_chat(user,"<span class='warning'>[src] is too damaged to have its suit sensors repaired! Repair it first.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/stack/cable_coil/C = I
|
||||
I.use_tool(src, user, 0, 1)
|
||||
has_sensor = HAS_SENSORS
|
||||
sensordamage = 0
|
||||
sensor_mode = sensor_mode_intended
|
||||
to_chat(user,"<span class='notice'>You repair the suit sensors on [src] with [C].</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(!attach_accessory(I, user))
|
||||
return ..()
|
||||
@@ -233,13 +233,13 @@
|
||||
return
|
||||
if(src.has_sensor == BROKEN_SENSORS)
|
||||
to_chat(usr, "The sensors have shorted out!")
|
||||
return 0
|
||||
return FALSE
|
||||
if(src.sensor_flags & SENSOR_LOCKED)
|
||||
to_chat(usr, "The controls are locked.")
|
||||
return 0
|
||||
return FALSE
|
||||
if(src.has_sensor <= NO_SENSORS)
|
||||
to_chat(usr, "This suit does not have any sensors.")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/list/modes = list("Off", "Binary vitals", "Exact vitals", "Tracking beacon")
|
||||
var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
|
||||
@@ -292,10 +292,10 @@
|
||||
|
||||
if(src.has_sensor == BROKEN_SENSORS)
|
||||
to_chat(usr, "The sensors have shorted out!")
|
||||
return 0
|
||||
return FALSE
|
||||
if(src.sensor_flags & SENSOR_LOCKED)
|
||||
to_chat(usr, "The controls are locked.")
|
||||
return 0
|
||||
return FALSE
|
||||
if(has_sensor <= NO_SENSORS)
|
||||
to_chat(user, "This suit does not have any sensors.")
|
||||
return
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
H.visible_message("<span class='warning'>[H]'s suit automatically extinguishes [H.p_them()]!</span>","<span class='warning'>Your suit automatically extinguishes you.</span>")
|
||||
H.ExtinguishMob()
|
||||
new /obj/effect/particle_effect/water(get_turf(H))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params)
|
||||
..()
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
other_half.icon_state = "cracker2"
|
||||
target.put_in_active_hand(other_half)
|
||||
playsound(user, 'sound/effects/snap.ogg', 50, 1)
|
||||
return 1
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/head/festive
|
||||
|
||||
@@ -101,7 +101,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
walk_towards(src, destination, 1)
|
||||
|
||||
/obj/effect/immovablerod/ex_act(severity, target, origin)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/effect/immovablerod/singularity_act()
|
||||
return
|
||||
|
||||
@@ -458,9 +458,9 @@
|
||||
/datum/export/pirate/ransom/get_cost(atom/movable/AM)
|
||||
var/mob/living/carbon/human/H = AM
|
||||
if(H.stat != CONSCIOUS || !H.mind || !H.mind.assigned_role) //mint condition only
|
||||
return 0
|
||||
return FALSE
|
||||
else if("pirate" in H.faction) //can't ransom your fellow pirates to CentCom!
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
if(H.mind.assigned_role in GLOB.command_positions)
|
||||
return 3000
|
||||
|
||||
@@ -108,16 +108,16 @@
|
||||
|
||||
/datum/round_event/portal_storm/proc/spawn_hostile()
|
||||
if(!hostile_types || !hostile_types.len)
|
||||
return 0
|
||||
return FALSE
|
||||
return ISMULTIPLE(activeFor, 2)
|
||||
|
||||
/datum/round_event/portal_storm/proc/spawn_boss()
|
||||
if(!boss_types || !boss_types.len)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(activeFor == next_boss_spawn)
|
||||
next_boss_spawn += CEILING(number_of_hostiles / number_of_bosses, 1)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/round_event/portal_storm/proc/time_to_end()
|
||||
if(!hostile_types.len && !boss_types.len)
|
||||
|
||||
@@ -124,7 +124,7 @@
|
||||
quality = MINOR_NEGATIVE
|
||||
|
||||
/datum/spacevine_mutation/fire_proof/process_temperature(obj/structure/spacevine/holder, temp, volume)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/spacevine_mutation/fire_proof/on_hit(obj/structure/spacevine/holder, mob/hitter, obj/item/I, expected_damage)
|
||||
if(I && I.damtype == "fire")
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if(!ishuman(M))
|
||||
holder_canadates -= M
|
||||
if(!holder_canadates) //Very unlikely, but just in case
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/mob/living/carbon/human/H = pick(holder_canadates)
|
||||
new /obj/item/greentext(H.loc)
|
||||
|
||||
@@ -22,14 +22,14 @@
|
||||
/obj/item/reagent_containers/food/drinks/attack(mob/living/M, mob/user, def_zone)
|
||||
if(!reagents || !reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!canconsume(M, user))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if (!is_drainable())
|
||||
to_chat(user, "<span class='warning'>[src]'s lid hasn't been opened!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(M == user)
|
||||
user.visible_message("<span class='notice'>[user] swallows a gulp of [src].</span>", "<span class='notice'>You swallow a gulp of [src].</span>")
|
||||
@@ -47,7 +47,7 @@
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
reagents.trans_to(M, gulp_size, log = TRUE)
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/CheckAttackCooldown(mob/user, atom/target)
|
||||
var/fast = HAS_TRAIT(user, TRAIT_VORACIOUS) && (user == target)
|
||||
|
||||
@@ -37,10 +37,10 @@
|
||||
|
||||
if(!reagents || !reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>None of [src] left, oh no!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!canconsume(M, user))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(M == user)
|
||||
user.visible_message("<span class='notice'>[user] swallows some of contents of \the [src].</span>", "<span class='notice'>You swallow some of contents of \the [src].</span>")
|
||||
@@ -57,7 +57,7 @@
|
||||
reagents.reaction(M, INGEST, fraction)
|
||||
reagents.trans_to(M, 10, log = TRUE)
|
||||
playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/obj/item/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity)
|
||||
. = ..()
|
||||
|
||||
@@ -108,10 +108,10 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(!reagents.total_volume) //Shouldn't be needed but it checks to see if it has anything left in it.
|
||||
to_chat(user, "<span class='notice'>None of [src] left, oh no!</span>")
|
||||
qdel(src)
|
||||
return 0
|
||||
return FALSE
|
||||
if(iscarbon(M))
|
||||
if(!canconsume(M, user))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/fullness = M.nutrition + 10
|
||||
for(var/datum/reagent/consumable/C in M.reagents.reagent_list) //we add the nutrition value of what we're currently digesting
|
||||
@@ -120,7 +120,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(M == user) //If you're eating it yourself.
|
||||
if(junkiness && M.satiety < -150 && M.nutrition > NUTRITION_LEVEL_STARVING + 50 )
|
||||
to_chat(M, "<span class='notice'>You don't feel like eating any more junk food at the moment.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else if(fullness <= 50)
|
||||
user.visible_message("<span class='notice'>[user] hungrily takes a [eatverb] from \the [src], gobbling it down!</span>", "<span class='notice'>You hungrily take a [eatverb] from \the [src], gobbling it down!</span>")
|
||||
else if(fullness > 50 && fullness < 150)
|
||||
@@ -131,7 +131,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
user.visible_message("<span class='notice'>[user] unwillingly takes a [eatverb] of a bit of \the [src].</span>", "<span class='warning'>You unwillingly take a [eatverb] of a bit of \the [src].</span>")
|
||||
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
|
||||
user.visible_message("<span class='warning'>[user] cannot force any more of \the [src] to go down [user.p_their()] throat!</span>", "<span class='danger'>You cannot force any more of \the [src] to go down your throat!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
if(!isbrain(M)) //If you're feeding it to someone else.
|
||||
if(fullness <= (600 * (1 + M.overeatduration / 1000)))
|
||||
@@ -140,7 +140,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
else
|
||||
M.visible_message("<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>", \
|
||||
"<span class='warning'>[user] cannot force any more of [src] down [M]'s throat!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!do_mob(user, M))
|
||||
return
|
||||
@@ -164,9 +164,9 @@ All foods are distributed among various categories. Use common sense.
|
||||
bitecount++
|
||||
On_Consume(M)
|
||||
checkLiked(fraction, M)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/CheckAttackCooldown(mob/user, atom/target)
|
||||
var/fast = HAS_TRAIT(user, TRAIT_VORACIOUS) && (user == target)
|
||||
@@ -193,26 +193,26 @@ All foods are distributed among various categories. Use common sense.
|
||||
/obj/item/reagent_containers/food/snacks/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/storage))
|
||||
..() // -> item/attackby()
|
||||
return 0
|
||||
return FALSE
|
||||
if(istype(W, /obj/item/reagent_containers/food/snacks))
|
||||
var/obj/item/reagent_containers/food/snacks/S = W
|
||||
if(custom_food_type && ispath(custom_food_type))
|
||||
if(S.w_class > WEIGHT_CLASS_SMALL)
|
||||
to_chat(user, "<span class='warning'>[S] is too big for [src]!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!S.customfoodfilling || istype(W, /obj/item/reagent_containers/food/snacks/customizable) || istype(W, /obj/item/reagent_containers/food/snacks/pizzaslice/custom) || istype(W, /obj/item/reagent_containers/food/snacks/cakeslice/custom))
|
||||
to_chat(user, "<span class='warning'>[src] can't be filled with [S]!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(contents.len >= 20)
|
||||
to_chat(user, "<span class='warning'>You can't add more ingredients to [src]!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/reagent_containers/food/snacks/customizable/C = new custom_food_type(get_turf(src))
|
||||
C.initialize_custom_food(src, S, user)
|
||||
return 0
|
||||
return FALSE
|
||||
var/sharp = W.get_sharpness()
|
||||
if(sharp)
|
||||
if(slice(sharp, W, user))
|
||||
return 1
|
||||
return TRUE
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -377,20 +377,20 @@ All foods are distributed among various categories. Use common sense.
|
||||
..()
|
||||
if(W.w_class <= WEIGHT_CLASS_SMALL & !istype(W, /obj/item/reagent_containers/food/snacks)) //can't slip snacks inside, they're used for custom foods.
|
||||
if(W.get_sharpness())
|
||||
return 0
|
||||
return FALSE
|
||||
if(stored_item)
|
||||
return 0
|
||||
return FALSE
|
||||
if(!iscarbon(user))
|
||||
return 0
|
||||
return FALSE
|
||||
if(contents.len >= 20)
|
||||
to_chat(user, "<span class='warning'>[src] is full.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You slip [W] inside [src].</span>")
|
||||
user.transferItemToLoc(W, src)
|
||||
add_fingerprint(user)
|
||||
contents += W
|
||||
stored_item = 1
|
||||
return 1 // no afterattack here
|
||||
return TRUE // no afterattack here
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/MouseDrop(atom/over)
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
to_chat(user, "<span class='warning'>There is not enough ice cream left!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[O] already has ice cream in it.</span>")
|
||||
return 1
|
||||
return TRUE
|
||||
if(istype(O, /obj/item/reagent_containers) && !(O.item_flags & ABSTRACT) && O.is_open_container())
|
||||
. = TRUE //no afterattack
|
||||
var/obj/item/reagent_containers/B = O
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user