Reee mirror bot. Hard syncs some missed PR stuff + maps (#5951)

* maps and tgui

* missed defines and helpsers

* controller things

* datums

* game folder stuff

* module things

* icons

* stragglers

* map sync and updating

wew lad
This commit is contained in:
Poojawa
2018-03-14 16:49:40 -05:00
committed by GitHub
parent be23070f67
commit 6c7da493d9
122 changed files with 12848 additions and 12563 deletions
+16 -13
View File
@@ -73,7 +73,7 @@
var/task = href_list["editrights"]
var/skip
if(task == "activate" || task == "deactivate")
skip = 1
skip = TRUE
if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_admins) && task == "rank")
if(admin_ckey in GLOB.protected_admins)
to_chat(usr, "<span class='admin prefix'>Editing the rank of this admin is blocked by server configuration.</span>")
@@ -82,20 +82,20 @@
if(D.rank in GLOB.protected_ranks)
to_chat(usr, "<span class='admin prefix'>Editing the flags of this rank is blocked by server configuration.</span>")
return
if(check_rights(R_DBRANKS, 0))
if(check_rights(R_DBRANKS, FALSE))
if(!skip)
if(!SSdbcore.Connect())
to_chat(usr, "<span class='danger'>Unable to connect to database, changes are temporary only.</span>")
use_db = "Temporary"
if(!use_db)
use_db = FALSE
else
use_db = alert("Permanent changes are saved to the database for future rounds, temporary changes will affect only the current round", "Permanent or Temporary?", "Permanent", "Temporary", "Cancel")
if(use_db == "Cancel")
return
if(use_db == "Permanent")
use_db = 1
use_db = TRUE
admin_ckey = sanitizeSQL(admin_ckey)
else
use_db = 0
use_db = FALSE
if(task != "add")
D = GLOB.admin_datums[admin_ckey]
if(!D)
@@ -124,19 +124,20 @@
edit_admin_permissions()
/datum/admins/proc/add_admin(use_db)
. = sanitizeSQL(ckey(input("New admin's ckey","Admin ckey") as text|null))
. = ckey(input("New admin's ckey","Admin ckey") as text|null)
if(!.)
return 0
return FALSE
if(. in GLOB.admin_datums+GLOB.deadmins)
to_chat(usr, "<span class='danger'>[.] is already an admin.</span>")
return 0
return FALSE
if(use_db)
. = sanitizeSQL(.)
var/datum/DBQuery/query_add_admin = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin")] (ckey, rank) VALUES ('[.]', 'NEW ADMIN')")
if(!query_add_admin.warn_execute())
return 0
return FALSE
var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'add admin', 'New admin added: [.]')")
if(!query_add_admin_log.warn_execute())
return 0
return FALSE
/datum/admins/proc/remove_admin(admin_ckey, use_db, datum/admins/D)
if(alert("Are you sure you want to remove [admin_ckey]?","Confirm Removal","Do it","Cancel") == "Do it")
@@ -175,7 +176,7 @@
rank_names[R.name] = R
var/new_rank = input("Please select a rank", "New rank") as null|anything in rank_names
if(new_rank == "*New Rank*")
new_rank = sanitizeSQL(ckeyEx(input("Please input a new rank", "New custom rank") as text|null))
new_rank = ckeyEx(input("Please input a new rank", "New custom rank") as text|null)
if(!new_rank)
return
R = rank_names[new_rank]
@@ -186,6 +187,7 @@
R = new(new_rank) //blank new admin_rank
GLOB.admin_ranks += R
if(use_db)
new_rank = sanitizeSQL(new_rank)
if(!R)
var/datum/DBQuery/query_add_rank = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_ranks")] (rank, flags, exclude_flags, can_edit_rights) VALUES ('[new_rank]', '0', '0', '0')")
if(!query_add_rank.warn_execute())
@@ -208,7 +210,8 @@
if(D) //they were previously an admin
D.disassociate() //existing admin needs to be disassociated
D.rank = R //set the admin_rank as our rank
D.associate()
var/client/C = GLOB.directory[admin_ckey]
D.associate(C)
else
D = new(R, admin_ckey, TRUE) //new admin
message_admins("[key_name_admin(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]")
@@ -96,6 +96,17 @@ the new instance inside the host to be updated to the template's stats.
if(adapt_ready > 0)
stat("Adaptation Ready: [round(adapt_ready/10, 0.1)]s")
/mob/camera/disease/examine(mob/user)
..()
if(isobserver(user))
to_chat(user, "<span class='notice'>[src] has [points]/[total_points] adaptation points.</span>")
to_chat(user, "<span class='notice'>[src] has the following unlocked:</span>")
for(var/A in purchased_abilities)
var/datum/disease_ability/B = A
if(istype(B))
to_chat(user, "<span class='notice'>[B.name]</span>")
/mob/camera/disease/say(message)
return
@@ -86,5 +86,6 @@ GLOBAL_LIST_EMPTY(jam_on_wardec)
return TRUE
#undef CHALLENGE_TELECRYSTALS
#undef CHALLENGE_TIME_LIMIT
#undef CHALLENGE_MIN_PLAYERS
#undef CHALLENGE_SHUTTLE_DELAY
@@ -137,6 +137,9 @@
/datum/gas/pluoxium = new/datum/tlv(-1, -1, 135, 140) // Partial pressure, kpa
)
/obj/machinery/airalarm/unlocked
locked = FALSE
/obj/machinery/airalarm/engine
name = "engine air alarm"
locked = FALSE
@@ -253,3 +253,68 @@
/obj/item/clothing/shoes/bronze/Initialize()
. = ..()
AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50)
/obj/item/clothing/shoes/wheelys
name = "Wheely-Heels"
desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either." //Thanks Fel
icon_state = "wheelys"
item_state = "wheelys"
actions_types = list(/datum/action/item_action/wheelys)
var/wheelToggle = FALSE //False means wheels are not popped out
var/obj/vehicle/ridden/scooter/wheelys/W
/obj/item/clothing/shoes/wheelys/Initialize()
. = ..()
W = new /obj/vehicle/ridden/scooter/wheelys(null)
/obj/item/clothing/shoes/wheelys/ui_action_click(mob/user, action)
if(!isliving(user))
return
if(!istype(user.get_item_by_slot(slot_shoes), /obj/item/clothing/shoes/wheelys))
to_chat(user, "<span class='warning'>You must be wearing the wheely-heels to use them!</span>")
return
if(!(W.is_occupant(user)))
wheelToggle = FALSE
if(wheelToggle)
W.unbuckle_mob(user)
wheelToggle = FALSE
return
W.forceMove(get_turf(user))
W.buckle_mob(user)
wheelToggle = TRUE
/obj/item/clothing/shoes/wheelys/dropped(mob/user)
if(wheelToggle)
W.unbuckle_mob(user)
wheelToggle = FALSE
..()
/obj/item/clothing/shoes/wheelys/Destroy()
QDEL_NULL(W)
. = ..()
/obj/item/clothing/shoes/kindleKicks
name = "Kindle Kicks"
desc = "They'll sure kindle something in you, and it's not childhood nostalgia..."
icon_state = "kindleKicks"
item_state = "kindleKicks"
actions_types = list(/datum/action/item_action/kindleKicks)
var/lightCycle = 0
var/active = FALSE
/obj/item/clothing/shoes/kindleKicks/ui_action_click(mob/user, action)
if(active)
return
active = TRUE
set_light(2, 3, rgb(rand(0,255),rand(0,255),rand(0,255)))
addtimer(CALLBACK(src, .proc/lightUp), 5)
/obj/item/clothing/shoes/kindleKicks/proc/lightUp(mob/user)
if(lightCycle < 15)
set_light(2, 3, rgb(rand(0,255),rand(0,255),rand(0,255)))
lightCycle += 1
addtimer(CALLBACK(src, .proc/lightUp), 5)
else
set_light(0)
lightCycle = 0
active = FALSE
+11 -2
View File
@@ -144,9 +144,11 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
return
if(!no_restrictions)
var/static/list/disallowed_turf_types = typecacheof(list(
/turf/closed,
/turf/open/lava,
/turf/closed/indestructible,
/turf/open/indestructible,
)) - typecacheof(list(
/turf/closed/mineral,
))
if(!is_mining_level(T.z))
@@ -231,7 +233,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
if(BAD_COORDS)
to_chat(user, "<span class='warning'>Location is too close to the edge of the station's scanning range. Move several paces away and try again.</span>")
if(BAD_TURF)
to_chat(user, "<span class='warning'>The landing zone contains turfs unsuitable for a base.</span>")
to_chat(user, "<span class='warning'>The landing zone contains turfs unsuitable for a base. Make sure you've removed all walls and dangerous terrain from the landing zone.</span>")
/obj/item/device/assault_pod/mining/unrestricted
name = "omni-locational landing field designator"
@@ -248,6 +250,13 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
width = 9
height = 9
/obj/docking_port/mobile/auxillary_base/takeoff(list/old_turfs, list/new_turfs, list/moved_atoms, rotation, movement_direction, old_dock, area/underlying_old_area)
for(var/i in new_turfs)
var/turf/place = i
if(istype(place, /turf/closed/mineral))
place.ScrapeAway()
return ..()
obj/docking_port/stationary/public_mining_dock
name = "public mining base dock"
id = "disabled" //The Aux Base has to leave before this can be used as a dock.
@@ -22,27 +22,7 @@
maxHealth = 400
health = 400
icon_state = "alienq"
var/datum/action/small_sprite/smallsprite = new/datum/action/small_sprite()
/datum/action/small_sprite
name = "Toggle Giant Sprite - Others will always see you as giant"
button_icon_state = "smallqueen"
background_icon_state = "bg_alien"
var/small = 0
/datum/action/small_sprite/Trigger()
..()
if(!small)
var/image/I = image(icon = 'icons/mob/alien.dmi' , icon_state = "alienq", loc = owner)
I.override = 1
I.pixel_x -= owner.pixel_x
I.pixel_y -= owner.pixel_y
owner.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic, "smallqueen", I)
small = 1
else
owner.remove_alt_appearance("smallqueen")
small = 0
var/datum/action/small_sprite/smallsprite = new/datum/action/small_sprite/queen()
/mob/living/carbon/alien/humanoid/royal/queen/Initialize()
//there should only be one queen
@@ -163,10 +163,10 @@
for(var/turf in obscuredTurfs)
var/turf/t = turf
if(!t.obscured)
t.obscured = image('icons/effects/cameravis.dmi', t, null, LIGHTING_LAYER+1)
t.obscured = image('icons/effects/cameravis.dmi', t, null, BYOND_LIGHTING_LAYER+0.1)
t.obscured.pixel_x = -t.pixel_x
t.obscured.pixel_y = -t.pixel_y
t.obscured.plane = LIGHTING_PLANE+1
t.obscured.plane = BYOND_LIGHTING_PLANE+0.1
obscured += t.obscured
#undef UPDATE_BUFFER
@@ -38,11 +38,11 @@ Difficulty: Medium
spacewalk = TRUE
attacktext = "chomps"
attack_sound = 'sound/magic/demon_attack1.ogg'
icon = 'icons/mob/lavaland/64x64megafauna.dmi'
icon_state = "dragon"
icon_living = "dragon"
icon_dead = "dragon_dead"
friendly = "stares down"
icon = 'icons/mob/lavaland/64x64megafauna.dmi'
speak_emote = list("roars")
armour_penetration = 40
melee_damage_lower = 40
@@ -61,8 +61,10 @@ Difficulty: Medium
score_type = DRAKE_SCORE
deathmessage = "collapses into a pile of bones, its flesh sloughing away."
death_sound = 'sound/magic/demon_dies.ogg'
var/datum/action/small_sprite/smallsprite = new/datum/action/small_sprite/drake()
/mob/living/simple_animal/hostile/megafauna/dragon/Initialize()
smallsprite.Grant(src)
. = ..()
internal = new/obj/item/device/gps/internal/dragon(src)
@@ -380,6 +382,7 @@ Difficulty: Medium
obj_damage = 80
melee_damage_upper = 30
melee_damage_lower = 30
mouse_opacity = MOUSE_OPACITY_ICON
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
loot = list()
crusher_loot = list()
+3
View File
@@ -96,6 +96,9 @@
var/update_overlay = -1
var/icon_update_needed = FALSE
/obj/machinery/power/apc/unlocked
locked = FALSE
/obj/machinery/power/apc/highcap/five_k
cell_type = /obj/item/stock_parts/cell/upgraded/plus
+1 -1
View File
@@ -132,9 +132,9 @@
icon_state = "rpcoil[anchored]"
/obj/machinery/power/tesla_coil/research/attackby(obj/item/W, mob/user, params)
. = ..()
if(default_deconstruction_screwdriver(user, "rpcoil_open[anchored]", "rpcoil[anchored]", W))
return
return ..()
/obj/machinery/power/grounding_rod
name = "grounding rod"
@@ -316,7 +316,7 @@
to_chat(user, "<span class='warning'>You feel yourself radically changing your slime type...</span>")
if(do_after(user, 120, target = user))
to_chat(user, "<span class='warning'>You feel different!</span>")
user.set_species(/datum/species/jelly/slime)
user.set_species(pick(/datum/species/jelly/slime, /datum/species/jelly/stargazer))
return
to_chat(user, "<span class='notice'>You stop the transformation.</span>")
@@ -870,8 +870,9 @@
force = 6
materials = list(MAT_METAL=500)
throwforce = 10
throw_speed = 3
throw_range = 7
throw_speed = 0.1
throw_range = 28
glide_size = 2
flags_1 = CONDUCT_1
max_amount = 60
turf_type = /turf/open/floor/sepia
+1
View File
@@ -150,6 +150,7 @@
log_game("[key_name(user)] has emagged the emergency shuttle in \
[COORD(src)] [time] seconds before launch.")
obj_flags |= EMAGGED
SSshuttle.emergency.movement_force = list("KNOCKDOWN" = 60, "THROW" = 20)//YOUR PUNY SEATBELTS can SAVE YOU NOW, MORTAL
var/datum/species/S = new
for(var/i in 1 to 10)
// the shuttle system doesn't know who these people are, but they
+41
View File
@@ -146,3 +146,44 @@
qdel(src)
return TRUE
//Wheelys
/obj/vehicle/ridden/scooter/wheelys
name = "Wheely-Heels"
desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either."
icon = null
density = FALSE
/obj/vehicle/ridden/scooter/wheelys/Initialize()
. = ..()
var/datum/component/riding/D = LoadComponent(/datum/component/riding)
D.vehicle_move_delay = 0
D.set_vehicle_dir_layer(SOUTH, ABOVE_MOB_LAYER)
D.set_vehicle_dir_layer(NORTH, OBJ_LAYER)
D.set_vehicle_dir_layer(EAST, OBJ_LAYER)
D.set_vehicle_dir_layer(WEST, OBJ_LAYER)
/obj/vehicle/ridden/scooter/wheelys/post_unbuckle_mob(mob/living/M)
if(!has_buckled_mobs())
to_chat(M, "<span class='notice'>You pop the Wheely-Heel's wheels back into place.</span>")
moveToNullspace()
return ..()
/obj/vehicle/ridden/scooter/wheelys/post_buckle_mob(mob/living/M)
to_chat(M, "<span class='notice'>You pop out the Wheely-Heel's wheels.</span>")
return ..()
/obj/vehicle/ridden/scooter/wheelys/Collide(atom/A)
. = ..()
if(A.density && has_buckled_mobs())
var/mob/living/H = buckled_mobs[1]
var/atom/throw_target = get_edge_target_turf(H, pick(GLOB.cardinals))
unbuckle_mob(H)
H.throw_at(throw_target, 4, 3)
H.Knockdown(30)
H.adjustStaminaLoss(10)
var/head_slot = H.get_item_by_slot(slot_head)
if(!head_slot || !(istype(head_slot,/obj/item/clothing/head/helmet) || istype(head_slot,/obj/item/clothing/head/hardhat)))
H.adjustBrainLoss(1)
H.updatehealth()
visible_message("<span class='danger'>[src] crashes into [A], sending [H] flying!</span>")
playsound(src, 'sound/effects/bang.ogg', 50, 1)