mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-26 10:02:28 +00:00
* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.
* this is probably important
* Remove cascade disabling SSgarbage
* Fixed a bug where dust() did not qdel the target mob
* Misc fixes
* Fix decals surviving break-to-plating
* Subsystem flag tweaks
* Apparently subsystems are new'd before config is.
* Fix paper icons
* Speculative fix for insane lag
* Better machinery stat
* Make organs not use SSoverlay
* Misc bugfixes & tweaks
* Nightmode fixes
* Changelog for SMC
* Port /tg/'s improved MC crash handling
* Add some more SS Recover() procs
* supply_controller -> SScargo
* More New() -> Initialize()
* pAI and robot construction overlays
* Fix cargo unit tests
* Merge the DMM Suite's atom/New() into atoms_init
* Lighting pre-baking
* Lighting initialization logging
* Fix some bad SS init orders
* Fix SSlighting logging; rename Processes to MC
* Speculative fix for insane GC lag
* Prebaked openturf/icon_smooth & fix lighting prebake
* SS init status; SSatoms LATEQDEL
* Fix bug with MC init stat panel
* Fix parallax
* Misc
* Ignore SS_NO_DISPLAY during init
* apparently this is important
* REEEEEE
* Image GC fixes; broadcaster radio-new sanity
* RCON Cleanup
* Move pAI recruiter into subsystem
* Move global solars list into sun subsystem
* Make chickens not use a global
* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup
* Speed up space init a little
* Fix bad timer flags on floor drying
* Subsystem panic-restart verb for mins
* Explosion speedup
* Minor subsystem & MC logging tweaks
* SSopenturf improvements
* Make pipenet actually initialize (whoops)
* Minor tweaks
* Implement lighting rounding
* comments are hard okay
* Minor lattice tweaks
* Fix some timer issues & better closet init
* Timer sanity
* Request console tweaks + Storage init sanity
* Minor SSmachiner RCON improvements
* Further reduce world-start timer count
* Standardize subsystem logging
* Garbage hard delete profiling from /tg/
* Timer hang detection & recovery
* Log machines that sleep in process() and fuck up SSmachinery
* Fix an issue with external airlocks sleeping in process()
* Failsafe logging
* Minor tweaks
* Revert "Request console tweaks + Storage init sanity"
This reverts commit 98d3579e35.
* Re-implement RC changes
* Fix SQL FT saving
* Fix SSmachinery sleep in disposals
* Minor SS tweaks
* Paper fixes
* Blood drying fixes
* Merge gameticker and SSticker
* Minor global list init cleanup
* Lagcheck biogenerator & bags
* Tweak SScargo init order; RIG Initialize()
* Caching tweaks
* Remove rogue comma
* Initialize fixes
* Lighting destroy cleanup
* Fix emagging airlocks
* Initial SSicon implementation
* Tweaks & Fixes
* Fire + Air alarm queued icon updates
* Overlays + Queued icon cleanup
* Runtime & background fixes
* Kill some meaningless set statements
* Kill some image qdels
* Bump up lighting rounding val
* Fix adv. scanner destroy runtimes
* Remove unneeded icon update limiting
* Move icon smoothing into helpers
* Show a warning if DM 510 compiles without memory leak hack enabled
* Re-organize subsystems & MC defines a little
* Airlock SFX
* Log of Changes
* Make SSicon_update disable itself when not doing anything
* Fix respawn verb runtime when used early in server-init
* Add more information to MC's stat_entry()
* Replace direct refernces to gcDestroyed with QDEL* macros
* plant_controller -> SSplants
* More plant tweaks
* Add more humor to changelog
* Move parallax globals into SSparallax
* Lighting responsiveness tweaks
* Fix parallax init order & better MC init panel stat
* Make mobs GC
* More overlays + Remove intercom spawn()
* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.
* Update changelog
* Mob GC tweaks
* Del() cleanup
* Fix insomniac ZAS connection edges
* Minor pAI cleanup
* Convert more things to SSoverlay; fix duplicated overlay in field gens
* SM Bluespace turf tweaks
* Update SSgarbage debug globals list
* Human-type qdel tweaks
* Subsystem suspension; stat_entry improvements
* SQL Statistics cleanup
* Fix runtimes with ambrosia
* More disable() -> suspend(); fix nightmode again
* Human qdel fix; minor tweaks
* Update turbolift to work with StonedMC
* Make lifts use timers instead of a subsystem
* Make SSassets start earlier
* Convert the radio controller into a subsystem
* Fix some missing CHECK_TICKs in asteroid generation
* MC stat tweaks; make shouldnt_see a typecache
* Kill some redundant debug-controller entries
* radio_controller -> SSradio
* Better SSgarbage hard-del logging from /tg/ upstream
* Logging tweaks + GELF
* Misc client caching improvements
* Slime SSoverlay
* Oven icon fixes
* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.
* Holder tweaks + Welding tool Initialize()
* Fix some bad subsystem logging
* Fix suit cooling units spawning without cells
* Starlight tweaks
* Gibber infinite gib fix
* More SSoverlay stuff
* Make crates use CUT_OVERLAY_IN
* Make SSarrivals suspend instead of disable
* Make openturf use split/phased tick checks
* Speculative fix for unwet timer runtimes
* Blood overlay tweaks/fixes
* Update crusher to play nice with SMC + SSoverlay
* Openturf improvements and fixes
* Minor turbolift tweaks
* Lighting performance improvements + ChangeTurf tweaks
* this is probably important
* Fix wall weld noises on changeturf
* More ChangeTurf tweaks
* Explosion tweaks
* Pre-game lobby tweaks
* Openturf tweaks
* Prevent admins from starting the game before init finishes
* Fix Travis
* Kill an unused var
* Fix ChangeTurf runtimes on openturfs
* Fixes
* Browser datum fixes, asset caching
* Update changelog
* Changelog
* Lobby tweaks
* Ticker tweaks; kill ticker var
* Further lobby tweaks
* Cascade tweaks
* air_master -> SSair
* Reduce overhead from radio autosay
* alarm_manager -> SSalarm
* bomb_processor -> SSexplosives
* corp_regs -> SSlaw
* ZAS overlay fixes
* Small wall icon optimization
* Fix effects master
* Assembly tweaks
* Megavend fixes
* Shuttle fixes
* Camera alert performance improvements
* Fix some world.log spam from lighting overlays
* Fix some Initialize() procs
* Openspace responsiveness tweaks
* Make HE pipes animate through openturfs
* Kill a spawn
409 lines
13 KiB
Plaintext
409 lines
13 KiB
Plaintext
/*
|
|
Ideas for the subtle effects of hallucination:
|
|
|
|
Light up oxygen/phoron indicators (done)
|
|
Cause health to look critical/dead, even when standing (done)
|
|
Characters silently watching you
|
|
Brief flashes of fire/space/bombs/c4/dangerous shit (done)
|
|
Items that are rare/traitorous/don't exist appearing in your inventory slots (done)
|
|
Strange audio (should be rare) (done)
|
|
Gunshots/explosions/opening doors/less rare audio (done)
|
|
|
|
*/
|
|
|
|
mob/living/carbon/var
|
|
image/halimage
|
|
image/halbody
|
|
obj/halitem
|
|
hal_screwyhud = 0 //1 - critical, 2 - dead, 3 - oxygen indicator, 4 - toxin indicator
|
|
handling_hal = 0
|
|
hal_crit = 0
|
|
|
|
mob/living/carbon/proc/handle_hallucinations()
|
|
if(handling_hal) return
|
|
handling_hal = 1
|
|
while(client && hallucination > 20)
|
|
sleep(rand(200,500)/(hallucination/25))
|
|
var/halpick = rand(1,100)
|
|
switch(halpick)
|
|
if(0 to 15)
|
|
//Screwy HUD
|
|
//src << "Screwy HUD"
|
|
hal_screwyhud = pick(1,2,3,3,4,4)
|
|
spawn(rand(100,250))
|
|
hal_screwyhud = 0
|
|
if(16 to 25)
|
|
//Strange items
|
|
//src << "Traitor Items"
|
|
if(!halitem)
|
|
halitem = new
|
|
var/list/slots_free = list(ui_lhand,ui_rhand)
|
|
if(l_hand) slots_free -= ui_lhand
|
|
if(r_hand) slots_free -= ui_rhand
|
|
if(istype(src,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = src
|
|
if(!H.belt) slots_free += ui_belt
|
|
if(!H.l_store) slots_free += ui_storage1
|
|
if(!H.r_store) slots_free += ui_storage2
|
|
if(slots_free.len)
|
|
halitem.screen_loc = pick(slots_free)
|
|
halitem.layer = 50
|
|
switch(rand(1,6))
|
|
if(1) //revolver
|
|
halitem.icon = 'icons/obj/gun.dmi'
|
|
halitem.icon_state = "revolver"
|
|
halitem.name = "Revolver"
|
|
if(2) //c4
|
|
halitem.icon = 'icons/obj/assemblies.dmi'
|
|
halitem.icon_state = "plastic-explosive0"
|
|
halitem.name = "Mysterious Package"
|
|
if(prob(25))
|
|
halitem.icon_state = "c4small_1"
|
|
if(3) //sword
|
|
halitem.icon = 'icons/obj/weapons.dmi'
|
|
halitem.icon_state = "sword1"
|
|
halitem.name = "Sword"
|
|
if(4) //stun baton
|
|
halitem.icon = 'icons/obj/weapons.dmi'
|
|
halitem.icon_state = "stunbaton"
|
|
halitem.name = "Stun Baton"
|
|
if(5) //emag
|
|
halitem.icon = 'icons/obj/card.dmi'
|
|
halitem.icon_state = "emag"
|
|
halitem.name = "Cryptographic Sequencer"
|
|
if(6) //flashbang
|
|
halitem.icon = 'icons/obj/grenade.dmi'
|
|
halitem.icon_state = "flashbang1"
|
|
halitem.name = "Flashbang"
|
|
if(client) client.screen += halitem
|
|
spawn(rand(100,250))
|
|
if(client)
|
|
client.screen -= halitem
|
|
halitem = null
|
|
if(26 to 40)
|
|
//Flashes of danger
|
|
//src << "Danger Flash"
|
|
if(!halimage)
|
|
var/list/possible_points = list()
|
|
for(var/turf/simulated/floor/F in view(src,world.view))
|
|
possible_points += F
|
|
if(possible_points.len)
|
|
var/turf/simulated/floor/target = pick(possible_points)
|
|
|
|
switch(rand(1,3))
|
|
if(1)
|
|
//src << "Space"
|
|
halimage = image('icons/turf/space.dmi',target,"[rand(1,25)]",TURF_LAYER)
|
|
if(2)
|
|
//src << "Fire"
|
|
halimage = image('icons/effects/fire.dmi',target,"1",TURF_LAYER)
|
|
if(3)
|
|
//src << "C4"
|
|
halimage = image('icons/obj/assemblies.dmi',target,"plastic-explosive2",OBJ_LAYER+0.01)
|
|
|
|
|
|
if(client) client.images += halimage
|
|
spawn(rand(10,50)) //Only seen for a brief moment.
|
|
if(client) client.images -= halimage
|
|
halimage = null
|
|
|
|
|
|
if(41 to 65)
|
|
//Strange audio
|
|
//src << "Strange Audio"
|
|
switch(rand(1,12))
|
|
if(1) src << 'sound/machines/airlock.ogg'
|
|
if(2)
|
|
if(prob(50))src << 'sound/effects/Explosion1.ogg'
|
|
else src << 'sound/effects/Explosion2.ogg'
|
|
if(3) src << 'sound/effects/explosionfar.ogg'
|
|
if(4) src << 'sound/effects/Glassbr1.ogg'
|
|
if(5) src << 'sound/effects/Glassbr2.ogg'
|
|
if(6) src << 'sound/effects/Glassbr3.ogg'
|
|
if(7) src << 'sound/machines/twobeep.ogg'
|
|
if(8) src << 'sound/machines/windowdoor.ogg'
|
|
if(9)
|
|
//To make it more realistic, I added two gunshots (enough to kill)
|
|
src << 'sound/weapons/Gunshot.ogg'
|
|
spawn(rand(10,30))
|
|
src << 'sound/weapons/Gunshot.ogg'
|
|
if(10) src << 'sound/weapons/smash.ogg'
|
|
if(11)
|
|
//Same as above, but with tasers.
|
|
src << 'sound/weapons/Taser.ogg'
|
|
spawn(rand(10,30))
|
|
src << 'sound/weapons/Taser.ogg'
|
|
//Rare audio
|
|
if(12)
|
|
//These sounds are (mostly) taken from Hidden: Source
|
|
var/list/creepyasssounds = list('sound/effects/ghost.ogg', 'sound/effects/ghost2.ogg', 'sound/effects/Heart Beat.ogg', 'sound/effects/screech.ogg',\
|
|
'sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', 'sound/hallucinations/far_noise.ogg', 'sound/hallucinations/growl1.ogg', 'sound/hallucinations/growl2.ogg',\
|
|
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
|
|
'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\
|
|
'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg')
|
|
src << pick(creepyasssounds)
|
|
if(66 to 70)
|
|
//Flashes of danger
|
|
//src << "Danger Flash"
|
|
if(!halbody)
|
|
var/list/possible_points = list()
|
|
for(var/turf/simulated/floor/F in view(src,world.view))
|
|
possible_points += F
|
|
if(possible_points.len)
|
|
var/turf/simulated/floor/target = pick(possible_points)
|
|
switch(rand(1,4))
|
|
if(1)
|
|
halbody = image('icons/mob/human.dmi',target,"husk_l",TURF_LAYER)
|
|
if(2,3)
|
|
halbody = image('icons/mob/human.dmi',target,"husk_s",TURF_LAYER)
|
|
if(4)
|
|
halbody = image('icons/mob/alien.dmi',target,"alienother",TURF_LAYER)
|
|
// if(5)
|
|
// halbody = image('xcomalien.dmi',target,"chryssalid",TURF_LAYER)
|
|
|
|
if(client) client.images += halbody
|
|
spawn(rand(50,80)) //Only seen for a brief moment.
|
|
if(client) client.images -= halbody
|
|
halbody = null
|
|
if(71 to 72)
|
|
//Fake death
|
|
// src.sleeping_willingly = 1
|
|
src.sleeping = 20
|
|
hal_crit = 1
|
|
hal_screwyhud = 1
|
|
spawn(rand(50,100))
|
|
// src.sleeping_willingly = 0
|
|
src.sleeping = 0
|
|
hal_crit = 0
|
|
hal_screwyhud = 0
|
|
handling_hal = 0
|
|
|
|
|
|
|
|
|
|
/*obj/machinery/proc/mockpanel(list/buttons,start_txt,end_txt,list/mid_txts)
|
|
|
|
if(!mocktxt)
|
|
|
|
mocktxt = ""
|
|
|
|
var/possible_txt = list("Launch Escape Pods","Self-Destruct Sequence","\[Swipe ID\]","De-Monkify",\
|
|
"Reticulate Splines","Plasma","Open Valve","Lockdown","Nerf Airflow","Kill Traitor","Nihilism",\
|
|
"OBJECTION!","Arrest Stephen Bowman","Engage Anti-Trenna Defenses","Increase Captain IQ","Retrieve Arms",\
|
|
"Play Charades","Oxygen","Inject BeAcOs","Ninja Lizards","Limit Break","Build Sentry")
|
|
|
|
if(mid_txts)
|
|
while(mid_txts.len)
|
|
var/mid_txt = pick(mid_txts)
|
|
mocktxt += mid_txt
|
|
mid_txts -= mid_txt
|
|
|
|
while(buttons.len)
|
|
|
|
var/button = pick(buttons)
|
|
|
|
var/button_txt = pick(possible_txt)
|
|
|
|
mocktxt += "<a href='?src=\ref[src];[button]'>[button_txt]</a><br>"
|
|
|
|
buttons -= button
|
|
possible_txt -= button_txt
|
|
|
|
return start_txt + mocktxt + end_txt + "</TT></BODY></HTML>"
|
|
|
|
proc/check_panel(mob/M)
|
|
if (istype(M, /mob/living/carbon/human) || istype(M, /mob/living/silicon/ai))
|
|
if(M.hallucination < 15)
|
|
return 1
|
|
return 0*/
|
|
|
|
/obj/effect/fake_attacker
|
|
icon = null
|
|
icon_state = null
|
|
name = ""
|
|
desc = ""
|
|
density = 0
|
|
anchored = 1
|
|
opacity = 0
|
|
var/mob/living/carbon/human/my_target = null
|
|
var/weapon_name = null
|
|
var/obj/item/weap = null
|
|
var/image/stand_icon = null
|
|
var/image/currentimage = null
|
|
var/icon/base = null
|
|
var/s_tone
|
|
var/mob/living/clone = null
|
|
var/image/left
|
|
var/image/right
|
|
var/image/up
|
|
var/collapse
|
|
var/image/down
|
|
|
|
var/health = 100
|
|
|
|
attackby(var/obj/item/weapon/P as obj, mob/user as mob)
|
|
step_away(src,my_target,2)
|
|
for(var/mob/M in oviewers(world.view,my_target))
|
|
M << "\red <B>[my_target] flails around wildly.</B>"
|
|
my_target.show_message("\red <B>[src] has been attacked by [my_target] </B>", 1) //Lazy.
|
|
|
|
src.health -= P.force
|
|
|
|
|
|
return
|
|
|
|
Crossed(var/mob/M, somenumber)
|
|
if(M == my_target)
|
|
step_away(src,my_target,2)
|
|
if(prob(30))
|
|
for(var/mob/O in oviewers(world.view , my_target))
|
|
O << "\red <B>[my_target] stumbles around.</B>"
|
|
|
|
New()
|
|
..()
|
|
addtimer(CALLBACK(src, .proc/end), 300)
|
|
step_away(src,my_target,2)
|
|
spawn attack_loop()
|
|
|
|
proc/end()
|
|
if (my_target)
|
|
my_target.hallucinations -= src
|
|
|
|
walk(src, 0)
|
|
qdel(src)
|
|
|
|
proc/updateimage()
|
|
if(src.dir == NORTH)
|
|
del currentimage // Can't qdel images.
|
|
src.currentimage = new /image(up,src)
|
|
else if(src.dir == SOUTH)
|
|
del currentimage
|
|
src.currentimage = new /image(down,src)
|
|
else if(src.dir == EAST)
|
|
del currentimage
|
|
src.currentimage = new /image(right,src)
|
|
else if(src.dir == WEST)
|
|
del currentimage
|
|
src.currentimage = new /image(left,src)
|
|
my_target << currentimage
|
|
|
|
proc/attack_loop()
|
|
while(!QDELETED(src))
|
|
sleep(rand(5,10))
|
|
if(src.health < 0)
|
|
collapse()
|
|
continue
|
|
if(get_dist(src,my_target) > 1)
|
|
src.set_dir(get_dir(src,my_target))
|
|
step_towards(src,my_target)
|
|
updateimage()
|
|
else
|
|
if(prob(15))
|
|
if(weapon_name)
|
|
my_target << sound(pick('sound/weapons/genhit1.ogg', 'sound/weapons/genhit2.ogg', 'sound/weapons/genhit3.ogg'))
|
|
my_target.show_message("\red <B>[my_target] has been attacked with [weapon_name] by [src.name] </B>", 1)
|
|
my_target.halloss += 8
|
|
if(prob(20)) my_target.eye_blurry += 3
|
|
if(prob(33))
|
|
if(!locate(/obj/effect/overlay) in my_target.loc)
|
|
fake_blood(my_target)
|
|
else
|
|
my_target << sound(pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg'))
|
|
my_target.show_message("\red <B>[src.name] has punched [my_target]!</B>", 1)
|
|
my_target.halloss += 4
|
|
if(prob(33))
|
|
if(!locate(/obj/effect/overlay) in my_target.loc)
|
|
fake_blood(my_target)
|
|
|
|
if(prob(15))
|
|
step_away(src,my_target,2)
|
|
|
|
proc/collapse()
|
|
collapse = 1
|
|
updateimage()
|
|
|
|
/proc/fake_blood(var/mob/target)
|
|
var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc)
|
|
O.name = "blood"
|
|
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
|
|
target << I
|
|
QDEL_IN(O, 300)
|
|
|
|
var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/a357,\
|
|
/obj/item/weapon/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\
|
|
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
|
|
/obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
|
|
/obj/item/clothing/shoes/syndigaloshes, /obj/item/weapon/card/id/syndicate,\
|
|
/obj/item/clothing/mask/gas/voice, /obj/item/clothing/glasses/thermal,\
|
|
/obj/item/device/chameleon, /obj/item/weapon/card/emag,\
|
|
/obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/aiModule,\
|
|
/obj/item/device/radio/headset/syndicate, /obj/item/weapon/plastique,\
|
|
/obj/item/device/powersink, /obj/item/weapon/storage/box/syndie_kit,\
|
|
/obj/item/toy/syndicateballoon, /obj/item/weapon/gun/energy/captain,\
|
|
/obj/item/weapon/hand_tele, /obj/item/weapon/rcd, /obj/item/weapon/tank/jetpack,\
|
|
/obj/item/clothing/under/rank/captain, /obj/item/weapon/aicard,\
|
|
/obj/item/clothing/shoes/magboots, /obj/item/blueprints, /obj/item/weapon/disk/nuclear,\
|
|
/obj/item/clothing/suit/space/void, /obj/item/weapon/tank)
|
|
|
|
/proc/fake_attack(var/mob/living/target)
|
|
// var/list/possible_clones = new/list()
|
|
var/mob/living/carbon/human/clone = null
|
|
var/clone_weapon = null
|
|
|
|
for(var/mob/living/carbon/human/H in living_mob_list)
|
|
if(H.stat || H.lying) continue
|
|
// possible_clones += H
|
|
clone = H
|
|
break //changed the code a bit. Less randomised, but less work to do. Should be ok, world.contents aren't stored in any particular order.
|
|
|
|
// if(!possible_clones.len) return
|
|
// clone = pick(possible_clones)
|
|
if(!clone) return
|
|
|
|
//var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(outside_range(target))
|
|
var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(target.loc)
|
|
if(clone.l_hand)
|
|
if(!(locate(clone.l_hand) in non_fakeattack_weapons))
|
|
clone_weapon = clone.l_hand.name
|
|
F.weap = clone.l_hand
|
|
else if (clone.r_hand)
|
|
if(!(locate(clone.r_hand) in non_fakeattack_weapons))
|
|
clone_weapon = clone.r_hand.name
|
|
F.weap = clone.r_hand
|
|
|
|
F.name = clone.name
|
|
F.my_target = target
|
|
F.weapon_name = clone_weapon
|
|
target.hallucinations += F
|
|
|
|
|
|
F.left = image(clone,dir = WEST)
|
|
F.right = image(clone,dir = EAST)
|
|
F.up = image(clone,dir = NORTH)
|
|
F.down = image(clone,dir = SOUTH)
|
|
|
|
// F.base = new /icon(clone.stand_icon)
|
|
// F.currentimage = new /image(clone)
|
|
|
|
/*
|
|
|
|
|
|
|
|
F.left = new /icon(clone.stand_icon,dir=WEST)
|
|
for(var/icon/i in clone.overlays)
|
|
F.left.Blend(i)
|
|
F.up = new /icon(clone.stand_icon,dir=NORTH)
|
|
for(var/icon/i in clone.overlays)
|
|
F.up.Blend(i)
|
|
F.down = new /icon(clone.stand_icon,dir=SOUTH)
|
|
for(var/icon/i in clone.overlays)
|
|
F.down.Blend(i)
|
|
F.right = new /icon(clone.stand_icon,dir=EAST)
|
|
for(var/icon/i in clone.overlays)
|
|
F.right.Blend(i)
|
|
|
|
target << F.up
|
|
*/
|
|
|
|
F.updateimage()
|