mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
@@ -112,7 +112,7 @@
|
||||
#define FILE_DIR "code/modules/critters"
|
||||
#define FILE_DIR "code/modules/critters/hivebots"
|
||||
#define FILE_DIR "code/modules/customitems"
|
||||
#define FILE_DIR "code/modules/detectivework"
|
||||
#define FILE_DIR "code/modules/DetectiveWork"
|
||||
#define FILE_DIR "code/modules/flufftext"
|
||||
#define FILE_DIR "code/modules/food"
|
||||
#define FILE_DIR "code/modules/icon generation"
|
||||
@@ -891,10 +891,10 @@
|
||||
#include "code\modules\critters\hivebots\hivebot.dm"
|
||||
#include "code\modules\customitems\item_defines.dm"
|
||||
#include "code\modules\customitems\item_spawning.dm"
|
||||
#include "code\modules\detectivework\detective_work.dm"
|
||||
#include "code\modules\detectivework\evidence.dm"
|
||||
#include "code\modules\detectivework\footprints_and_rag.dm"
|
||||
#include "code\modules\detectivework\scanner.dm"
|
||||
#include "code\modules\DetectiveWork\detective_work.dm"
|
||||
#include "code\modules\DetectiveWork\evidence.dm"
|
||||
#include "code\modules\DetectiveWork\footprints_and_rag.dm"
|
||||
#include "code\modules\DetectiveWork\scanner.dm"
|
||||
#include "code\modules\flufftext\Dreaming.dm"
|
||||
#include "code\modules\flufftext\Hallucination.dm"
|
||||
#include "code\modules\flufftext\TextFilters.dm"
|
||||
@@ -945,6 +945,7 @@
|
||||
#include "code\modules\mob\living\blob\blob.dm"
|
||||
#include "code\modules\mob\living\carbon\carbon.dm"
|
||||
#include "code\modules\mob\living\carbon\carbon_defines.dm"
|
||||
#include "code\modules\mob\living\carbon\give.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\alien.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\death.dm"
|
||||
#include "code\modules\mob\living\carbon\alien\powers.dm"
|
||||
@@ -1062,6 +1063,7 @@
|
||||
#include "code\modules\mob\living\simple_animal\constructs.dm"
|
||||
#include "code\modules\mob\living\simple_animal\corgi.dm"
|
||||
#include "code\modules\mob\living\simple_animal\crab.dm"
|
||||
#include "code\modules\mob\living\simple_animal\kobold.dm"
|
||||
#include "code\modules\mob\living\simple_animal\life.dm"
|
||||
#include "code\modules\mob\living\simple_animal\mouse.dm"
|
||||
#include "code\modules\mob\living\simple_animal\mushroom.dm"
|
||||
|
||||
@@ -14,7 +14,6 @@ var/global/datum/getrev/revdata = new("config/svndir.txt")
|
||||
var/revhref
|
||||
|
||||
proc/abort()
|
||||
world.log << "Unable to get revision info."
|
||||
spawn()
|
||||
del src
|
||||
|
||||
@@ -25,7 +24,7 @@ var/global/datum/getrev/revdata = new("config/svndir.txt")
|
||||
|
||||
var/text = file2text(file(filename))
|
||||
if(!text)
|
||||
world.log << "Unable to get [filename] contents, aborting"
|
||||
diary << "Unable to get [filename] contents, aborting"
|
||||
return abort()
|
||||
|
||||
var/list/CL = tg_text2list(text, "\n")
|
||||
@@ -59,7 +58,6 @@ var/global/datum/getrev/revdata = new("config/svndir.txt")
|
||||
return abort()
|
||||
revision = filelist[4]
|
||||
commiter = filelist[12]
|
||||
world.log << "Running TG Revision Number: [revision]."
|
||||
diary << "Revision info loaded succesfully"
|
||||
return
|
||||
return abort()
|
||||
@@ -86,10 +84,8 @@ client/verb/showrevinfo()
|
||||
set category = "OOC"
|
||||
set name = "Show Server Revision"
|
||||
var/output = "Sorry, the revision info is unavailable."
|
||||
if(revdata)
|
||||
output = revdata.showInfo()
|
||||
|
||||
output += "Current Infomational Settings: <br>"
|
||||
output += "Protect Authority Roles From Tratior: [config.protect_roles_from_antagonist]<br>"
|
||||
output = file2text("/home/bay12/live/data/gitcommit")
|
||||
output += "Current Infomational Settings: <br>"
|
||||
output += "Protect Authority Roles From Tratior: [config.protect_roles_from_antagonist]<br>"
|
||||
usr << browse(output,"window=revdata");
|
||||
return
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
//var/emagged = 0 //Ignores if somebody doesn't have card access to that machine.
|
||||
var/seconds_electrified = 0 //Shock customers like an airlock.
|
||||
var/shoot_inventory = 0 //Fire items at customers! We're broken!
|
||||
var/shut_up = 0 //Stop spouting those godawful pitches!
|
||||
var/shut_up = 1 //Stop spouting those godawful pitches!
|
||||
var/extended_inventory = 0 //can we access the hidden inventory?
|
||||
var/panel_open = 0 //Hacking that vending machine. Gonna get a free candy bar.
|
||||
var/wires = 15
|
||||
|
||||
@@ -257,4 +257,9 @@ proc/isInSight(var/atom/A, var/atom/B)
|
||||
return 1
|
||||
|
||||
else
|
||||
return 0
|
||||
return 0
|
||||
|
||||
proc/check_can_reach(atom/user, atom/target)
|
||||
if(!in_range(user,target))
|
||||
return 0
|
||||
return CanReachThrough(get_turf(user), get_turf(target), target)
|
||||
@@ -810,7 +810,6 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
// ------- CLICKED OBJECT EXISTS IN GAME WORLD, DISTANCE FROM PERSON TO OBJECT IS 1 SQUARE OR THEY'RE ON THE SAME SQUARE -------
|
||||
|
||||
var/direct = get_dir(usr, src)
|
||||
var/obj/item/weapon/dummy/D = new /obj/item/weapon/dummy( usr.loc )
|
||||
var/ok = 0
|
||||
if ( (direct - 1) & direct)
|
||||
|
||||
@@ -842,35 +841,12 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
|
||||
var/check_1 = 0
|
||||
var/check_2 = 0
|
||||
if(step_to(D, Step_1))
|
||||
check_1 = 1
|
||||
for(var/obj/border_obstacle in Step_1)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
check_1 = 0
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON ONE OF THE DIRECITON TILES -------
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
// ------- YOU TRIED TO CLICK ON AN ITEM THROUGH A WINDOW (OR SIMILAR THING THAT LIMITS ON BORDERS) ON THE TILE YOU'RE ON -------
|
||||
check_1 = 0
|
||||
check_1 = CanReachThrough(get_turf(usr), Step_1, src) && CanReachThrough(Step_1, get_turf(src), src)
|
||||
|
||||
D.loc = usr.loc
|
||||
if(step_to(D, Step_2))
|
||||
check_2 = 1
|
||||
check_2 = CanReachThrough(get_turf(usr), Step_2, src) && CanReachThrough(Step_2, get_turf(src), src)
|
||||
|
||||
for(var/obj/border_obstacle in Step_2)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
check_2 = 0
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
check_2 = 0
|
||||
ok = (check_1 || check_2)
|
||||
|
||||
|
||||
if(check_1 || check_2)
|
||||
ok = 1
|
||||
// ------- YOU CAN REACH THE ITEM THROUGH AT LEAST ONE OF THE TWO DIRECTIONS. GOOD. -------
|
||||
|
||||
/*
|
||||
@@ -883,29 +859,11 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
*/
|
||||
else
|
||||
// ------- OBJECT IS ON A CARDINAL TILE (NORTH, SOUTH, EAST OR WEST OR THE TILE YOU'RE ON) -------
|
||||
if(loc == usr.loc)
|
||||
ok = 1
|
||||
// ------- OBJECT IS ON THE SAME TILE AS YOU -------
|
||||
else
|
||||
ok = 1
|
||||
|
||||
//Now, check objects to block exit that are on the border
|
||||
for(var/obj/border_obstacle in usr.loc)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, src))
|
||||
ok = 0
|
||||
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/obj/border_obstacle in get_turf(src))
|
||||
if((border_obstacle.flags & ON_BORDER) && (src != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, D.loc, 1, 0))
|
||||
ok = 0
|
||||
ok = CanReachThrough(get_turf(usr), get_turf(src), src)
|
||||
/*
|
||||
See the previous More info, for... more info...
|
||||
*/
|
||||
|
||||
del(D)
|
||||
// ------- DUMMY OBJECT'S SERVED IT'S PURPOSE, IT'S REWARDED WITH A SWIFT DELETE -------
|
||||
if (!( ok ))
|
||||
// ------- TESTS ABOVE DETERMINED YOU CANNOT REACH THE TILE -------
|
||||
return 0
|
||||
@@ -1020,6 +978,43 @@ var/using_new_click_proc = 0 //TODO ERRORAGE (This is temporary, while the DblCl
|
||||
|
||||
usr.next_move = world.time + 6
|
||||
return
|
||||
////////////////////////////////////////
|
||||
///IMPORTANT: CACHE FOR DUMMY OBJECTS///
|
||||
//Used to cut down on stupid deletions//
|
||||
////////////////////////////////////////
|
||||
var/list/DummyCache = list()
|
||||
|
||||
/proc/CanReachThrough(turf/srcturf, turf/targetturf, atom/target)
|
||||
|
||||
var/obj/item/weapon/dummy/D = locate() in DummyCache
|
||||
if(!D)
|
||||
D = new /obj/item/weapon/dummy( srcturf )
|
||||
else
|
||||
DummyCache.Remove(D)
|
||||
D.loc = srcturf
|
||||
|
||||
if(targetturf.density && targetturf != get_turf(target))
|
||||
return 0
|
||||
|
||||
//Now, check objects to block exit that are on the border
|
||||
for(var/obj/border_obstacle in srcturf)
|
||||
if(border_obstacle.flags & ON_BORDER)
|
||||
if(!border_obstacle.CheckExit(D, targetturf))
|
||||
D.loc = null
|
||||
DummyCache.Add(D)
|
||||
return 0
|
||||
|
||||
//Next, check objects to block entry that are on the border
|
||||
for(var/obj/border_obstacle in targetturf)
|
||||
if((border_obstacle.flags & ON_BORDER) && (target != border_obstacle))
|
||||
if(!border_obstacle.CanPass(D, srcturf, 1, 0))
|
||||
D.loc = null
|
||||
DummyCache.Add(D)
|
||||
return 0
|
||||
|
||||
D.loc = null
|
||||
DummyCache.Add(D)
|
||||
return 1
|
||||
|
||||
/atom/proc/ShiftClick(var/mob/M as mob)
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ proc/load_alienwhitelist()
|
||||
for (var/s in alien_whitelist)
|
||||
if(findtext(s,"[M.ckey] - [species]"))
|
||||
return 1
|
||||
if(findtext(s,"[M.ckey] - All"))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
#undef WHITELISTFILE
|
||||
@@ -172,6 +172,9 @@
|
||||
|
||||
return
|
||||
|
||||
mob/proc/flash_weak_pain()
|
||||
flick("weak_pain",pain)
|
||||
|
||||
/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
|
||||
|
||||
if (!istype(M)) // not sure if this is the right thing...
|
||||
@@ -182,19 +185,41 @@
|
||||
messagesource = M:container
|
||||
if (src.hitsound)
|
||||
playsound(src.loc, hitsound, 50, 1, -1)
|
||||
M.flash_weak_pain()
|
||||
/////////////////////////
|
||||
user.lastattacked = M
|
||||
M.lastattacker = user
|
||||
|
||||
var/power = src.force
|
||||
|
||||
// EXPERIMENTAL: scale power and time to the weight class
|
||||
if(w_class >= 4.0 && !istype(src,/obj/item/weapon/melee/energy/blade)) // eswords are an exception, they only have a w_class of 4 to not fit into pockets
|
||||
power = power * 2.5
|
||||
|
||||
user.visible_message("\red [user.name] swings at [M.name] with \the [src]!")
|
||||
user.next_move = max(user.next_move, world.time + 30)
|
||||
|
||||
// if the mob didn't move, he has a 100% chance to hit(given the enemy also didn't move)
|
||||
// otherwise, the chance to hit is lower
|
||||
var/unmoved = 0
|
||||
spawn
|
||||
unmoved = do_after(user, 4)
|
||||
sleep(4)
|
||||
if( (!unmoved && !prob(70)) || (get_dist(user, M) != 1 && user != M))
|
||||
user.visible_message("\red [user.name] misses with \the [src]!")
|
||||
return
|
||||
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])</font>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])</font>"
|
||||
log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]")
|
||||
msg_admin_attack("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])</font>" )
|
||||
|
||||
//spawn(1800) // this wont work right
|
||||
// M.lastattacker = null
|
||||
/////////////////////////
|
||||
|
||||
var/power = src.force
|
||||
if((HULK in user.mutations) || (SUPRSTR in user.augmentations))
|
||||
power *= 2
|
||||
|
||||
|
||||
@@ -19,6 +19,13 @@
|
||||
del(src)
|
||||
|
||||
/obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
if (src.anchored)
|
||||
src.anchored = 0
|
||||
user << "\blue You unfasten [src] from the floor."
|
||||
else
|
||||
src.anchored = 1
|
||||
user << "\blue You fasten [src] to the floor."
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
new /obj/item/stack/sheet/metal(src.loc)
|
||||
@@ -73,7 +80,7 @@
|
||||
"You hear metal clanking")
|
||||
else
|
||||
buckled_mob.visible_message(\
|
||||
"\blue [buckled_mob.name] unbuckled himself!",\
|
||||
"\blue [buckled_mob.name] unbuckles!",\
|
||||
"You unbuckle yourself from [src].",\
|
||||
"You hear metal clanking")
|
||||
unbuckle()
|
||||
@@ -108,6 +115,9 @@
|
||||
|
||||
/obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob)
|
||||
if(!istype(M)) return
|
||||
if(issimpleanimal(user))
|
||||
user << "\red You are unable to work the complex mechanisms of a buckle!"
|
||||
return
|
||||
buckle_mob(M, user)
|
||||
return
|
||||
|
||||
@@ -164,6 +174,18 @@
|
||||
icon_state = "down"
|
||||
anchored = 0
|
||||
|
||||
/obj/item/roller
|
||||
name = "roller bed"
|
||||
desc = "A collapsed roller bed that can be carried around."
|
||||
icon = 'rollerbed.dmi'
|
||||
icon_state = "folded"
|
||||
w_class = 4.0 // Can't be put in backpacks. Oh well.
|
||||
|
||||
attack_self(mob/user)
|
||||
var/obj/structure/stool/bed/roller/R = new /obj/structure/stool/bed/roller(user.loc)
|
||||
R.add_fingerprint(user)
|
||||
del(src)
|
||||
|
||||
/obj/structure/stool/bed/roller/Move()
|
||||
..()
|
||||
if(buckled_mob)
|
||||
@@ -191,3 +213,15 @@
|
||||
icon_state = "down"
|
||||
..()
|
||||
return
|
||||
|
||||
/obj/structure/stool/bed/roller/MouseDrop(over_object, src_location, over_location)
|
||||
..()
|
||||
if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src))))
|
||||
if(!ishuman(usr)) return
|
||||
if(buckled_mob) return 0
|
||||
visible_message("\The [usr] collapses \the [src.name]")
|
||||
new/obj/item/roller(get_turf(src))
|
||||
spawn(0)
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
if("l_hand")
|
||||
M.u_equip(src)
|
||||
M.put_in_l_hand(src)
|
||||
M.update_inv_l_hand()
|
||||
M.update_inv_r_hand()
|
||||
src.add_fingerprint(usr)
|
||||
return
|
||||
if(over_object == usr && in_range(src, usr) || usr.contents.Find(src))
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
var/delay = 0
|
||||
var/airlock_wire = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
var/deadman = 0
|
||||
|
||||
proc
|
||||
signal()
|
||||
@@ -126,6 +127,8 @@
|
||||
A.pulse(src.airlock_wire)
|
||||
else if(holder)
|
||||
holder.process_activation(src, 1, 0)
|
||||
else
|
||||
..()
|
||||
return 1
|
||||
|
||||
|
||||
@@ -149,3 +152,24 @@
|
||||
frequency = new_frequency
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT)
|
||||
return
|
||||
|
||||
process()
|
||||
if(!deadman)
|
||||
processing_objects.Remove(src)
|
||||
var/mob/M = src.loc
|
||||
if(!M || !ismob(M))
|
||||
if(prob(5))
|
||||
signal()
|
||||
deadman = 0
|
||||
processing_objects.Remove(src)
|
||||
else if(prob(5))
|
||||
M.visible_message("[M]'s finger twitches a bit over [src]'s signal button!")
|
||||
return
|
||||
|
||||
verb/deadman_it()
|
||||
set src in usr
|
||||
set name = "Threaten to push the button!"
|
||||
set desc = "BOOOOM!"
|
||||
deadman = 1
|
||||
processing_objects.Add(src)
|
||||
usr.visible_message("\red [usr] moves their finger over [src]'s signal button...")
|
||||
|
||||
@@ -3,14 +3,21 @@
|
||||
|
||||
//Returns the thing in our active hand
|
||||
/mob/proc/get_active_hand()
|
||||
if(hand) return l_hand
|
||||
else return r_hand
|
||||
if(issilicon(src))
|
||||
if(isrobot(src))
|
||||
if(src:module_active)
|
||||
return src:module_active
|
||||
else
|
||||
if(hand) return l_hand
|
||||
else return r_hand
|
||||
|
||||
//Returns the thing in our inactive hand
|
||||
/mob/proc/get_inactive_hand()
|
||||
if(hand) return r_hand
|
||||
else return l_hand
|
||||
|
||||
/mob/proc/equipped()
|
||||
return get_active_hand()
|
||||
|
||||
//Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success.
|
||||
/mob/proc/put_in_l_hand(var/obj/item/W)
|
||||
@@ -57,8 +64,14 @@
|
||||
//This is probably the main one you need to know :)
|
||||
/mob/proc/put_in_hands(var/obj/item/W)
|
||||
if(!W) return 0
|
||||
if(put_in_active_hand(W)) return 1
|
||||
else if(put_in_inactive_hand(W)) return 1
|
||||
if(put_in_active_hand(W))
|
||||
update_inv_l_hand()
|
||||
update_inv_r_hand()
|
||||
return 1
|
||||
else if(put_in_inactive_hand(W))
|
||||
update_inv_l_hand()
|
||||
update_inv_r_hand()
|
||||
return 1
|
||||
else
|
||||
W.loc = get_turf(src)
|
||||
W.layer = initial(W.layer)
|
||||
|
||||
@@ -47,7 +47,10 @@ mob/living/carbon/verb/give()
|
||||
I.loc = src
|
||||
I.layer = 20
|
||||
I.add_fingerprint(src)
|
||||
src.update_clothing()
|
||||
src.update_inv_l_hand()
|
||||
src.update_inv_r_hand()
|
||||
usr.update_inv_l_hand()
|
||||
usr.update_inv_r_hand()
|
||||
src.visible_message("[usr.name] handed \the [I.name] to [src.name].")
|
||||
if("No")
|
||||
src.visible_message("[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
@@ -78,7 +81,10 @@ mob/living/carbon/verb/give()
|
||||
I.loc = src
|
||||
I.layer = 20
|
||||
I.add_fingerprint(src)
|
||||
src.update_clothing()
|
||||
src.update_inv_l_hand()
|
||||
src.update_inv_r_hand()
|
||||
usr.update_inv_l_hand()
|
||||
usr.update_inv_r_hand()
|
||||
src.visible_message("[usr.name] handed \the [I.name] to [src.name].")
|
||||
if("No")
|
||||
src.visible_message("[usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
|
||||
|
||||
@@ -587,6 +587,12 @@
|
||||
mymob.flash.screen_loc = "1,1 to 15,15"
|
||||
mymob.flash.layer = 17
|
||||
|
||||
mymob.pain = new /obj/screen( null )
|
||||
mymob.pain.icon_state = "blank"
|
||||
mymob.pain.name = "pain"
|
||||
mymob.pain.screen_loc = "1,1 to 15,15"
|
||||
mymob.pain.layer = 17
|
||||
|
||||
/*
|
||||
mymob.hands = new /obj/screen( null )
|
||||
mymob.hands.icon = ui_style
|
||||
@@ -704,7 +710,7 @@
|
||||
mymob.client.screen = null
|
||||
|
||||
//, mymob.i_select, mymob.m_select
|
||||
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
|
||||
mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
|
||||
mymob.client.screen += src.adding + src.hotkeybuttons
|
||||
inventory_shown = 0;
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
/mob/living/carbon/human/proc/update_body(var/update_icons=1)
|
||||
if(stand_icon) del(stand_icon)
|
||||
if(lying_icon) del(lying_icon)
|
||||
if(dna && dna.mutantrace) return
|
||||
// if(dna && dna.mutantrace) return
|
||||
var/husk = (HUSK in src.mutations)
|
||||
var/fat = (FAT in src.mutations)
|
||||
var/g = "m"
|
||||
@@ -233,7 +233,8 @@ Please contact me on #coderbus IRC. ~Carn x
|
||||
overlays_standing[HAIR_LAYER] = null
|
||||
|
||||
//mutants don't have hair. masks and helmets can obscure our hair too.
|
||||
if( (dna && dna.mutantrace) || (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) )
|
||||
//BS12 EDIT - Mutants can have hair too!
|
||||
if( (head && (head.flags & BLOCKHAIR)) || (wear_mask && (wear_mask.flags & BLOCKHAIR)) )
|
||||
if(update_icons) update_icons()
|
||||
return
|
||||
|
||||
|
||||
@@ -44,6 +44,14 @@
|
||||
src << "\blue Your [C.name] was disrupted!"
|
||||
Stun(2)
|
||||
|
||||
flash_weak_pain()
|
||||
|
||||
if(istype(equipped(),/obj/item/device/assembly/signaler))
|
||||
var/obj/item/device/assembly/signaler/signaler = equipped()
|
||||
if(signaler.deadman && prob(80))
|
||||
src.visible_message("\red [src] triggers their deadman's switch!")
|
||||
signaler.signal()
|
||||
|
||||
var/absorb = run_armor_check(def_zone, P.flag)
|
||||
if(absorb >= 2)
|
||||
P.on_hit(src,2)
|
||||
|
||||
@@ -141,6 +141,37 @@ var/list/department_radio_keys = list(
|
||||
if (!message)
|
||||
return
|
||||
|
||||
//work out if we're speaking skrell or not
|
||||
var/is_speaking_skrell = 0
|
||||
|
||||
if(copytext(message, 1, 3) == ":k" || copytext(message, 1, 3) == ":K")
|
||||
message = copytext(message, 3)
|
||||
if(skrell_talk_understand || universal_speak)
|
||||
is_speaking_skrell = 1
|
||||
|
||||
//work out if we're speaking soghun or not
|
||||
var/is_speaking_soghun = 0
|
||||
if(copytext(message, 1, 3) == ":o" || copytext(message, 1, 3) == ":O")
|
||||
message = copytext(message, 3)
|
||||
if(soghun_talk_understand || universal_speak)
|
||||
is_speaking_soghun = 1
|
||||
|
||||
//work out if we're speaking tajaran or not
|
||||
var/is_speaking_tajaran = 0
|
||||
if(copytext(message, 1, 3) == ":j" || copytext(message, 1, 3) == ":J")
|
||||
message = copytext(message, 3)
|
||||
if(tajaran_talk_understand || universal_speak)
|
||||
is_speaking_soghun = 1
|
||||
|
||||
// if( !message_mode && (disease_symptoms & DISEASE_WHISPER))
|
||||
// message_mode = "whisper"
|
||||
|
||||
if(src.stunned > 2 /*|| (traumatic_shock > 61 && prob(50))*/)
|
||||
message_mode = "" //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
|
||||
|
||||
|
||||
message = capitalize(message) //capitalize the first letter of what they actually say
|
||||
|
||||
// :downs:
|
||||
if (getBrainLoss() >= 60)
|
||||
message = dd_replacetext(message, " am ", " ")
|
||||
@@ -156,10 +187,12 @@ var/list/department_radio_keys = list(
|
||||
message = uppertext(message)
|
||||
message += "[stutter(pick("!", "!!", "!!!"))]"
|
||||
if(!stuttering && prob(15))
|
||||
message = stutter(message)
|
||||
message = NewStutter(message,stunned)
|
||||
|
||||
if (stuttering)
|
||||
message = stutter(message)
|
||||
message = NewStutter(message,stunned)
|
||||
if (slurring)
|
||||
message = slur(message)
|
||||
|
||||
/* //qw do not have beesease atm.
|
||||
if(virus)
|
||||
@@ -283,6 +316,13 @@ var/list/department_radio_keys = list(
|
||||
var/list/V = view(message_range, T)
|
||||
var/list/W = V
|
||||
|
||||
var/list/eavesdroppers = get_mobs_in_view(7, src)
|
||||
for(var/mob/M in listening)
|
||||
eavesdroppers.Remove(M)
|
||||
for(var/mob/M in eavesdroppers)
|
||||
if(M.stat || !M.client || istype(M, /mob/living/silicon/pai) || M == src)
|
||||
eavesdroppers.Remove(M)
|
||||
|
||||
for (var/obj/O in ((W | contents)-used_radios))
|
||||
W |= O
|
||||
|
||||
@@ -312,17 +352,24 @@ var/list/department_radio_keys = list(
|
||||
var/list/heard_a = list() // understood us
|
||||
var/list/heard_b = list() // didn't understand us
|
||||
|
||||
for (var/M in listening)
|
||||
for (var/mob/M in listening) //My god this is to terrible and hacky - Erthilo
|
||||
if(hascall(M,"say_understands"))
|
||||
if (M:say_understands(src))
|
||||
if (M:say_understands(src) && !is_speaking_skrell && !is_speaking_soghun && !is_speaking_tajaran) //This could probably be merged into say_understands(), but I'm too lazy
|
||||
heard_a += M
|
||||
else if(is_speaking_skrell && (M.skrell_talk_understand || M.universal_speak))
|
||||
heard_a += M
|
||||
else if(is_speaking_soghun && (M.soghun_talk_understand || M.universal_speak))
|
||||
heard_a += M
|
||||
else if(is_speaking_tajaran && (M.tajaran_talk_understand || M.universal_speak))
|
||||
heard_a += M
|
||||
else
|
||||
heard_b += M
|
||||
var/speech_bubble_test = say_test(message)
|
||||
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]")
|
||||
|
||||
var/rendered = null
|
||||
if (length(heard_a))
|
||||
var/message_a = say_quote(message)
|
||||
|
||||
var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_tajaran)
|
||||
if (italics)
|
||||
message_a = "<i>[message_a]</i>"
|
||||
if (!istype(src, /mob/living/carbon/human))
|
||||
@@ -335,10 +382,17 @@ var/list/department_radio_keys = list(
|
||||
else
|
||||
rendered = "<span class='game say'><span class='name'>[real_name]</span>[alt_name] <span class='message'>[message_a]</span></span>"
|
||||
|
||||
for (var/M in heard_a)
|
||||
for (var/mob/M in heard_a)
|
||||
|
||||
M.show_message(rendered, 2)
|
||||
M << speech_bubble
|
||||
spawn(30) del(speech_bubble)
|
||||
//spawn(30) del(speech_bubble)
|
||||
|
||||
/* for (var/M in heard_a)
|
||||
if(hascall(M,"show_message"))
|
||||
M:show_message(rendered, 2)
|
||||
|
||||
*/
|
||||
if (length(heard_b))
|
||||
var/message_b
|
||||
|
||||
@@ -346,13 +400,17 @@ var/list/department_radio_keys = list(
|
||||
message_b = voice_message
|
||||
else
|
||||
message_b = stars(message)
|
||||
message_b = say_quote(message_b)
|
||||
message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_tajaran)
|
||||
|
||||
if (italics)
|
||||
message_b = "<i>[message_b]</i>"
|
||||
|
||||
rendered = "<span class='game say'><span class='name'>[voice_name]</span> <span class='message'>[message_b]</span></span>"
|
||||
|
||||
for (var/mob/M in heard_b)
|
||||
M.show_message(rendered, 2)
|
||||
M << speech_bubble
|
||||
spawn(30) del(speech_bubble)
|
||||
|
||||
for (var/M in heard_b)
|
||||
if(hascall(M,"show_message"))
|
||||
@@ -379,7 +437,16 @@ var/list/department_radio_keys = list(
|
||||
del(B)
|
||||
*/
|
||||
|
||||
if (length(eavesdroppers))
|
||||
|
||||
for (var/mob/M in eavesdroppers)
|
||||
M << "\blue [src] speaks into their radio..."
|
||||
M << speech_bubble
|
||||
spawn(30) del(speech_bubble)
|
||||
|
||||
log_say("[name]/[key] : [message]")
|
||||
|
||||
|
||||
|
||||
/obj/effect/speech_bubble
|
||||
var/mob/parent
|
||||
@@ -1,7 +1,7 @@
|
||||
//Cat
|
||||
/mob/living/simple_animal/cat
|
||||
name = "cat"
|
||||
desc = "Kitty!!"
|
||||
desc = "A domesticated, feline pet. Has a tendency to adopt crewmembers."
|
||||
icon_state = "cat"
|
||||
icon_living = "cat"
|
||||
icon_dead = "cat_dead"
|
||||
@@ -16,31 +16,31 @@
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "kicks the"
|
||||
|
||||
//RUNTIME IS ALIVE! SQUEEEEEEEE~
|
||||
/mob/living/simple_animal/cat/Runtime
|
||||
name = "Runtime"
|
||||
desc = ""
|
||||
response_help = "pets"
|
||||
response_disarm = "gently pushes aside"
|
||||
response_harm = "kicks"
|
||||
var/turns_since_scan = 0
|
||||
var/mob/living/simple_animal/mouse/movement_target
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/cat/Runtime/Life()
|
||||
/mob/living/simple_animal/cat/Life()
|
||||
//MICE!
|
||||
if((src.loc) && isturf(src.loc))
|
||||
if(!stat && !resting && !buckled)
|
||||
for(var/mob/living/simple_animal/mouse/M in view(1,src))
|
||||
if(!M.stat)
|
||||
M.splat()
|
||||
emote("splats \the [M]")
|
||||
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]"))
|
||||
movement_target = null
|
||||
stop_automated_movement = 0
|
||||
break
|
||||
|
||||
..()
|
||||
|
||||
for(var/mob/living/simple_animal/mouse/snack in oview(src, 3))
|
||||
if(prob(15))
|
||||
emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily."))
|
||||
break
|
||||
|
||||
if(!stat && !resting && !buckled)
|
||||
turns_since_scan++
|
||||
if(turns_since_scan > 5)
|
||||
@@ -58,4 +58,11 @@
|
||||
break
|
||||
if(movement_target)
|
||||
stop_automated_movement = 1
|
||||
walk_to(src,movement_target,0,3)
|
||||
walk_to(src,movement_target,0,3)
|
||||
|
||||
//RUNTIME IS ALIVE! SQUEEEEEEEE~
|
||||
/mob/living/simple_animal/cat/Runtime
|
||||
name = "Runtime"
|
||||
desc = "Its fur has the look and feel of velvet, and it's tail quivers occasionally."
|
||||
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
regenerate_icons()
|
||||
|
||||
/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
|
||||
/*
|
||||
user.machine = src
|
||||
if(user.stat) return
|
||||
|
||||
@@ -41,6 +42,7 @@
|
||||
|
||||
user << browse(dat, text("window=mob[];size=325x500", name))
|
||||
onclose(user, "mob[real_name]")
|
||||
*/
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
@@ -313,6 +315,10 @@
|
||||
dir = i
|
||||
sleep(1)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/corgi
|
||||
name = "Corgi meat"
|
||||
desc = "Tastes like... well you know..."
|
||||
|
||||
/mob/living/simple_animal/corgi/Ian/Bump(atom/movable/AM as mob|obj, yes)
|
||||
|
||||
spawn( 0 )
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//Look Sir, free crabs!
|
||||
/mob/living/simple_animal/crab
|
||||
name = "crab"
|
||||
desc = "Free crabs!"
|
||||
desc = "A hard-shelled crustacean. Seems quite content to lounge around all the time."
|
||||
icon_state = "crab"
|
||||
icon_living = "crab"
|
||||
icon_dead = "crab_dead"
|
||||
|
||||
@@ -389,4 +389,7 @@
|
||||
health -= 30
|
||||
|
||||
/mob/living/simple_animal/adjustBruteLoss(damage)
|
||||
health -= damage
|
||||
health -= damage
|
||||
|
||||
/proc/issimpleanimal(var/mob/AM)
|
||||
return istype(AM,/mob/living/simple_animal)
|
||||
@@ -1,13 +1,14 @@
|
||||
/mob/living/simple_animal/mouse
|
||||
name = "mouse"
|
||||
desc = "It's a nasty, ugly, evil, disease-ridden rodent."
|
||||
real_name = "mouse"
|
||||
desc = "It's a small, disease-ridden rodent."
|
||||
icon_state = "mouse_gray"
|
||||
icon_living = "mouse_gray"
|
||||
icon_dead = "mouse_gray_dead"
|
||||
speak = list("Squeek!","SQUEEK!","Squeek?")
|
||||
speak_emote = list("squeeks")
|
||||
emote_hear = list("squeeks")
|
||||
emote_see = list("runs in a circle", "shakes")
|
||||
speak_emote = list("squeeks","squeeks","squiks")
|
||||
emote_hear = list("squeeks","squeaks","squiks")
|
||||
emote_see = list("runs in a circle", "shakes", "scritches at something")
|
||||
speak_chance = 1
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
@@ -19,6 +20,16 @@
|
||||
response_harm = "splats the"
|
||||
density = 0
|
||||
var/color //brown, gray and white, leave blank for random
|
||||
layer = 2.5 //so they can hide under objects
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/mouse/Life()
|
||||
..()
|
||||
if(!stat && prob(speak_chance))
|
||||
for(var/mob/M in view())
|
||||
M << 'sound/effects/mousesqueek.ogg'
|
||||
|
||||
/mob/living/simple_animal/mouse/white
|
||||
color = "white"
|
||||
@@ -38,6 +49,7 @@
|
||||
icon_state = "mouse_[color]"
|
||||
icon_living = "mouse_[color]"
|
||||
icon_dead = "mouse_[color]_dead"
|
||||
desc = "It's a small [color] rodent, often seen hiding in maintenance areas and making a nuisance of itself."
|
||||
|
||||
//TOM IS ALIVE! SQUEEEEEEEE~K :)
|
||||
/mob/living/simple_animal/mouse/brown/Tom
|
||||
@@ -54,6 +66,96 @@
|
||||
src.icon_dead = "mouse_[color]_splat"
|
||||
src.icon_state = "mouse_[color]_splat"
|
||||
|
||||
//copy paste from alien/larva, if that func is updated please update this one also
|
||||
/mob/living/simple_animal/mouse/verb/ventcrawl()
|
||||
set name = "Crawl through Vent"
|
||||
set desc = "Enter an air vent and crawl through the pipe system."
|
||||
set category = "Mouse"
|
||||
|
||||
// if(!istype(V,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent))
|
||||
// return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/vent_found
|
||||
var/welded = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/v in range(1,src))
|
||||
if(!v.welded)
|
||||
vent_found = v
|
||||
break
|
||||
else
|
||||
welded = 1
|
||||
if(vent_found)
|
||||
if(vent_found.network&&vent_found.network.normal_members.len)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in vent_found.network.normal_members)
|
||||
if(temp_vent.loc == loc)
|
||||
continue
|
||||
vents.Add(temp_vent)
|
||||
var/list/choices = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/vent in vents)
|
||||
if(vent.loc.z != loc.z)
|
||||
continue
|
||||
var/atom/a = get_turf(vent)
|
||||
choices.Add(a.loc)
|
||||
var/turf/startloc = loc
|
||||
var/obj/selection = input("Select a destination.", "Duct System") in choices
|
||||
var/selection_position = choices.Find(selection)
|
||||
if(loc==startloc)
|
||||
var/obj/target_vent = vents[selection_position]
|
||||
if(target_vent)
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O.show_message(text("<B>[src] scrambles into the ventillation ducts!</B>"), 1)
|
||||
loc = target_vent.loc
|
||||
else
|
||||
src << "\blue You need to remain still while entering a vent."
|
||||
else
|
||||
src << "\blue This vent is not connected to anything."
|
||||
else if(welded)
|
||||
src << "\red That vent is welded."
|
||||
else
|
||||
src << "\blue You must be standing on or beside an air vent to enter it."
|
||||
return
|
||||
|
||||
//copy paste from alien/larva, if that func is updated please update this one alsoghost
|
||||
/mob/living/simple_animal/mouse/verb/hide()
|
||||
set name = "Hide"
|
||||
set desc = "Allows to hide beneath tables or certain items. Toggled on or off."
|
||||
set category = "Mouse"
|
||||
|
||||
if (layer != TURF_LAYER+0.2)
|
||||
layer = TURF_LAYER+0.2
|
||||
src << text("\blue You are now hiding.")
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << text("<B>[] scurries to the ground!</B>", src)
|
||||
else
|
||||
layer = MOB_LAYER
|
||||
src << text("\blue You have stopped hiding.")
|
||||
for(var/mob/O in oviewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O << text("[] slowly peaks up from the ground...", src)
|
||||
|
||||
//make mice fit under tables etc? this was hacky, and not working
|
||||
/*
|
||||
/mob/living/simple_animal/mouse/Move(var/dir)
|
||||
|
||||
var/turf/target_turf = get_step(src,dir)
|
||||
//CanReachThrough(src.loc, target_turf, src)
|
||||
var/can_fit_under = 0
|
||||
if(target_turf.ZCanPass(get_turf(src),1))
|
||||
can_fit_under = 1
|
||||
|
||||
..(dir)
|
||||
if(can_fit_under)
|
||||
src.loc = target_turf
|
||||
for(var/d in cardinal)
|
||||
var/turf/O = get_step(T,d)
|
||||
//Simple pass check.
|
||||
if(O.ZCanPass(T, 1) && !(O in open) && !(O in closed) && O in possibles)
|
||||
open += O
|
||||
*/
|
||||
|
||||
mob/living/simple_animal/mouse/restrained() //Hotfix to stop mice from doing things with MouseDrop
|
||||
return 1
|
||||
|
||||
/mob/living/simple_animal/mouse/HasEntered(AM as mob|obj)
|
||||
if( ishuman(AM) )
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
name = "\improper Parrot"
|
||||
desc = "It's a parrot! No dirty words!"
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "cat"
|
||||
icon_living = "cat"
|
||||
icon_dead = "cat_dead"
|
||||
icon_state = "parrot"
|
||||
icon_living = "parrot"
|
||||
icon_dead = "parrot_dead"
|
||||
speak = list("Hi","Hello!","Cracker?","BAWWWWK george mellons griffing me")
|
||||
speak_emote = list("squawks","says","yells")
|
||||
emote_hear = list("squawks","bawks")
|
||||
@@ -15,15 +15,22 @@
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently moves aside the"
|
||||
response_harm = "swats the"
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
ears = new /obj/item/device/radio/headset/heads/ce()
|
||||
|
||||
/mob/living/simple_animal/parrot/DrProfessor
|
||||
name = "Doctor Professor Parrot, PhD"
|
||||
desc = "That's the Doctor Professor. He has more degrees than all of the engineering team put together, and has several published papers on quantum cracker theory."
|
||||
speak = list(":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN RIG SUIT?",":e OH GOD ITS FREE CALL THE SHUTTLE")
|
||||
speak = list(":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN RIG SUIT?",":e OH GOD ITS FREE CALL THE SHUTTLE",":e Open secure storage please.",":e I think something happened to the containment field...")
|
||||
response_harm = "is attacked in the face by"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cracker/
|
||||
name = "Cracker"
|
||||
desc = "It's a salted cracker."
|
||||
|
||||
/mob/living/simple_animal/parrot/show_inv(mob/user as mob)
|
||||
user.machine = src
|
||||
if(user.stat) return
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
var/obj/effect/organstructure/organStructure = null
|
||||
|
||||
// var/uses_hud = 0
|
||||
var/obj/screen/pain = null
|
||||
var/obj/screen/flash = null
|
||||
var/obj/screen/blind = null
|
||||
var/obj/screen/hands = null
|
||||
@@ -65,6 +66,7 @@
|
||||
var/ear_deaf = null //Carbon
|
||||
var/ear_damage = null //Carbon
|
||||
var/stuttering = null //Carbon
|
||||
var/slurring = null //Carbon
|
||||
var/real_name = null
|
||||
// var/original_name = null //Original name is only used in ghost chat! Depracated, now used bb
|
||||
var/blinded = null
|
||||
@@ -226,3 +228,6 @@
|
||||
var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
|
||||
var/robot_talk_understand = 0
|
||||
var/alien_talk_understand = 0
|
||||
var/skrell_talk_understand = 0
|
||||
var/tajaran_talk_understand = 0
|
||||
var/soghun_talk_understand = 0
|
||||
|
||||
@@ -114,26 +114,37 @@ proc/isorgan(A)
|
||||
return
|
||||
|
||||
/proc/istajaran(A)
|
||||
return istype(A, /mob/living/carbon/human/tajaran)
|
||||
if(istype(A, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = A
|
||||
if(M.dna.mutantrace == "tajaran")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/issoghun(A)
|
||||
if(istype(A, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = A
|
||||
if(M.dna.mutantrace == "lizard")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/proc/isskrell(A)
|
||||
if(istype(A, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = A
|
||||
if(M.dna.mutantrace == "skrell")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
/proc/check_zone(zone)
|
||||
if(!zone) return "chest"
|
||||
if(!zone)
|
||||
return "chest"
|
||||
switch(zone)
|
||||
if("eyes")
|
||||
zone = "head"
|
||||
if("mouth")
|
||||
zone = "head"
|
||||
if("l_hand")
|
||||
zone = "l_arm"
|
||||
if("r_hand")
|
||||
zone = "r_arm"
|
||||
if("l_foot")
|
||||
zone = "l_leg"
|
||||
if("r_foot")
|
||||
zone = "r_leg"
|
||||
if("groin")
|
||||
zone = "chest"
|
||||
// if("groin")
|
||||
// zone = "chest"
|
||||
return zone
|
||||
|
||||
|
||||
@@ -162,7 +173,7 @@ proc/isorgan(A)
|
||||
else
|
||||
if (pr >= 100)
|
||||
return n
|
||||
var/te = n
|
||||
var/te = html_decode(n)
|
||||
var/t = ""
|
||||
n = length(n)
|
||||
var/p = null
|
||||
@@ -173,8 +184,67 @@ proc/isorgan(A)
|
||||
else
|
||||
t = text("[]*", t)
|
||||
p++
|
||||
return t
|
||||
return html_encode(t)
|
||||
|
||||
/*proc/NewStutter(phrase,stunned)
|
||||
phrase = html_decode(phrase)
|
||||
|
||||
var/list/split_phrase = dd_text2list(phrase," ") //Split it up into words.
|
||||
|
||||
var/list/unstuttered_words = split_phrase.Copy()
|
||||
var/i = rand(1,3)
|
||||
if(stunned) i = split_phrase.len
|
||||
for(,i > 0,i--) //Pick a few words to stutter on.
|
||||
|
||||
if (!unstuttered_words.len)
|
||||
break
|
||||
var/word = pick(unstuttered_words)
|
||||
unstuttered_words -= word //Remove from unstuttered words so we don't stutter it again.
|
||||
var/index = split_phrase.Find(word) //Find the word in the split phrase so we can replace it.
|
||||
|
||||
//Search for dipthongs (two letters that make one sound.)
|
||||
var/first_sound = copytext(word,1,3)
|
||||
var/first_letter = copytext(word,1,2)
|
||||
if(lowertext(first_sound) in list("ch","th","sh"))
|
||||
first_letter = first_sound
|
||||
|
||||
//Repeat the first letter to create a stutter.
|
||||
var/rnum = rand(1,3)
|
||||
switch(rnum)
|
||||
if(1)
|
||||
word = "[first_letter]-[word]"
|
||||
if(2)
|
||||
word = "[first_letter]-[first_letter]-[word]"
|
||||
if(3)
|
||||
word = "[first_letter]-[word]"
|
||||
|
||||
split_phrase[index] = word
|
||||
|
||||
return sanitize(dd_list2text(split_phrase," "))*/
|
||||
|
||||
|
||||
proc/slur(phrase)
|
||||
phrase = html_decode(phrase)
|
||||
var/leng=lentext(phrase)
|
||||
var/counter=lentext(phrase)
|
||||
var/newphrase=""
|
||||
var/newletter=""
|
||||
while(counter>=1)
|
||||
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
|
||||
if(rand(1,3)==3)
|
||||
if(lowertext(newletter)=="o") newletter="u"
|
||||
if(lowertext(newletter)=="s") newletter="ch"
|
||||
if(lowertext(newletter)=="a") newletter="ah"
|
||||
if(lowertext(newletter)=="c") newletter="k"
|
||||
switch(rand(1,15))
|
||||
if(1,3,5,8) newletter="[lowertext(newletter)]"
|
||||
if(2,4,6,15) newletter="[uppertext(newletter)]"
|
||||
if(7) newletter+="'"
|
||||
if(9,10) newletter="<b>[newletter]</b>"
|
||||
if(11,12) newletter="<big>[newletter]</big>"
|
||||
if(13) newletter="<small>[newletter]</small>"
|
||||
newphrase+="[newletter]";counter-=1
|
||||
return newphrase
|
||||
|
||||
/proc/stutter(n)
|
||||
var/te = html_decode(n)
|
||||
@@ -277,6 +347,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
|
||||
return 0
|
||||
|
||||
/mob/proc/abiotic2(var/full_body2 = 0)
|
||||
if(full_body2 && ((l_hand && !( l_hand.abstract )) || (r_hand && !( r_hand.abstract )) || (back || wear_mask)))
|
||||
return 1
|
||||
|
||||
if((l_hand && !( l_hand.abstract )) || (r_hand && !( r_hand.abstract )))
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
//Triggered when F12 is pressed (Unless someone changed something in the DMF)
|
||||
/mob/verb/button_pressed_F12()
|
||||
set name = "F12"
|
||||
|
||||
@@ -287,6 +287,13 @@
|
||||
if(Process_Grab()) return
|
||||
if(!mob.canmove) return
|
||||
|
||||
//Making mob movememnt changes instant.
|
||||
if(mob.paralysis || mob.stunned || mob.resting || mob.weakened || mob.buckled /*|| (mob.changeling && mob.changeling.changeling_fakedeath)*/)
|
||||
mob.canmove = 0
|
||||
return
|
||||
else
|
||||
mob.canmove = 1
|
||||
|
||||
|
||||
//if(istype(mob.loc, /turf/space) || (mob.flags & NOGRAV))
|
||||
// if(!mob.Process_Spacemove(0)) return 0
|
||||
@@ -306,7 +313,7 @@
|
||||
|
||||
if(mob.restrained())//Why being pulled while cuffed prevents you from moving
|
||||
for(var/mob/M in range(mob, 1))
|
||||
if(M.pulling == mob && !M.restrained() && M.stat == 0 && M.canmove)
|
||||
if(((M.pulling == mob && (!( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, mob.grabbed_by.len)))
|
||||
src << "\blue You're restrained! You can't move!"
|
||||
return 0
|
||||
|
||||
@@ -315,14 +322,14 @@
|
||||
switch(mob.m_intent)
|
||||
if("run")
|
||||
if(mob.drowsyness > 0)
|
||||
move_delay += 6
|
||||
move_delay += 5
|
||||
// if(mob.organStructure && mob.organStructure.legs)
|
||||
// move_delay += mob.organStructure.legs.moveRunDelay
|
||||
move_delay += 1
|
||||
move_delay += 2
|
||||
if("walk")
|
||||
// if(mob.organStructure && mob.organStructure.legs)
|
||||
// move_delay += mob.organStructure.legs.moveWalkDelay
|
||||
move_delay += 7
|
||||
move_delay += 5
|
||||
move_delay += mob.movement_delay()
|
||||
|
||||
if(config.Tickcomp)
|
||||
@@ -368,10 +375,13 @@
|
||||
M.animate_movement = 2
|
||||
return
|
||||
|
||||
else if(mob.confused)
|
||||
else if(mob.confused && prob(30))
|
||||
step(mob, pick(cardinal))
|
||||
else
|
||||
. = ..()
|
||||
for(var/obj/effect/speech_bubble/S in range(1, mob))
|
||||
if(S.parent == mob)
|
||||
S.loc = mob.loc
|
||||
|
||||
moving = 0
|
||||
|
||||
|
||||
@@ -298,6 +298,11 @@
|
||||
src << alert("[rank] is not available. Please try another.")
|
||||
return 0
|
||||
|
||||
if(preferences.species != "Human")
|
||||
if(!is_alien_whitelisted(src, preferences.species) && config.usealienwhitelist)
|
||||
src << alert("You are currently not whitelisted to play [preferences.species].")
|
||||
return 0
|
||||
|
||||
job_master.AssignRole(src, rank, 1)
|
||||
|
||||
var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind
|
||||
@@ -377,6 +382,19 @@
|
||||
new_character.dna.ready_dna(new_character)
|
||||
new_character.dna.b_type = preferences.b_type
|
||||
|
||||
if(preferences.species == "Tajaran") //This is like the worst, but it works, so meh. - Erthilo
|
||||
if(is_alien_whitelisted(src, "Tajaran") || !config.usealienwhitelist)
|
||||
new_character.dna.mutantrace = "tajaran"
|
||||
new_character.tajaran_talk_understand = 1
|
||||
if(preferences.species == "Soghun")
|
||||
if(is_alien_whitelisted(src, "Soghun") || !config.usealienwhitelist)
|
||||
new_character.dna.mutantrace = "lizard"
|
||||
new_character.soghun_talk_understand = 1
|
||||
if(preferences.species == "Skrell")
|
||||
if(is_alien_whitelisted(src, "Skrell") || !config.usealienwhitelist)
|
||||
new_character.dna.mutantrace = "skrell"
|
||||
new_character.skrell_talk_understand = 1
|
||||
|
||||
new_character.key = key //Manually transfer the key to log them in
|
||||
|
||||
return new_character
|
||||
|
||||
@@ -702,12 +702,11 @@ datum/preferences
|
||||
b_type = new_b_type
|
||||
|
||||
if("hair")
|
||||
if(species == "Human")
|
||||
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
|
||||
if(new_hair)
|
||||
r_hair = hex2num(copytext(new_hair, 2, 4))
|
||||
g_hair = hex2num(copytext(new_hair, 4, 6))
|
||||
b_hair = hex2num(copytext(new_hair, 6, 8))
|
||||
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
|
||||
if(new_hair)
|
||||
r_hair = hex2num(copytext(new_hair, 2, 4))
|
||||
g_hair = hex2num(copytext(new_hair, 4, 6))
|
||||
b_hair = hex2num(copytext(new_hair, 6, 8))
|
||||
|
||||
if("h_style")
|
||||
var/list/valid_hairstyles = list()
|
||||
|
||||
@@ -91,7 +91,7 @@ datum/preferences/proc/savefile_save(mob/user)
|
||||
F["blood_type"] << src.b_type
|
||||
F["underwear"] << src.underwear
|
||||
F["backbag"] << src.backbag
|
||||
F["backbag"] << src.backbag
|
||||
F["species"] << src.species
|
||||
|
||||
|
||||
|
||||
@@ -173,6 +173,8 @@ datum/preferences/proc/savefile_load(mob/user)
|
||||
if(underwear == 0) underwear = 12 //For old players who have 0 in their savefile
|
||||
F["backbag"] >> src.backbag
|
||||
if(isnull(backbag)) backbag = 2
|
||||
F["species"] >> src.species
|
||||
if(isnull(species)) species = "human"
|
||||
F["name_is_always_random"] >> src.be_random_name
|
||||
F["midis"] >> src.midis
|
||||
F["ghost_ears"] >> src.ghost_ears
|
||||
|
||||
@@ -47,20 +47,35 @@
|
||||
return
|
||||
|
||||
/mob/proc/say_understands(var/mob/other)
|
||||
if(!other)
|
||||
return 1
|
||||
if (src.stat == 2)
|
||||
return 1
|
||||
else if (istype(other, src.type))
|
||||
return 1
|
||||
else if(other.universal_speak || src.universal_speak)
|
||||
return 1
|
||||
else if(isAI(src) && ispAI(other))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/mob/proc/say_quote(var/text)
|
||||
/mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell,var/is_speaking_tajaran)
|
||||
if(!text)
|
||||
return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code
|
||||
var/ending = copytext(text, length(text))
|
||||
if (is_speaking_soghun)
|
||||
return "hisses, \"<span class='species'>[text]</span>\"";
|
||||
if (is_speaking_skrell)
|
||||
return "warbles, \"<span class='species'>[text]</span>\"";
|
||||
if (is_speaking_tajaran)
|
||||
return "purrs, \"<span class='species'>[text]</span>\"";
|
||||
//Needs Virus2
|
||||
// if (src.disease_symptoms & DISEASE_HOARSE)
|
||||
// return "rasps, \"[text]\"";
|
||||
if (src.stuttering)
|
||||
return "stammers, \"[text]\"";
|
||||
if (src.slurring)
|
||||
return "slurrs, \"[text]\"";
|
||||
if(isliving(src))
|
||||
var/mob/living/L = src
|
||||
if (L.getBrainLoss() >= 60)
|
||||
@@ -81,4 +96,12 @@
|
||||
|
||||
// should be overloaded for all mobs whose "ear" is separate from their "mob"
|
||||
|
||||
return get_turf(src)
|
||||
return get_turf(src)
|
||||
|
||||
/mob/proc/say_test(var/text)
|
||||
var/ending = copytext(text, length(text))
|
||||
if (ending == "?")
|
||||
return "1"
|
||||
else if (ending == "!")
|
||||
return "2"
|
||||
return "0"
|
||||
@@ -1,33 +0,0 @@
|
||||
//kobold
|
||||
/mob/living/simple_animal/kobold
|
||||
name = "kobold"
|
||||
desc = "A small, rat-like creature."
|
||||
icon = 'mob.dmi'
|
||||
icon_state = "kobold_idle"
|
||||
icon_living = "kobold_idle"
|
||||
icon_dead = "kobold_dead"
|
||||
//speak = list("You no take candle!","Ooh, pretty shiny.","Me take?","Where gold here...","Me likey.")
|
||||
speak_emote = list("mutters","hisses","grumbles")
|
||||
emote_hear = list("mutters under it's breath.","grumbles.", "yips!")
|
||||
emote_see = list("looks around suspiciously.", "scratches it's arm.","putters around a bit.")
|
||||
speak_chance = 15
|
||||
turns_per_move = 5
|
||||
see_in_dark = 6
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meat
|
||||
response_help = "pets the"
|
||||
response_disarm = "gently pushes aside the"
|
||||
response_harm = "kicks the"
|
||||
minbodytemp = 250
|
||||
min_oxy = 16 //Require atleast 16kPA oxygen
|
||||
minbodytemp = 223 //Below -50 Degrees Celcius
|
||||
maxbodytemp = 323 //Above 50 Degrees Celcius
|
||||
|
||||
/mob/living/simple_animal/kobold/Life()
|
||||
..()
|
||||
if(prob(15) && turns_since_move && !stat)
|
||||
flick("kobold_act",src)
|
||||
|
||||
/mob/living/simple_animal/kobold/Move(var/dir)
|
||||
..()
|
||||
if(!stat)
|
||||
flick("kobold_walk",src)
|
||||
@@ -6,7 +6,7 @@
|
||||
origin_tech = "combat=2;materials=2"
|
||||
ammo_type = "/obj/item/ammo_casing/c38"
|
||||
|
||||
|
||||
/*
|
||||
special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(istype(M.w_uniform, /obj/item/clothing/under/det) && istype(M.head, /obj/item/clothing/head/det_hat) && \
|
||||
@@ -14,7 +14,7 @@
|
||||
return 1
|
||||
M << "\red You just don't feel cool enough to use this gun looking like that."
|
||||
return 0
|
||||
|
||||
*/
|
||||
|
||||
verb/rename_gun()
|
||||
set name = "Name Gun"
|
||||
|
||||
@@ -24,6 +24,7 @@ em {font-style: normal; font-weight: bold;}
|
||||
|
||||
.say {}
|
||||
.deadsay {color: #5c00e6;}
|
||||
.species {color: #803B56;}
|
||||
.radio {color: #008000;}
|
||||
.deptradio {color: #993399;}
|
||||
.comradio {color: #ACA82D;}
|
||||
|
||||
@@ -67,6 +67,14 @@ macro "macro"
|
||||
name = "CTRL+D"
|
||||
command = "drop-item"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+E"
|
||||
command = "_changeintent 1"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+Q"
|
||||
command = "_changeintent -1"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+S"
|
||||
command = "swap-hand"
|
||||
@@ -75,6 +83,42 @@ macro "macro"
|
||||
name = "CTRL+W"
|
||||
command = "attack-self"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD2+REP"
|
||||
command = ".south"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD4+REP"
|
||||
command = ".west"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD5+REP"
|
||||
command = ".center"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD6+REP"
|
||||
command = ".east"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "NUMPAD8+REP"
|
||||
command = ".north"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "MULTIPLY"
|
||||
command = "swap-hand"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "ADD"
|
||||
command = "attack-self"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "SUBTRACT"
|
||||
command = "drop-item"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "DIVIDE"
|
||||
command = "toggle-throw-mode"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F1"
|
||||
command = "adminhelp"
|
||||
@@ -83,6 +127,10 @@ macro "macro"
|
||||
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"
|
||||
@@ -91,6 +139,22 @@ macro "macro"
|
||||
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 = "ToggleGunMode"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F12"
|
||||
command = "F12"
|
||||
@@ -251,6 +315,98 @@ menu "menu"
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = ""
|
||||
command = ""
|
||||
category = "&Help"
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "&Rules"
|
||||
command = "Rules"
|
||||
category = "&Help"
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "&News"
|
||||
command = "Read-News"
|
||||
category = "&Help"
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
|
||||
menu "minimap_menu"
|
||||
elem
|
||||
name = "Size"
|
||||
command = ""
|
||||
category = ""
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "50%"
|
||||
command = ".winset \"minimap.icon-size=16\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "100%"
|
||||
command = ".winset \"minimap.icon-size=32\""
|
||||
category = "Size"
|
||||
is-checked = true
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "200%"
|
||||
command = ".winset \"minimap.icon-size=64\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "stretch"
|
||||
command = ".winset \"minimap.icon-size=0\""
|
||||
category = "Size"
|
||||
is-checked = false
|
||||
can-check = true
|
||||
group = "minimap_size"
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "View"
|
||||
command = ""
|
||||
category = ""
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
elem
|
||||
name = "Change Z level"
|
||||
command = "Open-Minimap-Z"
|
||||
category = "View"
|
||||
is-checked = false
|
||||
can-check = false
|
||||
group = ""
|
||||
is-disabled = false
|
||||
saved-params = "is-checked"
|
||||
|
||||
|
||||
window "Telecomms IDE"
|
||||
@@ -496,6 +652,116 @@ window "chemdispenser"
|
||||
macro = ""
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "charging"
|
||||
type = BUTTON
|
||||
pos = 72,24
|
||||
size = 88x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Not charging]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;tcharge\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "button4"
|
||||
type = BUTTON
|
||||
pos = 208,4
|
||||
size = 48x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Other]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amountc\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "child2"
|
||||
type = CHILD
|
||||
pos = 0,48
|
||||
size = 340x432
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "splitter"
|
||||
on-size = ""
|
||||
left = "chemdispenser_reagents"
|
||||
right = ""
|
||||
is-vert = false
|
||||
splitter = 50
|
||||
show-splitter = true
|
||||
lock = none
|
||||
elem "button3"
|
||||
type = BUTTON
|
||||
pos = 208,4
|
||||
size = 48x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Other]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amountc\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "energy"
|
||||
type = LABEL
|
||||
pos = 8,24
|
||||
@@ -879,7 +1145,7 @@ window "mainwindow"
|
||||
elem "input"
|
||||
type = INPUT
|
||||
pos = 3,420
|
||||
size = 517x20
|
||||
size = 554x20
|
||||
anchor1 = 0,100
|
||||
anchor2 = 100,100
|
||||
font-family = ""
|
||||
@@ -902,7 +1168,7 @@ window "mainwindow"
|
||||
no-command = false
|
||||
elem "saybutton"
|
||||
type = BUTTON
|
||||
pos = 520,420
|
||||
pos = 557,420
|
||||
size = 40x20
|
||||
anchor1 = 100,100
|
||||
anchor2 = none
|
||||
@@ -922,16 +1188,16 @@ window "mainwindow"
|
||||
on-size = ""
|
||||
text = "Chat"
|
||||
image = ""
|
||||
command = ".winset \"saybutton.is-checked=true?input.command=\"!say \\\"\" macrobutton.is-checked=false:input.command=\""
|
||||
command = ".winset \"saybutton.is-checked=true?input.command=\"!say \\\"\" oocbutton.is-checked=false:input.command=\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbox
|
||||
elem "macrobutton"
|
||||
elem "oocbutton"
|
||||
type = BUTTON
|
||||
pos = 560,420
|
||||
size = 30x20
|
||||
pos = 597,420
|
||||
size = 40x20
|
||||
anchor1 = 100,100
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
@@ -940,7 +1206,7 @@ window "mainwindow"
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
@@ -948,42 +1214,14 @@ window "mainwindow"
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Alt"
|
||||
text = "OOC"
|
||||
image = ""
|
||||
command = ".winset \"macrobutton.is-checked=true?input.command=\"!.alt \" saybutton.is-checked=false:input.command=\""
|
||||
command = ".winset \"oocbutton.is-checked=true?input.command=\"!ooc \\\"\" saybutton.is-checked=false:input.command=\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbox
|
||||
elem "hostb"
|
||||
type = BUTTON
|
||||
pos = 590,420
|
||||
size = 47x20
|
||||
anchor1 = 100,100
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = true
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Host..."
|
||||
image = ""
|
||||
command = ".host"
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
|
||||
window "mapwindow"
|
||||
elem "mapwindow"
|
||||
@@ -1049,7 +1287,71 @@ window "mapwindow"
|
||||
text-mode = false
|
||||
on-show = ".winset\"mainwindow.mainvsplit.left=mapwindow\""
|
||||
on-hide = ".winset\"mainwindow.mainvsplit.left=\""
|
||||
style = ""
|
||||
|
||||
window "minimapwindow"
|
||||
elem "minimapwindow"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 640x480
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "pos;size;is-minimized;is-maximized"
|
||||
on-size = ""
|
||||
title = ""
|
||||
titlebar = true
|
||||
statusbar = true
|
||||
can-close = true
|
||||
can-minimize = true
|
||||
can-resize = true
|
||||
is-pane = false
|
||||
is-minimized = false
|
||||
is-maximized = false
|
||||
can-scroll = none
|
||||
icon = ""
|
||||
image = ""
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
transparent-color = none
|
||||
alpha = 255
|
||||
macro = ""
|
||||
menu = "minimap_menu"
|
||||
on-close = ""
|
||||
elem "minimap"
|
||||
type = MAP
|
||||
pos = 0,0
|
||||
size = 640x480
|
||||
anchor1 = 0,0
|
||||
anchor2 = 100,100
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = true
|
||||
right-click = false
|
||||
saved-params = "icon-size"
|
||||
on-size = ""
|
||||
icon-size = 32
|
||||
text-mode = false
|
||||
on-show = ""
|
||||
on-hide = ""
|
||||
|
||||
window "outputwindow"
|
||||
elem "outputwindow"
|
||||
@@ -1653,6 +1955,32 @@ window "vendingwindow_n"
|
||||
macro = "vending"
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "label2"
|
||||
type = LABEL
|
||||
pos = 0,0
|
||||
size = 80x16
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #0000a0
|
||||
background-color = #ff8000
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = sunken
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
text = ""
|
||||
image = ""
|
||||
image-mode = center
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
elem "page"
|
||||
type = LABEL
|
||||
pos = 64,416
|
||||
|
||||
Reference in New Issue
Block a user