12/21 modernizations from TG live (#103)
* sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes
This commit is contained in:
+72
-65
@@ -2,7 +2,6 @@
|
||||
languages_spoken = HUMAN
|
||||
languages_understood = HUMAN
|
||||
var/crit_fail = 0
|
||||
var/unacidable = 0 //universal "unacidabliness" var, here so you can use it in any obj.
|
||||
animate_movement = 2
|
||||
var/throwforce = 0
|
||||
var/in_use = 0 // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING!
|
||||
@@ -10,17 +9,29 @@
|
||||
var/damtype = "brute"
|
||||
var/force = 0
|
||||
|
||||
var/burn_state = FIRE_PROOF // LAVA_PROOF | FIRE_PROOF | FLAMMABLE | ON_FIRE
|
||||
var/burntime = 10 //How long it takes to burn to ashes, in seconds
|
||||
var/burn_world_time //What world time the object will burn up completely
|
||||
var/list/armor
|
||||
var/obj_integrity = 500
|
||||
var/max_integrity = 500
|
||||
var/integrity_failure = 0 //0 if we have no special broken behavior
|
||||
|
||||
var/resistance_flags = 0 // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF
|
||||
|
||||
var/acid_level = 0 //how much acid is on that obj
|
||||
|
||||
var/being_shocked = 0
|
||||
|
||||
var/on_blueprints = FALSE //Are we visible on the station blueprints at roundstart?
|
||||
var/force_blueprints = FALSE //forces the obj to be on the blueprints, regardless of when it was created.
|
||||
|
||||
var/persistence_replacement = null //have something WAY too amazing to live to the next round? Set a new path here. Overuse of this var will make me upset.
|
||||
var/is_frozen = FALSE
|
||||
var/unique_rename = 0 // can you customize the description/name of the thing?
|
||||
|
||||
|
||||
/obj/New()
|
||||
..()
|
||||
|
||||
if (!armor)
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
|
||||
if(on_blueprints && isturf(loc))
|
||||
var/turf/T = loc
|
||||
if(force_blueprints)
|
||||
@@ -34,6 +45,12 @@
|
||||
SStgui.close_uis(src)
|
||||
return ..()
|
||||
|
||||
/obj/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0)
|
||||
..()
|
||||
if(is_frozen)
|
||||
visible_message("<span class = 'danger'><b>[src] shatters into a million pieces!</b></span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/assume_air(datum/gas_mixture/giver)
|
||||
if(loc)
|
||||
return loc.assume_air(giver)
|
||||
@@ -52,6 +69,14 @@
|
||||
else
|
||||
return null
|
||||
|
||||
/obj/proc/rewrite(mob/user)
|
||||
var/penchoice = alert("What would you like to edit?", "Rename or change description?", "Rename", "Change description", "Cancel")
|
||||
if(!qdeleted(src) && user.canUseTopic(src, BE_CLOSE))
|
||||
if(penchoice == "Rename")
|
||||
rename_obj(user)
|
||||
if(penchoice == "Change description")
|
||||
redesc_obj(user)
|
||||
|
||||
/obj/proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
|
||||
//Return: (NONSTANDARD)
|
||||
// null if object handles breathing logic for lifeform
|
||||
@@ -73,7 +98,7 @@
|
||||
if ((M.client && M.machine == src))
|
||||
is_in_use = 1
|
||||
src.attack_hand(M)
|
||||
if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot) || IsAdminGhost(usr))
|
||||
if(isAI(usr) || iscyborg(usr) || IsAdminGhost(usr))
|
||||
if (!(usr in nearby))
|
||||
if (usr.client && usr.machine==src) // && M.machine == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh.
|
||||
is_in_use = 1
|
||||
@@ -110,7 +135,7 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/proc/container_resist()
|
||||
/obj/proc/container_resist(mob/living/user)
|
||||
return
|
||||
|
||||
/obj/proc/update_icon()
|
||||
@@ -137,22 +162,9 @@
|
||||
if(istype(M) && M.client && M.machine == src)
|
||||
src.attack_self(M)
|
||||
|
||||
|
||||
/obj/proc/alter_health()
|
||||
return 1
|
||||
|
||||
/obj/proc/hide(h)
|
||||
return
|
||||
|
||||
/obj/ex_act(severity, target)
|
||||
if(severity == 1 || target == src)
|
||||
qdel(src)
|
||||
else if(severity == 2)
|
||||
if(prob(50))
|
||||
qdel(src)
|
||||
if(!qdeleted(src))
|
||||
..()
|
||||
|
||||
//If a mob logouts/logins in side of an object you can use this proc
|
||||
/obj/proc/on_log()
|
||||
..()
|
||||
@@ -160,19 +172,11 @@
|
||||
var/obj/Loc=loc
|
||||
Loc.on_log()
|
||||
|
||||
/obj/singularity_act()
|
||||
ex_act(1)
|
||||
if(src && !qdeleted(src))
|
||||
qdel(src)
|
||||
return 2
|
||||
|
||||
/obj/singularity_pull(S, current_size)
|
||||
if(!anchored || current_size >= STAGE_FIVE)
|
||||
step_towards(src,S)
|
||||
|
||||
/obj/proc/Deconstruct()
|
||||
qdel(src)
|
||||
|
||||
/obj/get_spans()
|
||||
return ..() | SPAN_ROBOT
|
||||
|
||||
@@ -180,42 +184,45 @@
|
||||
var/turf/T = get_turf(src)
|
||||
return T.storage_contents_dump_act(src_object, user)
|
||||
|
||||
/obj/fire_act(global_overlay=1)
|
||||
if(!burn_state)
|
||||
burn_state = ON_FIRE
|
||||
SSobj.burning += src
|
||||
burn_world_time = world.time + burntime*rand(10,20)
|
||||
if(global_overlay)
|
||||
add_overlay(fire_overlay)
|
||||
return 1
|
||||
|
||||
/obj/proc/burn()
|
||||
empty_object_contents(1, src.loc)
|
||||
var/obj/effect/decal/cleanable/ash/A = new(src.loc)
|
||||
A.desc = "Looks like this used to be a [name] some time ago."
|
||||
SSobj.burning -= src
|
||||
qdel(src)
|
||||
|
||||
/obj/proc/extinguish()
|
||||
if(burn_state == ON_FIRE)
|
||||
burn_state = FLAMMABLE
|
||||
overlays -= fire_overlay
|
||||
SSobj.burning -= src
|
||||
|
||||
/obj/proc/empty_object_contents(burn = 0, new_loc = src.loc)
|
||||
for(var/obj/item/Item in contents) //Empty out the contents
|
||||
Item.loc = new_loc
|
||||
if(burn)
|
||||
Item.fire_act() //Set them on fire, too
|
||||
|
||||
/obj/proc/tesla_act(var/power)
|
||||
being_shocked = 1
|
||||
var/power_bounced = power / 2
|
||||
tesla_zap(src, 3, power_bounced)
|
||||
addtimer(src, "reset_shocked", 10)
|
||||
|
||||
/obj/proc/reset_shocked()
|
||||
being_shocked = 0
|
||||
|
||||
/obj/proc/CanAStarPass()
|
||||
. = !density
|
||||
|
||||
/obj/proc/check_uplink_validity()
|
||||
return 1
|
||||
|
||||
/obj/proc/on_mob_move(dir, mob)
|
||||
return
|
||||
|
||||
/obj/vv_get_dropdown()
|
||||
. = ..()
|
||||
.["Delete all of type"] = "?_src_=vars;delall=\ref[src]"
|
||||
|
||||
/obj/examine(mob/user)
|
||||
..()
|
||||
if(unique_rename)
|
||||
user << "<span class='notice'>Use a pen on it to rename it or change its description.</span>"
|
||||
|
||||
/obj/proc/rename_obj(mob/M)
|
||||
var/input = stripped_input(M,"What do you want to name \the [name]?", ,"", MAX_NAME_LEN)
|
||||
var/oldname = name
|
||||
|
||||
if(!qdeleted(src) && M.canUseTopic(src, BE_CLOSE) && input != "")
|
||||
if(oldname == input)
|
||||
M << "You changed \the [name] to... well... \the [name]."
|
||||
return
|
||||
else
|
||||
name = input
|
||||
M << "\The [oldname] has been successfully been renamed to \the [input]."
|
||||
return
|
||||
else
|
||||
return
|
||||
|
||||
/obj/proc/redesc_obj(mob/M)
|
||||
var/input = stripped_input(M,"Describe \the [name] here", ,"", 100)
|
||||
|
||||
if(!qdeleted(src) && M.canUseTopic(src, BE_CLOSE) && input != "")
|
||||
desc = input
|
||||
M << "You have successfully changed \the [name]'s description."
|
||||
return
|
||||
else
|
||||
return
|
||||
Reference in New Issue
Block a user