- renamed the eye_stat var to eye_damage.
- mob/on_varedit() added. Manually var editing a mob's eye_blind var properly updates his vision.
- I removed update_vision_overlays(), we now just update the relevant fullscreens instead of all fullscreens whenever one needs to be updated.
- fixed climbing into mecha not giving you mecha sight.
- simplified and removed copypasta from update_tinttotal() (now update_tint() )
- I renamed some vars of datum/hud to be more selfexplanatory
- Moved all datum/hud mob code into the hud folder.
- fixed alien's zone selection button not using the correct sprites.
- I removed the update_hud() proc (that needed to be removed).
- Fixed a typo in /mob/living/carbon/ContractDisease , using "internals" instead of "internal" (very different things)
- Fixed doTeleport() calling Entered() twice on the destination area.
- To reference a mob's selected zone, you now use a direct mob var ("H.zone_selected" instead of "H.zone_sel.selecting")
- mobs lose certain screen objects var ("healths", "zone_sel", "internals", etc) which are now vars of the mob's datum/hud instead.
- the Blind spell is now done via the blind mutation instead of the blind disabilities.
- Give to mobs a version of forceMove(), so the mob is always properly unbuckled, his pull stopped, his vision updated, etc.
- The "user" var of mob/camera/aiEye/remote is renamed to "eye_user" to avoid confusion.
- reset_view() is replaced by reset_perspective(). Now all changes to client.eye and client.perspective are done with this proc.
- I reworked /obj/machinery/computer/security code, changing camera is instantaneous now, as well as cancelling.
- I reworked /obj/machinery/computer/camera_advanced code as well.
- I changed /obj/item/mecha_parts/mecha_equipment/mining_scanner's meson view to be constant instead of by intermittent.
- Fixes not being able to use /obj/item/device/camera_bug while buckled.
- removed admin_forcemove() proc, admin force moving now uses forceMove() simply.
- Removed the client var "adminobs"
- Added var/vision_correction to glasses.
- Added a thermal_overload() proc for glasses, to remove copypasta in emp_act code.
- Remove the hal_crit mob var
- We no longer delete the mob's hud everytime he logs in.
- Added a stat == dead check in mob's metabolize() so we immediately stop metabolizing if one of the chem kills the mob.
- Being inside disposal bin lowers your vision, like wearing a welding helmet.
- removed the remote_view mob var.
- I changed advanced camera EYE, some fixes, removed unnecessary code when the eye moves, now the mob client eye properly follows the camera mob.
- fixes mob var "machine" not being nullified on logout.
- larva/death() was calling two "living_mob_list -= src"
- I made the Blind screen objects into a global_hud instead of giving one to each mob (like damage overlay).
- I untied tint and eye_blind, TINT_BLIND doesn't give you eye_blind=1.
- gave a visual overlay when inside locker (vimpaired)
- when inside disposal/gas pipes you get sight |= (BLIND|SEE_TURFS)
- glasses toggling updates (atmos meson toggle): DONE
- The new adjust procs serve to properly change eye_blind etc and call vision update procs when needed.
- I added an on_unset_machine() proc to handle perspective reset for camera consoles.
- I moved consequences of eye_check fail inside eye_check() procs themselves.
- I fixed vision updates being fucked by forceMove, especially pipe vision.
- I decided that damage overlay not appearing when dead.
- mob's hud_used is no longer deleted on each login()
- I refactored mob huds a bit, creating subtypes for each mob (/datum/hud/human)
- f12's hud toggling is now available to all mobs
- gave borgs a low_power_mode var so unpowered borg do not use stat= UNCONSCIOUS (which made things weird since you were unconscious but not blind)
- Fixed double Area entering when forced teleporting.
- I fixed larva pulling not being broken when cuffing them, and larva not seeing handcuff alert (and they can resist by clicking it)
- I removed pull updates from life() since it onyl checked for puller's incapacitation.
- I renamed camera/deactivate() to toggle_cam() to be more accurate.
- I fixed mmi brain being immortal (by removing the brain and putting it back)
- I simplified mmi brain emp damage.
- Fixes round-end message always declaring both gangs lost
- 3gang is now twice as likely to appear
- Purchased spray cans will always be the gang's color
- Bosses can now summon their gangsters to a location with the gangtool
- Gangtools cannot recall the shuttle if the station is too damaged (<70% Integrity)
- Fixed SSshuttle.emergencyLastCallLoc not being handled or stored properly. Fukken Carn breaking my shuttle features.
- Fixed a potential injection exploit in gangtool's can_use()
- Jobbanned players cannot be promoted
I'm quite satisfied in the current state of gang and I feel that I no longer have any more significant changes to make. Gang 5.1 includes primarily minor tweaks.
- Goal reduced back down to 50%
- Boss icon made more obvious. They're now red Gs
- Better descriptions for distributing spraycans and victory conditions
- Lieutenants receive objectives now
- Increased spraycan use to 20
- Poseur tags no longer pick gang B's tag
**Major Changes**
- Increased win condition to require 66%
- Added a switchblade. A relatively cheap and decently robust melee weapon for gangsters.
- Capped how much influence you can get every income at 50
- Limited gang spraycan use to 15
- Pistol cost increased to 30 Influence
- Promotion cost now scales to how many bosses you already have. The more bosses, the more expensive it will be. It starts off cheap at 20 influence now.
**Minor Changes**
- Tagging a territory now tells you what territory you actually tagged!
- Added an option to silence the verbose territorial updates you get from gangtools
- Capped how much influence you can get every income at 50
- Updated Centcom report on gangs
- Spraycans always show their inhands now, instead of only when uncapped
- Antag panel now shows how much influence each gang has
- Cleaned up gang code in the traitor panel
- Fixed non-gangers getting gang messages when trying to spray on an invalid territory
- Gang mode changelog
- Recruitment doesn't cause an obvious seizure any more
- Removed reduced usage on territory spraycans
- Spraycans will notify you if the area you are spraying at is not a valid one for tagging
The coding isn't done yet, but the design is. So comment on the design while I smooth out the code.
tldr; Gang mode rewrite to follow my original vision: Slower and longer rounds with less deathmatching, and a resource both teams have to fight over
NEW OBJECTIVE: CLAIM HALF THE STATION AS TERRITORY
- Gang bosses can spawn special spray cans that can be used to tag areas
- Any gang member can tag areas.
- Gang tags must be removed before another one is placed in the same area
- Game mode no longer automatically ends when the boss dies. It now ends when either the station evacs, or one gang claims more than 50% of the station areas
- Boss can promote gangers into his lieutenants, which basically means adding more bosses
- Lieutenants can do anything bosses can except promote others to lieutenant
NEW RECRUITMENT TOOL: PENS
- Recruitment pens replace flashes
- Looks exactly like a pen. Stab people to recruit them.
- Recruitment is silent but obvious to the perceptive (Causes a brief seizure)
- Cooldown between uses that gets longer as the gang gets larger
NEW TOOL: GANGTOOL
- Replaces the recaller device. Can still recall the shuttle.
- Provides overview information about the gang (membership size, income amount and time)
- Can spawn pistols and ammo
- Can spawn additional recruitment pens
- Can spawn additional gangtools (For personal use, or promoting a single ganger to lieutenant)
NEW CURRENCY SYSTEM: NAME IS WIP
- Gangtools purchase items with new currency with the placeholder name "Supply Points (SP)"
- Supply points are collected every 5 minutes. The more territory a gang has claimed, the more points they get.
- Supply points are accumulated per-gang. Having more gangtools does not intrinsically give you more points to use.
* Fixes Spraycans being used at a range
* Fixes Spraycans not consuming ammo when used as a stun.
* Changes the stun mechanic, so people with eye protection are only blinded, without it they are stunned fully.
* Changes Spraycans and lipstick to use a fully tintable overlay.
* Lipstick now comes in more colors and (codewise) can be changed with one var.
* Spraycans now color the face overlay correctly, racism for everyone!
Works pretty well. If it can't GC something, it'll just del() it and be done.
Speed is amazing, holy shit.
New procs you should be aware of:
qdel(atom/movable) - sets up an object for garbage collection. Call this rather than del(atom/movable).
atom/movable/Destroy() - called right before the object is GC'd, so it still has a loc. Also called if the object is del()'d.
new controller - garbage.dm has all the details on this. Basically it nulls all references on GC'd objects and force del() them if necessary.
Generally speaking, objects should use Destroy() for behavior prior to deletion rather than Del(). You should also always call the parent so the object gets the right gc_destroyed var set.
ISSUES:
Tries to GC mobs atm. This actually works for new players, not so much for humans/monkies/simple_animals/anything. I'm guessing it needs to clear out their mind and HUD and maybe other things.
Gibbing is really bugged. It works, but the overlays just sit there for awhile and ugh. I'm very tempted just to del() mob/living and mob/camera and call it a day.
qdel() equipment doesn't unequip the item.
Pipes don't generally GC correctly. Debugging suggests they get referenced in many pipenets and that isn't cleared properly. However some do work fine. Need assistance here.
Bots don't GC, probably in the radio controller.
Lots of other shit doesn't GC but it's hard to find them because of the pipe spam.
I think I'm calling Destroy() twice by accident.
Adjusts the click code to not use client/Click(). The code is largely unchanged, except that it allows the compiler default behaviour of calling atom/Click(), and then forwards the call to mob/ClickOn(). I had some reports that melee combat mixed with movement was behaving oddly, and I believe it may be due to the use of client/Click; the byond documentation says that redefining client/Click() causes additional overhead, and it isn't strictly necessary.
Alters the way double clicks are handled, in an attempt to better handle clickspam, as often occurs during pitched combat. This may also be responsible for the above, but I don't know.
Inserts proximity (aka flag) checks in all afterattack() procs. The old assumption was that unless an item used the USEDELAY flag, afterattack() was only called when adjacent, but this is no longer true. This led to beakers, soap, crayons, etc, all being usable at all ranges.
Removes the NODELAY flag, which was unused. Removes all existing uses of the USEDELAY flag so that it can be readded to things that need extra delay.
Removes the hand_* procs, previously used by restrained actions. Instead, the mob helper mob/RestrainedClickOn() has abosrbed basically all the functionality they were used for, which is really only monkeys with jungle fever.
Adds a special case of the Adjacency() proc for doors. This fixes#136, airlocks being unreachable due to border fire doors. However, this only takes us back to the unpleasant position where you have to open-hand the door, switch to a crowbar, and pry open the firedoor; it still needs a better fix.
Modifies Adjacent() for items, to allow items to be accessed properly inside each other and the user. This fixes a few bugs seen in testing.
Sets a maximum telekinesis range (in case you were using cameras).
The telekinetic grab now does nothing at all in melee combat. This prevents double messages where you attack them with the object telekinetically, and then also attack them with the telekinetic grab.
Crayons had a bug where they were drawing at all distances. This is because in old click code, afterattack() only happened at range when you had the USE_DELAY flag, which is no longer true. Proper behavior is to use parameter 3 (proximity_flag), which is 1 when adjacent or 0 if inaccessible.
- The folders themselves are now finished
- Next I'll go through each file and organize them
- Lastly I'll start pulling the object definitions out of /code/defines/ and put them into their respective files.
**Note to committers**
Make sure the .dme file updates when you update to this revision. If necessary delete the .dme and svn-update.
git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4546 316c924e-a436-60f5-8080-3fe189b3f50e