Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into swordnborg

Conflicts:
	icons/obj/surgery.dmi
This commit is contained in:
Markolie
2015-10-01 04:32:10 +02:00
23 changed files with 946 additions and 235 deletions
+5 -1
View File
@@ -96,4 +96,8 @@
#define I_HELP "help"
#define I_DISARM "disarm"
#define I_GRAB "grab"
#define I_HARM "harm"
#define I_HARM "harm"
// AI wire/radio settings
#define AI_CHECK_WIRELESS 1
#define AI_CHECK_RADIO 2
+12
View File
@@ -80,6 +80,9 @@
var/banappeals
var/wikiurl = "http://example.org"
var/forumurl = "http://example.org"
var/rulesurl = "http://example.org"
var/donationsurl = "http://example.org"
var/repositoryurl = "http://example.org"
var/media_base_url = "http://example.org"
var/overflow_server_url
@@ -338,6 +341,15 @@
if ("forumurl")
config.forumurl = value
if ("rulesurl")
config.rulesurl = value
if ("donationsurl")
config.donationsurl = value
if ("repositoryurl")
config.repositoryurl = value
if ("guest_jobban")
config.guest_jobban = 1
@@ -68,6 +68,16 @@
icon_state = "down"
anchored = 0
/obj/structure/stool/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/roller_holder))
if(buckled_mob)
user_unbuckle_mob(user)
else
user.visible_message("<span class='notice'>[user] collapses \the [src.name].</span>", "<span class='notice'>You collapse \the [src.name].</span>")
new/obj/item/roller(get_turf(src))
qdel(src)
return
/obj/structure/stool/bed/roller/post_buckle_mob(mob/living/M)
if(M == buckled_mob)
density = 1
@@ -93,6 +103,14 @@
R.add_fingerprint(user)
qdel(src)
/obj/item/roller/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/roller_holder))
var/obj/item/roller_holder/RH = W
if(!RH.held)
user.visible_message("<span class='notice'>[user] collects \the [src.name].</span>", "<span class='notice'>You collect \the [src.name].</span>")
src.forceMove(RH)
RH.held = src
/obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location)
..()
if(over_object == usr && Adjacent(usr) && (in_range(src, usr) || usr.contents.Find(src)))
@@ -100,7 +118,7 @@
return
if(buckled_mob)
return 0
usr.visible_message("[usr] collapses \the [src.name].", "<span class='notice'>You collapse \the [src.name].</span>")
usr.visible_message("<span class='notice'>[usr] collapses \the [src.name].</span>", "<span class='notice'>You collapse \the [src.name].</span>")
new/obj/item/roller(get_turf(src))
qdel(src)
return
@@ -120,10 +138,10 @@
/obj/item/roller_holder/attack_self(mob/user as mob)
if(!held)
user << "\blue The rack is empty."
user << "<span class='info'> The rack is empty.</span>"
return
user << "\blue You deploy the roller bed."
user << "<span class='notice'>You deploy the roller bed.</span>"
var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc)
R.add_fingerprint(user)
qdel(held)
+9 -14
View File
@@ -519,21 +519,16 @@ var/global/nologevent = 0
if(!check_rights(R_SERVER))
return
var/confirm = alert("Restart the game world?", "Restart", "Yes", "Cancel")
if(confirm == "Cancel")
var/delay = input("What delay should the restart have (in seconds)?", "Restart Delay", 5) as num|null
if(isnull(delay))
return
if(confirm == "Yes")
var/delay = input("What delay should the restart have (in seconds)?", "Restart Delay", 5) as num
if(isnull(delay))
delay = 50
else
delay = delay * 10
message_admins("[key_name_admin(usr)] has initiated a server restart with a delay of [delay/10] seconds")
log_admin("[key_name(usr)] has initiated a server restart with a delay of [delay/10] seconds")
ticker.delay_end = 0
feedback_add_details("admin_verb","R") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
world.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", delay)
else
delay = delay * 10
message_admins("[key_name_admin(usr)] has initiated a server restart with a delay of [delay/10] seconds")
log_admin("[key_name(usr)] has initiated a server restart with a delay of [delay/10] seconds")
ticker.delay_end = 0
feedback_add_details("admin_verb","R") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
world.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", delay)
/datum/admins/proc/announce()
set category = "Special Verbs"
+5 -2
View File
@@ -60,7 +60,7 @@
//adv. hotkey mode vars, code using them in /interface/interface.dm//
/////////////////////////////////////////////////////////////////////
var/hotkeytype = "QWERTY" //what set of hotkeys is in use(defaulting to QWERTY because I can't be bothered to ake this save on SQL)
var/hotkeytype = "QWERTY" //what set of hotkeys is in use(defaulting to QWERTY because I can't be bothered to make this save on SQL)
var/hotkeyon = 0 //is the hotkey on?
var/hotkeylist = list( //list defining hotkey types, look at lists in place for structure if adding any if the future
@@ -69,7 +69,10 @@
"off" = "macro"),
"AZERTY" = list(
"on" = "AZERTYon",
"off" = "AZERTYoff")
"off" = "AZERTYoff"),
"Cyborg" = list(
"on" = "borghotkeymode",
"off" = "borgmacro")
)
var/reset_stretch = 0 //Used by things that fiddle with client's stretch-to-fit.
+4
View File
@@ -17,3 +17,7 @@
/mob/camera/Destroy()
..()
return QDEL_HINT_HARDDEL_NOW
/mob/camera/Login()
..()
update_interface()
+3 -1
View File
@@ -2,4 +2,6 @@
..()
if (ghostimage)
ghostimage.icon_state = src.icon_state
updateghostimages()
updateghostimages()
update_interface()
+65 -23
View File
@@ -3,6 +3,20 @@
#define BLOODCRAWL_EAT 2
/mob/living/proc/phaseout(var/obj/effect/decal/cleanable/B)
if(iscarbon(src))
var/mob/living/carbon/C = src
if(C.l_hand || C.r_hand)
C << "<span class='warning'>You may not hold items while blood crawling!</span>"
return 0
var/obj/item/weapon/bloodcrawl/B1 = new(C)
var/obj/item/weapon/bloodcrawl/B2 = new(C)
B1.icon_state = "bloodhand_left"
B2.icon_state = "bloodhand_right"
C.put_in_hands(B1)
C.put_in_hands(B2)
C.regenerate_icons()
var/mob/living/kidnapped = null
var/turf/mobloc = get_turf(src.loc)
var/turf/bloodloc = get_turf(B.loc)
@@ -29,10 +43,11 @@
if(istype(src.pulling, /mob/living/))
var/mob/living/victim = src.pulling
if(victim.stat == CONSCIOUS)
src.visible_message("[victim] kicks free of \the [src] at the last second!")
src.visible_message("<span class='warning'>[victim] kicks free of [B] just before entering it!</span>")
else
victim.loc = holder///holder
src.visible_message("<span class='danger'><B>\The [src] drags [victim] into [B]!</B></span>")
victim.emote("scream")
src.visible_message("<span class='warning'><b>[src] drags [victim] into [B]!</b></span>")
kidnapped = victim
flick("jaunt",animation)
src.loc = holder
@@ -44,32 +59,44 @@
sleep(6)
if (animation)
qdel(animation)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
src << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
src.adjustBruteLoss(-1000)
src.adjustFireLoss(-1000)
src.adjustOxyLoss(-1000)
src.adjustToxLoss(-1000)
kidnapped.ghostize()
qdel(kidnapped)
if (istype(src, /mob/living/simple_animal/slaughter)) //rason, do not want humans to get this
for(var/i = 3; i > 0; i--)
playsound(get_turf(src),'sound/misc/Demon_consume.ogg', 100, 1)
sleep(30)
if (kidnapped)
src << "<B>You devour [kidnapped]. Your health is fully restored.</B>"
src.adjustBruteLoss(-1000)
src.adjustFireLoss(-1000)
src.adjustOxyLoss(-1000)
src.adjustToxLoss(-1000)
var/mob/living/simple_animal/slaughter/demon = src
demon.devoured++
if (istype(src, /mob/living/simple_animal/slaughter)) //rason, do not want humans to get this
var/mob/living/simple_animal/slaughter/demon = src
demon.devoured++
kidnapped << "<span class='userdanger'>You feel teeth sink into your flesh, and the--</span>"
kidnapped.adjustBruteLoss(1000)
kidnapped.forceMove(src)
demon.consumed_mobs.Add(kidnapped)
else
kidnapped.ghostize()
qdel(kidnapped)
else
src << "<span class='danger'>You happily devour... nothing? Your meal vanished at some point!</span>"
else
sleep(6)
if (animation)
qdel(animation)
src.notransform = 0
/obj/item/weapon/bloodcrawl
name = "blood crawl"
desc = "You are unable to hold anything while in this form."
icon = 'icons/effects/blood.dmi'
flags = NODROP
/mob/living/proc/phasein(var/obj/effect/decal/cleanable/B)
if(src.notransform)
src << "<B>Finish eating first!</B>"
src << "<span class='warning'>Finish eating first!</span>"
else
var/atom/movable/overlay/animation = new /atom/movable/overlay( B.loc )
animation.name = "odd blood"
@@ -80,19 +107,34 @@
animation.layer = 5
animation.master = B.loc
animation.dir = src.dir
flick("jauntup",animation)
src.loc = B.loc
B.visible_message("<span class='warning'>[B] starts to bubble...</span>")
if(!do_after(src, 20, target = B))
return
if(!B)
return
src.forceMove(B)
src.client.eye = src
if (prob(25))
if (prob(25) && istype(src, /mob/living/simple_animal/slaughter))
var/list/voice = list('sound/hallucinations/behind_you1.ogg','sound/hallucinations/im_here1.ogg','sound/hallucinations/turn_around1.ogg','sound/hallucinations/i_see_you1.ogg')
playsound(get_turf(src), pick(voice),50, 1, -1)
src.visible_message("<span class='warning'><B>\The [src] rises out of \the [B]!</B>")
playsound(get_turf(src), 'sound/misc/exit_blood.ogg', 100, 1, -1)
flick("jauntup",animation)
qdel(src.holder)
src.holder = null
sleep(6)
if(iscarbon(src))
var/mob/living/carbon/C = src
for(var/obj/item/weapon/bloodcrawl/BC in C)
C.flags = null
C.unEquip(BC)
qdel(BC)
var/oldcolor = src.color
src.color = B.color
sleep(6)//wait for animation to finish
if(animation)
qdel(animation)
spawn(30)
src.color = oldcolor
/obj/effect/decal/cleanable/blood/CtrlClick(mob/living/user)
..()
+2 -1
View File
@@ -1,4 +1,3 @@
/mob/living/Login()
..()
//Mind updates
@@ -12,6 +11,8 @@
src << "<span class='notice'>You can ventcrawl! Use alt+click on vents to quickly travel about the station.</span>"
//Should update regardless of if we can ventcrawl, since we can end up in pipes in other ways.
update_pipe_vision()
update_interface()
//Round specific stuff like hud updates
if(ticker && ticker.mode)
+39 -24
View File
@@ -1,9 +1,7 @@
#define AI_CHECK_WIRELESS 1
#define AI_CHECK_RADIO 2
var/list/ai_list = list()
var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/announcement,
/mob/living/silicon/ai/proc/ai_announcement_text,
/mob/living/silicon/ai/proc/ai_call_shuttle,
/mob/living/silicon/ai/proc/ai_camera_track,
/mob/living/silicon/ai/proc/ai_camera_list,
@@ -79,6 +77,7 @@ var/list/ai_verbs_default = list(
var/last_paper_seen = null
var/can_shunt = 1
var/last_announcement = ""
var/datum/announcement/priority/announcement
var/obj/machinery/bot/Bot
var/turf/waypoint //Holds the turf of the currently selected waypoint.
var/waypoint_mode = 0 //Waypoint mode is for selecting a turf via clicking.
@@ -97,6 +96,12 @@ var/list/ai_verbs_default = list(
src.verbs -= silicon_subsystems
/mob/living/silicon/ai/New(loc, var/datum/ai_laws/L, var/obj/item/device/mmi/B, var/safety = 0)
announcement = new()
announcement.title = "A.I. Announcement"
announcement.announcement_type = "A.I. Announcement"
announcement.announcer = name
announcement.newscast = 1
var/list/possibleNames = ai_names
var/pickedName = null
@@ -210,6 +215,8 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/SetName(pickedName as text)
..()
announcement.announcer = name
if(eyeobj)
eyeobj.name = "[pickedName] (AI Eye)"
@@ -325,15 +332,35 @@ var/list/ai_verbs_default = list(
set name = "Show Crew Manifest"
set category = "AI Commands"
show_station_manifest()
/mob/living/silicon/ai/var/message_cooldown = 0
/mob/living/silicon/ai/proc/ai_announcement_text()
set category = "AI Commands"
set name = "Make Station Announcement"
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
if(message_cooldown)
src << "<span class='warning'>Please allow one minute to pass between announcements.</span>"
return
var/input = input(usr, "Please write a message to announce to the station crew.", "A.I. Announcement") as message|null
if(!input)
return
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
announcement.Announce(input)
message_cooldown = 1
spawn(600)//One minute cooldown
message_cooldown = 0
/mob/living/silicon/ai/proc/ai_call_shuttle()
set name = "Call Emergency Shuttle"
set category = "AI Commands"
if(src.stat == DEAD)
src << "<span class='warning'>You can't call the shuttle because you are dead!</span>"
return
if(check_unable(AI_CHECK_WIRELESS))
return
@@ -356,11 +383,7 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/ai_cancel_call()
set name = "Recall Emergency Shuttle"
set category = "AI Commands"
if(src.stat == 2)
src << "You can't send the shuttle back because you are dead!"
return
if(check_unable(AI_CHECK_WIRELESS))
return
@@ -394,10 +417,6 @@ var/list/ai_verbs_default = list(
set desc = "Create a vocal announcement by typing in the available words to create a sentence."
set category = "AI Commands"
if(src.stat == 2)
src << "You can't call make an announcement because you are dead!"
return
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
@@ -838,7 +857,7 @@ var/list/ai_verbs_default = list(
set desc = "Change the message that's transmitted when a new crew member arrives on station."
set category = "AI Commands"
var/newmsg = input("What would you like the arrival message to be? Use $name to substitute the crew member's name, and use $rank to substitute the crew member's rank.", "Change Arrival Message", arrivalmsg) as text
var/newmsg = input("What would you like the arrival message to be? List of options: $name, $rank, $species, $gender, $age", "Change Arrival Message", arrivalmsg) as text
if(newmsg != arrivalmsg)
arrivalmsg = newmsg
usr << "The arrival message has been successfully changed."
@@ -949,14 +968,14 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/check_unable(var/flags = 0)
if(stat == DEAD)
usr << "\red You are dead!"
usr << "<span class='warning'>You are dead!</span>"
return 1
if((flags & AI_CHECK_WIRELESS) && src.control_disabled)
usr << "\red Wireless control is disabled!"
usr << "<span class='warning'>Wireless control is disabled!</span>"
return 1
if((flags & AI_CHECK_RADIO) && src.aiRadio.disabledAi)
src << "\red System Error - Transceiver Disabled!"
src << "<span class='warning'>System Error - Transceiver Disabled!</span>"
return 1
return 0
@@ -980,7 +999,3 @@ var/list/ai_verbs_default = list(
loc = card//Throw AI into the card.
src << "You have been downloaded to a mobile storage device. Remote device connection severed."
user << "<span class='boldnotice'>Transfer successful</span>: [name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory."
#undef AI_CHECK_WIRELESS
#undef AI_CHECK_RADIO
+9 -3
View File
@@ -28,13 +28,19 @@ var/const/VOX_PATH = "sound/vox_fem/"
popup.open()
/mob/living/silicon/ai/proc/ai_announcement()
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
if(announcing_vox > world.time)
src << "<span class='notice'>Please wait [round((announcing_vox - world.time) / 10)] seconds.</span>"
src << "<span class='warning'>Please wait [round((announcing_vox - world.time) / 10)] seconds.</span>"
return
var/message = input(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", src.last_announcement) as text
var/message = input(src, "WARNING: Misuse of this verb can result in you being job banned. More help is available in 'Announcement Help'", "Announcement", last_announcement) as message|null
last_announcement = message
if(check_unable(AI_CHECK_WIRELESS | AI_CHECK_RADIO))
return
if(!message || announcing_vox > world.time)
return
@@ -54,7 +60,7 @@ var/const/VOX_PATH = "sound/vox_fem/"
incorrect_words += word
if(incorrect_words.len)
src << "<span class='notice'>These words are not available on the announcement system: [english_list(incorrect_words)].</span>"
src << "<span class='warning'>These words are not available on the announcement system: [english_list(incorrect_words)].</span>"
return
announcing_vox = world.time + VOX_DELAY
@@ -1,9 +1,11 @@
/mob/living/silicon/robot/Login()
..()
if(client)
client.hotkeytype = "Cyborg"
regenerate_icons()
show_laws(0)
if(mind) ticker.mode.remove_cultist(mind)
if(mind) ticker.mode.remove_revolutionary(mind)
if(mind) ticker.mode.remove_thrall(mind,0)
if(mind) ticker.mode.remove_shadowling(mind)
return
return
@@ -377,6 +377,17 @@ var/list/robot_verbs_default = list(
updatename()
update_icons()
//for borg hotkeys, here module refers to borg inv slot, not core module
/mob/living/silicon/robot/verb/cmd_toggle_module(module as num)
set name = "Toggle Module"
set hidden = 1
toggle_module(module)
/mob/living/silicon/robot/verb/cmd_unequip_module()
set name = "Unequip Module"
set hidden = 1
uneq_active()
// this verb lets cyborgs see the stations manifest
/mob/living/silicon/robot/verb/cmd_station_manifest()
set category = "Robot Commands"
@@ -1,9 +1,9 @@
//////////////////The Monster
/mob/living/simple_animal/slaughter
name = "Slaughter Demon"
real_name = "Slaughter Demon"
desc = "You should run."
name = "slaughter demon"
real_name = "slaughter demon"
desc = "A large, menacing creature covered in armored black scales. You should run."
speak = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")
speak_emote = list("gurgles")
emote_hear = list("wails","screeches")
@@ -43,6 +43,7 @@
var/devoured = 0
var/list/consumed_mobs = list()
var/list/nearby_mortals = list()
var/cooldown = 0
@@ -61,6 +62,7 @@
src.mind.current.verbs += /mob/living/simple_animal/slaughter/proc/slaughterWhisper
src << src.playstyle_string
src << "<B><span class ='notice'>You are not currently in the same plane of existence as the station. Ctrl+Click a blood pool to manifest.</span></B>"
src << 'sound/misc/demon_dies.ogg'
if(!(vialspawned))
var/datum/objective/slaughter/objective = new
var/datum/objective/demonFluff/fluffObjective = new
@@ -83,12 +85,19 @@
/mob/living/simple_animal/slaughter/Die()
..()
var/obj/effect/decal/cleanable/blood/innards = new (get_turf(src))
innards.icon = 'icons/obj/surgery.dmi'
innards.icon_state = "innards"
innards.name = "pile of viscera"
innards.desc = "A repulsive pile of guts and gore."
new /obj/effect/decal/cleanable/blood (src.loc)
new /obj/effect/gibspawner/generic(get_turf(src))
new /obj/effect/gibspawner/generic(get_turf(src))
new /obj/item/weapon/demonheart(src.loc)
playsound(get_turf(src),'sound/misc/demon_dies.ogg', 200, 1)
new /obj/item/weapon/demonheart (src.loc)
visible_message("<span class='danger'>The [src] screams in anger as its form collapes into a pool of viscera.</span>")
visible_message("<span class='danger'>[src] screams in anger as it collapses into a puddle of viscera, its most recent meals spilling out of it.</span>")
for(var/mob/living/M in consumed_mobs)
M.forceMove(get_turf(src))
ghostize()
qdel(src)
@@ -97,7 +106,7 @@
/mob/living/simple_animal/slaughter/phasein()
..()
speed = 0
boost = world.time + 30
boost = world.time + 60
////////////////////The Powers
@@ -128,23 +137,28 @@
//////////The Loot
//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
/obj/item/weapon/demonheart
name = "demon's heart"
desc = "It's still faintly beating with rage"
name = "demon heart"
desc = "Still it beats furiously, emanating an aura of utter hate."
icon = 'icons/obj/surgery.dmi'
icon_state = "heart-on"
icon_state = "demon_heart"
origin_tech = "combat=5;biotech=8"
/obj/item/weapon/demonheart/attack_self(mob/living/user)
visible_message("[user] feasts upon the [src].")
user.visible_message("<span class='warning'>[user] raises [src] to their mouth and tears into it with their teeth!</span>", \
"<span class='danger'>An unnatural hunger consumes you. You raise [src] to your mouth and devour it!</span>")
playsound(user, 'sound/misc/Demon_consume.ogg', 50, 1)
if(user.bloodcrawl == 0)
user << "You absorb some of the demon's power!"
user.visible_message("<span class='warning'>[user]'s eyes flare a deep crimson!</span>", \
"<span class='userdanger'>You feel a strange power seep into your body... you have absorbed the demon's blood-travelling powers!</span>")
user.bloodcrawl = BLOODCRAWL
else if(user.bloodcrawl == 1)
user << "You absorb some of the demon's power!"
user << "You feel diffr-<span class = 'danger'> CONSUME THEM! </span>"
user.bloodcrawl = BLOODCRAWL_EAT
else
user <<"<span class='warning'>...and you don't feel any different.</span>"
qdel(src)
+25
View File
@@ -60,3 +60,28 @@
client.verbs |= H.species.abilities
CallHook("Login", list("client" = src.client, "mob" = src))
// Calling update_interface() in /mob/Login() causes the Cyborg to immediately be ghosted; because of winget().
// Calling it in the overriden Login, such as /mob/living/Login() doesn't cause this.
/mob/proc/update_interface()
if(client)
if(winget(src, "mainwindow.hotkey_toggle", "is-checked") == "true")
update_hotkey_mode()
else
update_normal_mode()
/mob/proc/update_hotkey_mode()
var/hotkeyname = "hotkeymode"
if(client)
var/hotkeys = client.hotkeylist[client.hotkeytype]
hotkeyname = hotkeys[client.hotkeyon ? "on" : "off"]
client.hotkeyon = 1
winset(src, null, "mainwindow.macro=[hotkeyname] hotkey_toggle.is-checked=true mapwindow.map.focus=true input.background-color=#F0F0F0")
/mob/proc/update_normal_mode()
var/hotkeyname = "macro"
if(client)
var/hotkeys = client.hotkeylist[client.hotkeytype]//get the list containing the hotkey names
hotkeyname = hotkeys[client.hotkeyon ? "on" : "off"]//get the name of the hotkey, to not clutter winset() to much
client.hotkeyon = 0
winset(src, null, "mainwindow.macro=[hotkeyname] hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5")
+5 -2
View File
@@ -342,6 +342,9 @@
var/arrivalmessage = announcer.arrivalmsg
arrivalmessage = replacetext(arrivalmessage,"$name",character.real_name)
arrivalmessage = replacetext(arrivalmessage,"$rank",rank ? "[rank]" : "visitor")
arrivalmessage = replacetext(arrivalmessage,"$species",character.species.name)
arrivalmessage = replacetext(arrivalmessage,"$age",num2text(character.age))
arrivalmessage = replacetext(arrivalmessage,"$gender",character.gender == FEMALE ? "Female" : "Male")
announcer.say(";[arrivalmessage]")
else
if(character.mind)
@@ -469,11 +472,11 @@
if(client.prefs.disabilities & DISABILITY_FLAG_BLIND)
new_character.dna.SetSEState(BLINDBLOCK,1,1)
new_character.sdisabilities |= BLIND
if(client.prefs.disabilities & DISABILITY_FLAG_MUTE)
new_character.dna.SetSEState(MUTEBLOCK,1,1)
new_character.sdisabilities |= MUTE
chosen_species.handle_dna(new_character)
domutcheck(new_character)
+2 -2
View File
@@ -481,7 +481,7 @@
..()
/obj/machinery/power/smes/engineering
charge = 1e6 // Engineering starts with some charge for singulo
charge = 2e6 // Engineering starts with some charge for singulo
/obj/machinery/power/smes/magical
name = "magical power storage unit"
@@ -493,4 +493,4 @@
charge = 5000000
..()
#undef SMESRATE
#undef SMESRATE
@@ -1655,76 +1655,79 @@
var/monkey_type = "Monkey"
New()
..()
reagents.add_reagent("protein",10)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New()
..()
reagents.add_reagent("protein",10)
afterattack(obj/O as obj, mob/user as mob, proximity)
if(!proximity) return
if(istype(O,/obj/structure/sink) && !wrapped)
user << "You place [name] under a stream of water..."
loc = get_turf(O)
return Expand()
..()
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/afterattack(obj/O as obj, mob/user as mob, proximity)
if(!proximity) return
if(istype(O,/obj/structure/sink) && !wrapped)
user << "You place [name] under a stream of water..."
if(loc == user)
user.unEquip(src)
forceMove(get_turf(src))
return Expand()
..()
attack_self(mob/user as mob)
if(wrapped)
Unwrap(user)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob)
if(wrapped)
Unwrap(user)
/*
On_Consume(var/mob/M)
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M)
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
if (istype(M, /mob/living/carbon/human))
//Do not try to understand.
var/obj/item/weapon/surprise = new/obj/item/weapon(M)
var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas
surprise.icon = ook.icon
surprise.icon_state = ook.icon_state
surprise.name = "malformed [ook.name]"
surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life."
del(ook) //rip nullspace monkey
surprise.transform *= 0.6
surprise.add_blood(M)
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/E = H.get_organ("chest")
E.fracture()
for (var/obj/item/organ/I in E.internal_organs)
I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1))
if (istype(M, /mob/living/carbon/human))
//Do not try to understand.
var/obj/item/weapon/surprise = new/obj/item/weapon(M)
var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas
surprise.icon = ook.icon
surprise.icon_state = ook.icon_state
surprise.name = "malformed [ook.name]"
surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life."
del(ook) //rip nullspace monkey
surprise.transform *= 0.6
surprise.add_blood(M)
var/mob/living/carbon/human/H = M
var/obj/item/organ/external/E = H.get_organ("chest")
E.fracture()
for (var/obj/item/organ/I in E.internal_organs)
I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1))
if (!E.hidden && prob(60)) //set it snuggly
E.hidden = surprise
E.cavity = 0
else //someone is having a bad day
E.createwound(CUT, 30)
E.embed(surprise)
else if (issmall(M))
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
ook.name = "malformed [ook.name]"
ook.transform *= 0.6
ook.add_blood(M)
M.gib()
..()
if (!E.hidden && prob(60)) //set it snuggly
E.hidden = surprise
E.cavity = 0
else //someone is having a bad day
E.createwound(CUT, 30)
E.embed(surprise)
else if (issmall(M))
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
ook.name = "malformed [ook.name]"
ook.transform *= 0.6
ook.add_blood(M)
M.gib()
..()
*/
water_act(volume, temperature)
if(volume >= 5) return Expand()
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/water_act(volume, temperature)
if(volume >= 5)
return Expand()
proc/Expand()
for(var/mob/M in viewers(src,7))
M << "\red \The [src] expands!"
var/mob/living/carbon/human/H = new (src)
H.set_species(monkey_type)
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand()
for(var/mob/M in viewers(src,7))
M << "\red \The [src] expands!"
var/mob/living/carbon/human/H = new (src)
H.set_species(monkey_type)
qdel(src)
proc/Unwrap(mob/user as mob)
icon_state = "monkeycube"
desc = "Just add water!"
user << "You unwrap the cube."
wrapped = 0
return
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob)
icon_state = "monkeycube"
desc = "Just add water!"
user << "You unwrap the cube."
wrapped = 0
return
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped
desc = "Still wrapped in some paper."
+10 -1
View File
@@ -165,7 +165,16 @@ GUEST_BAN
## Wiki address
# WIKIURL http://example.org
## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. Will show up on permanent bans.
## Rules address
# RULESURL http://example.org
## Donations address
# DONATIONSURL http://example.org
## Repository address
# REPOSITORYURL http://example.org
## Ban appeals URL - usually for a forum or wherever people should go to contact your admins
# BANAPPEALS http://example.org
## Media base URL - determines where to pull the jukebox playlist from.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

+140 -77
View File
@@ -13,133 +13,196 @@
src << "<span class='danger'>The wiki URL is not set in the server configuration.</span>"
return
#define CHANGELOG "https://github.com/ParadiseSS13/Paradise/pulls?q=is%3Apr+is%3Amerged+sort%3Aupdated-desc"
/client/verb/changes()
set name = "Changelog"
set desc = "Visit Github to check out the commits."
set desc = "Visit our repository to check out the changes."
set hidden = 1
if(alert("This will open the changelog in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link(CHANGELOG)
if(config.repositoryurl)
if(alert("This will open the changelog in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link("[config.repositoryurl]/pulls?q=is%3Apr+is%3Aclosed")
else
src << "<span class='danger'>The Repository URL is not set in the server configuration.</span>"
return
#undef CHANGELOG
/client/verb/forum()
set name = "forum"
set desc = "Visit the forum."
set hidden = 1
if( config.forumurl )
if(config.forumurl)
if(alert("This will open the forum in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link(config.forumurl)
else
src << "\red The forum URL is not set in the server configuration."
src << "<span class='danger'>The forum URL is not set in the server configuration.</span>"
return
#define RULES_FILE "config/rules.html"
/client/verb/rules()
set name = "Rules"
set desc = "Show Server Rules."
set desc = "View the server rules."
set hidden = 1
src << browse(file(RULES_FILE), "window=rules;size=480x320")
#undef RULES_FILE
if(config.rulesurl)
if(alert("This will open the rules in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link(config.rulesurl)
else
src << "<span class='danger'>The rules URL is not set in the server configuration.</span>"
return
#define DONATE "http://nanotrasen.se/phpBB3/donate.php"
/client/verb/donate()
set name = "Donate"
set desc = "Donate to help with development costs."
set desc = "Donate to help with hosting costs."
set hidden = 1
if(alert("This will open the donation page in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link(DONATE)
if(config.donationsurl)
if(alert("This will open the donation page in your browser. Are you sure?",,"Yes","No")=="No")
return
src << link(config.donationsurl)
else
src << "<span class='danger'>The rules URL is not set in the server configuration.</span>"
return
#undef DONATE
/client/verb/hotkeys_help()
set name = "Hotkeys Help"
set name = "Hotkey Help"
set category = "OOC"
var/adminhotkeys = {"<font color='purple'>
Admin:
\tF5 = Asay
\tF6 = Admin Ghost
\tF7 = Player Panel
\tF8 = Admin PM
\tF9 = Invisimin
</font>"}
mob.hotkey_help()
if(check_rights(R_MOD|R_ADMIN,0))
src << adminhotkeys
/mob/proc/hotkey_help()
var/hotkey_mode = {"<font color='purple'>
Hotkey-Mode: (hotkey-mode must be on)
\tTAB = toggle hotkey-mode
\ta = left
\ts = down
\td = right
\tw = up
\tq = drop item / deselect cyborg module
\te = equip
\tr = toggle throw / unequip cyborg module
\tt = say
\tx = swap-hand
\tz = activate held object (or y)
\tf = cycle-intents-left
\tg = cycle-intents-right
\t1 = help-intent
\t2 = disarm-intent
\t3 = grab-intent
\t4 = harm-intent
\tTAB = Toggle Hotkey Mode
\ta = Move Left
\ts = Move Down
\td = Move Right
\tw = Move Up
\tq = Drop Item
\te = Equip Item
\tr = Throw Item
\tm = Me
\tt = Say
\to = OOC
\tb = Resist
\tx = Swap Hands
\tz = Activate Held Object (or y)
\tf = Cycle Intents Left
\tg = Cycle Intents Right
\t1 = Help Intent
\t2 = Disarm Intent
\t3 = Grab Intent
\t4 = Harm Intent
</font>"}
var/other = {"<font color='purple'>
Any-Mode: (hotkey doesn't need to be on)
\tCtrl+a = left
\tCtrl+s = down
\tCtrl+d = right
\tCtrl+w = up
\tCtrl+q = drop item / deselect cyborg module
\tCtrl+e = equip
\tCtrl+r = toggle throw / unequip cyborg module
\tCtrl+x = swap-hand
\tCtrl+z = activate held object (or Ctrl+y)
\tCtrl+f = cycle-intents-left
\tCtrl+g = cycle-intents-right
\tCtrl+1 = help-intent
\tCtrl+2 = disarm-intent
\tCtrl+3 = grab-intent
\tCtrl+4 = harm-intent
\tDEL = pull
\tINS = cycle-intents-right
\tHOME = drop item / deselect cyborg module
\tPGUP = swap-hand
\tPGDN = activate held object
\tEND = toggle throw / unequip cyborg module
</font>"}
var/admin = {"<font color='purple'>
Admin:
\tF5 = Aghost (admin-ghost)
\tF6 = player-panel-new
\tF7 = admin-pm
\tF8 = Invisimin
\tCtrl+a = Move Left
\tCtrl+s = Move Down
\tCtrl+d = Move Right
\tCtrl+w = Move Up
\tCtrl+q = Drop Item
\tCtrl+e = Equip Item
\tCtrl+r = Throw Item
\tCtrl+b = Resist
\tCtrl+o = OOC
\tCtrl+x = Swap Hands
\tCtrl+z = Activate Held Object (or Ctrl+y)
\tCtrl+f = Cycle Intents Left
\tCtrl+g = Cycle Intents Right
\tCtrl+1 = Help Intent
\tCtrl+2 = Disarm Intent
\tCtrl+3 = Grab Intent
\tCtrl+4 = Harm Intent
\tDEL = Pull
\tINS = Cycle Intents Right
\tHOME = Drop Item
\tPGUP = Swap Hands
\tPGDN = Activate Held Object
\tEND = Throw Item
\tF2 = OOC
\tF3 = Say
\tF4 = Me
</font>"}
src << hotkey_mode
src << other
if(holder)
src << admin
/mob/living/silicon/robot/hotkey_help()
var/hotkey_mode = {"<font color='purple'>
Hotkey-Mode: (hotkey-mode must be on)
\tTAB = Toggle Hotkey Mode
\ta = Move Left
\ts = Move Down
\td = Move Right
\tw = Move Up
\tq = Unequip Active Module
\tm = Me
\tt = Say
\to = OOC
\tx = Cycle Active Modules
\tb = Resist
\tz = Activate Held Object (or y)
\tf = Cycle Intents Left
\tg = Cycle Intents Right
\t1 = Activate Module 1
\t2 = Activate Module 2
\t3 = Activate Module 3
\t4 = Toggle Intents
</font>"}
var/other = {"<font color='purple'>
Any-Mode: (hotkey doesn't need to be on)
\tCtrl+a = Move Left
\tCtrl+s = Move Down
\tCtrl+d = Move Right
\tCtrl+w = Move Up
\tCtrl+q = Unequip Active Module
\tCtrl+x = Cycle Active Modules
\tCtrl+b = Resist
\tCtrl+o = OOC
\tCtrl+z = Activate Held Object (or Ctrl+y)
\tCtrl+f = Cycle Intents Left
\tCtrl+g = Cycle Intents Right
\tCtrl+1 = Activate Module 1
\tCtrl+2 = Activate Module 2
\tCtrl+3 = Activate Module 3
\tCtrl+4 = Toggle Intents
\tDEL = Pull
\tINS = Toggle Intents
\tPGUP = Cycle Active Modules
\tPGDN = Activate Held Object
\tF2 = OOC
\tF3 = Say
\tF4 = Me
</font>"}
src << hotkey_mode
src << other
//adv. hotkey mode verbs, vars located in /code/modules/client/client defines.dm
/client/verb/hotkey_toggle()//toggles hotkey mode between on and off, respects selected type
set name = ".Toggle Hotkey Mode"
hotkeyon = !hotkeyon//toggle the var
var/hotkeys = hotkeylist[hotkeytype]//get the list containing the hotkey names
var/hotkeyname = hotkeys[hotkeyon ? "on" : "off"]//get the name of the hotkey, to not clutter winset() to much
winset(usr, "mainwindow", "macro=[hotkeyname]")//change the hotkey
usr << (hotkeyon ? "Hotkey mode enabled." : "Hotkey mode disabled.")//feedback to the user
if(hotkeyon)//using an if statement because I don't want to clutter winset() with ? operators
winset(usr, "mainwindow.hotkey_toggle", "is-checked=true")//checks the button
winset(usr, "mapwindow.map", "focus=true")//sets mapwindow focus
else
winset(usr, "mainwindow.hotkey_toggle", "is-checked=false")//unchecks the button
winset(usr, "mainwindow.input", "focus=true")//sets focus
if(mob)
mob.update_interface()
/client/verb/hotkey_mode()//asks user for the hotkey type and changes the macro accordingly
set name = "Set Hotkey Mode"
+488 -9
View File
@@ -87,6 +87,10 @@ macro "AZERTYoff"
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "CTRL+E"
command = "quick-equip"
@@ -161,14 +165,18 @@ macro "AZERTYoff"
is-disabled = false
elem
name = "F6"
command = "Player-Panel-New"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "Admin-PM"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
@@ -289,6 +297,10 @@ macro "AZERTYon"
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "E"
command = "quick-equip"
@@ -349,6 +361,14 @@ macro "AZERTYon"
name = "T"
command = ".say"
is-disabled = false
elem
name = "O"
command = "ooc"
is-disabled = false
elem
name = "M"
command = ".me"
is-disabled = false
elem
name = "W"
command = "Activate-Held-Object"
@@ -415,14 +435,18 @@ macro "AZERTYon"
is-disabled = false
elem
name = "F6"
command = "Player-Panel-New"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "Admin-PM"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
@@ -430,6 +454,256 @@ macro "AZERTYon"
command = "F12"
is-disabled = false
macro "borghotkeymode"
elem
name = "TAB"
command = ".winset \"mainwindow.macro=borgmacro hotkey_toggle.is-checked=false input.focus=true input.background-color=#D3B5B5\""
is-disabled = false
elem
name = "CENTER+REP"
command = ".center"
is-disabled = false
elem
name = "NORTHEAST"
command = ".northeast"
is-disabled = false
elem
name = "SOUTHEAST"
command = ".southeast"
is-disabled = false
elem
name = "NORTHWEST"
command = "unequip-module"
is-disabled = false
elem
name = "CTRL+WEST"
command = "westface"
is-disabled = false
elem
name = "WEST+REP"
command = ".west"
is-disabled = false
elem
name = "CTRL+NORTH"
command = "northface"
is-disabled = false
elem
name = "NORTH+REP"
command = ".north"
is-disabled = false
elem
name = "CTRL+EAST"
command = "eastface"
is-disabled = false
elem
name = "EAST+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+SOUTH"
command = "southface"
is-disabled = false
elem
name = "SOUTH+REP"
command = ".south"
is-disabled = false
elem
name = "INSERT"
command = "a-intent right"
is-disabled = false
elem
name = "DELETE"
command = "delete-key-pressed"
is-disabled = false
elem
name = "1"
command = "toggle-module 1"
is-disabled = false
elem
name = "CTRL+1"
command = "toggle-module 1"
is-disabled = false
elem
name = "2"
command = "toggle-module 2"
is-disabled = false
elem
name = "CTRL+2"
command = "toggle-module 2"
is-disabled = false
elem
name = "3"
command = "toggle-module 3"
is-disabled = false
elem
name = "CTRL+3"
command = "toggle-module 3"
is-disabled = false
elem
name = "4"
command = "a-intent left"
is-disabled = false
elem
name = "CTRL+4"
command = "a-intent left"
is-disabled = false
elem
name = "A+REP"
command = ".west"
is-disabled = false
elem
name = "CTRL+A+REP"
command = ".west"
is-disabled = false
elem
name = "B"
command = "resist"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "T"
command = ".say"
is-disabled = false
elem
name = "O"
command = "ooc"
is-disabled = false
elem
name = "M"
command = ".me"
is-disabled = false
elem
name = "CTRL+O"
command = "ooc"
is-disabled = false
elem
name = "D+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "F"
command = "a-intent left"
is-disabled = false
elem
name = "CTRL+F"
command = "a-intent left"
is-disabled = false
elem
name = "G"
command = "a-intent right"
is-disabled = false
elem
name = "CTRL+G"
command = "a-intent right"
is-disabled = false
elem
name = "Q"
command = "unequip-module"
is-disabled = false
elem
name = "CTRL+Q"
command = "unequip-module"
is-disabled = false
elem "s_key"
name = "S+REP"
command = ".south"
is-disabled = false
elem
name = "CTRL+S+REP"
command = ".south"
is-disabled = false
elem "w_key"
name = "W+REP"
command = ".north"
is-disabled = false
elem
name = "CTRL+W+REP"
command = ".north"
is-disabled = false
elem
name = "X"
command = ".northeast"
is-disabled = false
elem
name = "CTRL+X"
command = ".northeast"
is-disabled = false
elem
name = "Y"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "CTRL+Y"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "Z"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "CTRL+Z"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "F1"
command = "adminhelp"
is-disabled = false
elem
name = "CTRL+SHIFT+F1+REP"
command = ".options"
is-disabled = false
elem
name = "F2"
command = "ooc"
is-disabled = false
elem
name = "F2+REP"
command = ".screenshot auto"
is-disabled = false
elem
name = "SHIFT+F2+REP"
command = ".screenshot"
is-disabled = false
elem
name = "F3"
command = ".say"
is-disabled = false
elem
name = "F4"
command = ".me"
is-disabled = false
elem
name = "F5"
command = "asay"
is-disabled = false
elem
name = "F6"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
name = "F12"
command = "F12"
is-disabled = false
macro "macro"
elem
name = "TAB"
@@ -519,6 +793,10 @@ macro "macro"
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "CTRL+E"
command = "quick-equip"
@@ -593,14 +871,18 @@ macro "macro"
is-disabled = false
elem
name = "F6"
command = "Player-Panel-New"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "Admin-PM"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
@@ -706,7 +988,15 @@ macro "hotkeymode"
command = "a-intent harm"
is-disabled = false
elem
name = "5"
name = "T"
command = ".say"
is-disabled = false
elem
name = "O"
command = "ooc"
is-disabled = false
elem
name = "M"
command = ".me"
is-disabled = false
elem
@@ -725,6 +1015,14 @@ macro "hotkeymode"
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "B"
command = "resist"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "E"
command = "quick-equip"
@@ -851,14 +1149,18 @@ macro "hotkeymode"
is-disabled = false
elem
name = "F6"
command = "Player-Panel-New"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "Admin-PM"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
@@ -866,6 +1168,183 @@ macro "hotkeymode"
command = "F12"
is-disabled = false
macro "borgmacro"
elem
name = "TAB"
command = ".winset \"mainwindow.macro=borghotkeymode hotkey_toggle.is-checked=true mapwindow.map.focus=true input.background-color=#F0F0F0\""
is-disabled = false
elem
name = "CENTER+REP"
command = ".center"
is-disabled = false
elem
name = "NORTHEAST"
command = ".northeast"
is-disabled = false
elem
name = "SOUTHEAST"
command = ".southeast"
is-disabled = false
elem
name = "NORTHWEST"
command = "unequip-module"
is-disabled = false
elem
name = "CTRL+WEST"
command = "westface"
is-disabled = false
elem
name = "WEST+REP"
command = ".west"
is-disabled = false
elem
name = "CTRL+NORTH"
command = "northface"
is-disabled = false
elem
name = "NORTH+REP"
command = ".north"
is-disabled = false
elem
name = "CTRL+EAST"
command = "eastface"
is-disabled = false
elem
name = "EAST+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+SOUTH"
command = "southface"
is-disabled = false
elem
name = "SOUTH+REP"
command = ".south"
is-disabled = false
elem
name = "INSERT"
command = "a-intent right"
is-disabled = false
elem
name = "DELETE"
command = "delete-key-pressed"
is-disabled = false
elem
name = "CTRL+1"
command = "toggle-module 1"
is-disabled = false
elem
name = "CTRL+2"
command = "toggle-module 2"
is-disabled = false
elem
name = "CTRL+3"
command = "toggle-module 3"
is-disabled = false
elem
name = "CTRL+4"
command = "a-intent left"
is-disabled = false
elem
name = "CTRL+A+REP"
command = ".west"
is-disabled = false
elem
name = "CTRL+B"
command = "resist"
is-disabled = false
elem
name = "CTRL+O"
command = "ooc"
is-disabled = false
elem
name = "CTRL+D+REP"
command = ".east"
is-disabled = false
elem
name = "CTRL+F"
command = "a-intent left"
is-disabled = false
elem
name = "CTRL+G"
command = "a-intent right"
is-disabled = false
elem
name = "CTRL+Q"
command = "unequip-module"
is-disabled = false
elem
name = "CTRL+S+REP"
command = ".south"
is-disabled = false
elem
name = "CTRL+W+REP"
command = ".north"
is-disabled = false
elem
name = "CTRL+X"
command = ".northeast"
is-disabled = false
elem
name = "CTRL+Y"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "CTRL+Z"
command = "Activate-Held-Object"
is-disabled = false
elem
name = "F1"
command = "adminhelp"
is-disabled = false
elem
name = "CTRL+SHIFT+F1+REP"
command = ".options"
is-disabled = false
elem
name = "F2"
command = "ooc"
is-disabled = false
elem
name = "F2+REP"
command = ".screenshot auto"
is-disabled = false
elem
name = "SHIFT+F2+REP"
command = ".screenshot"
is-disabled = false
elem
name = "F3"
command = ".say"
is-disabled = false
elem
name = "F4"
command = ".me"
is-disabled = false
elem
name = "F5"
command = "asay"
is-disabled = false
elem
name = "F6"
command = "Aghost"
is-disabled = false
elem
name = "F7"
command = "player-panel-new"
is-disabled = false
elem
name = "F8"
command = "admin-pm-key"
is-disabled = false
elem
name = "F9"
command = "Invisimin"
is-disabled = false
elem
name = "F12"
command = "F12"
is-disabled = false
menu "menu"
elem