From ed55cefcc25821dc9ba14fffa1c9560e308997f2 Mon Sep 17 00:00:00 2001 From: Shadowlight213 Date: Wed, 20 Jul 2016 15:26:24 -0700 Subject: [PATCH] Adds admin_spawned atom var that is set when something is spawned by admin means or is var edited. This can be bypassed by using debug-game if needed. Stats will not be tracked for admin spawned atoms --- code/game/atoms.dm | 5 +++++ code/game/machinery/droneDispenser.dm | 3 ++- code/game/machinery/syndicatebomb.dm | 1 + .../objects/items/weapons/grenades/spawnergrenade.dm | 1 + code/modules/admin/admin.dm | 3 ++- code/modules/admin/topic.dm | 1 + .../simple_animal/friendly/drone/drones_as_items.dm | 1 + .../simple_animal/hostile/megafauna/megafauna.dm | 10 +++++++--- .../mob/living/simple_animal/hostile/mining_mobs.dm | 3 ++- code/modules/mob/living/simple_animal/spawner.dm | 1 + code/modules/spells/spell_types/conjure.dm | 2 +- config/config.txt | 5 +++-- 12 files changed, 27 insertions(+), 9 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index ed3b1d190e9..7a19a16a171 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -6,6 +6,7 @@ var/list/fingerprintshidden var/fingerprintslast = null var/list/blood_DNA + var/admin_spawned = 0 //was this spawned by an admin? used for stat tracking stuff. ///Chemistry. var/datum/reagents/reagents = null @@ -440,3 +441,7 @@ var/list/blood_splatter_icons = list() //Hook for running code when a dir change occurs /atom/proc/setDir(newdir) dir = newdir + +/atom/on_varedit(modified_var) + if(!Debug2) + admin_spawned = TRUE \ No newline at end of file diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index a3663f95612..0934edccff7 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -206,7 +206,8 @@ if(power_used) use_power(power_used) - new dispense_type(loc) + var/atom/A = new dispense_type(loc) + A.admin_spawned = admin_spawned if(create_sound) playsound(src, create_sound, 50, 1) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 8e7912622b5..59465b1d789 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -339,6 +339,7 @@ var/obj/machinery/syndicatebomb/B = src.loc for(var/i = 0; i < amt_summon; i++) var/atom/movable/X = new summon_path + X.admin_spawned = TRUE X.loc = get_turf(src) if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) diff --git a/code/game/objects/items/weapons/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm index 3918ca6e40c..1439dd90076 100644 --- a/code/game/objects/items/weapons/grenades/spawnergrenade.dm +++ b/code/game/objects/items/weapons/grenades/spawnergrenade.dm @@ -19,6 +19,7 @@ for(var/i=1, i<=deliveryamt, i++) var/atom/movable/x = new spawner_type + x.admin_spawned = admin_spawned x.loc = T if(prob(50)) for(var/j = 1, j <= rand(1, 3), j++) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a4d32622fe9..90e04375553 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -633,7 +633,8 @@ var/global/BSACooldown = 0 var/turf/T = get_turf(usr.loc) T.ChangeTurf(chosen) else - new chosen(usr.loc) + var/atom/A = new chosen(usr.loc) + A.admin_spawned = TRUE log_admin("[key_name(usr)] spawned [chosen] at ([usr.x],[usr.y],[usr.z])") feedback_add_details("admin_verb","SA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 7a9b147aafe..a2bb06cf0a2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1953,6 +1953,7 @@ else var/atom/O = new path(target) if(O) + O.admin_spawned = TRUE O.setDir(obj_dir) if(obj_name) O.name = obj_name diff --git a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm index b8dda34bd77..3841616201e 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/drones_as_items.dm @@ -38,6 +38,7 @@ if(be_drone == "No" || qdeleted(src)) return var/mob/living/simple_animal/drone/D = new drone_type(get_turf(loc)) + D.admin_spawned = admin_spawned D.key = user.key qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index fe071a0cbda..e93e1435211 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -25,9 +25,10 @@ if(health > 0) return else - feedback_set_details("megafauna_kills","[initial(name)]") - if(!elimination) //used so the achievment only occurs for the last legion to die. - grant_achievement(medal_type,score_type) + if(!admin_spawned) + feedback_set_details("megafauna_kills","[initial(name)]") + if(!elimination) //used so the achievment only occurs for the last legion to die. + grant_achievement(medal_type,score_type) ..() /mob/living/simple_animal/hostile/megafauna/gib() @@ -79,6 +80,9 @@ if(medal_type == "Boss") //Don't award medals if the medal type isn't set return + if(admin_spawned) + return + if(global.medal_hub && global.medal_pass && global.medals_enabled) for(var/mob/living/L in view(7,src)) if(L.stat) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index f30529e1c7e..7433759b3f7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -219,6 +219,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(the_target) if(world.time >= ranged_cooldown) var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new brood_type(src.loc) + A.admin_spawned = admin_spawned A.GiveTarget(target) A.friends = friends A.faction = faction @@ -1018,7 +1019,7 @@ if(other != src) last_tendril = FALSE break - if(last_tendril) + if(last_tendril && !admin_spawned) if(global.medal_hub && global.medal_pass && global.medals_enabled) for(var/mob/living/L in view(7,src)) if(L.stat) diff --git a/code/modules/mob/living/simple_animal/spawner.dm b/code/modules/mob/living/simple_animal/spawner.dm index bd01da0b97a..b33a6d2f4d0 100644 --- a/code/modules/mob/living/simple_animal/spawner.dm +++ b/code/modules/mob/living/simple_animal/spawner.dm @@ -41,6 +41,7 @@ return 0 spawn_delay = world.time + spawn_time var/mob/living/simple_animal/L = new mob_type(src.loc) + L.admin_spawned = admin_spawned //If we were admin spawned, lets have our children count as that as well. spawned_mobs += L L.nest = src L.faction = src.faction diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 0857a234711..89b143fcffc 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -38,7 +38,7 @@ for(var/varName in newVars) if(varName in summoned_object.vars) summoned_object.vars[varName] = newVars[varName] - + summoned_object.admin_spawned = TRUE if(summon_lifespan) QDEL_IN(summoned_object, summon_lifespan) diff --git a/config/config.txt b/config/config.txt index 36b19d87762..32b7a5549f7 100644 --- a/config/config.txt +++ b/config/config.txt @@ -188,10 +188,11 @@ TICKLAG 0.5 #CROSS_COMMS_NAME ## Hub address for tracking stats -MEDAL_HUB_ADDRESS +## example: Hubmakerckey.Hubname +#MEDAL_HUB_ADDRESS ## Password for the hub page -MEDAL_HUB_PASSWORD +#MEDAL_HUB_PASSWORD ## Uncomment this to let players see their own notes (they can still be set by admins only) #SEE_OWN_NOTES