- 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