mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge remote-tracking branch 'upstream/master' into GAMEMODE_CODE_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Conflicts: code/game/gamemodes/objective.dm
This commit is contained in:
@@ -1,127 +0,0 @@
|
||||
/*
|
||||
/obj/effect/biomass
|
||||
icon = 'icons/obj/biomass.dmi'
|
||||
icon_state = "stage1"
|
||||
opacity = 0
|
||||
density = 0
|
||||
anchored = 1
|
||||
layer = 20 //DEBUG
|
||||
plane = HUD_PLANE //DEBUG
|
||||
var/health = 10
|
||||
var/stage = 1
|
||||
var/obj/effect/rift/originalRift = null //the originating rift of that biomass
|
||||
var/maxDistance = 15 //the maximum length of a thread
|
||||
var/newSpreadDistance = 10 //the length of a thread at which new ones are created
|
||||
var/curDistance = 1 //the current length of a thread
|
||||
var/continueChance = 3 //weighed chance of continuing in the same direction. turning left or right has 1 weight both
|
||||
var/spreadDelay = 1 //will change to something bigger later, but right now I want it to spread as fast as possible for testing
|
||||
|
||||
/obj/effect/rift
|
||||
icon = 'icons/obj/biomass.dmi'
|
||||
icon_state = "rift"
|
||||
var/list/obj/effect/biomass/linkedBiomass = list() //all the biomass patches that have spread from it
|
||||
var/newicon = 1 //DEBUG
|
||||
|
||||
/obj/effect/rift/New()
|
||||
set background = 1
|
||||
|
||||
..()
|
||||
|
||||
for(var/turf/T in orange(1,src))
|
||||
if(!IsValidBiomassLoc(T))
|
||||
continue
|
||||
var/obj/effect/biomass/starting = new /obj/effect/biomass(T)
|
||||
starting.dir = get_dir(src,starting)
|
||||
starting.originalRift = src
|
||||
linkedBiomass += starting
|
||||
spawn(1) //DEBUG
|
||||
starting.icon_state = "[newicon]"
|
||||
|
||||
/obj/effect/rift/Del()
|
||||
for(var/obj/effect/biomass/biomass in linkedBiomass)
|
||||
del(biomass)
|
||||
..()
|
||||
|
||||
/obj/effect/biomass/New()
|
||||
set background = 1
|
||||
|
||||
..()
|
||||
if(!IsValidBiomassLoc(loc,src))
|
||||
del(src)
|
||||
return
|
||||
spawn(1) //so that the dir and stuff can be set by the source first
|
||||
if(curDistance >= maxDistance)
|
||||
return
|
||||
switch(dir)
|
||||
if(NORTHWEST)
|
||||
dir = NORTH
|
||||
if(NORTHEAST)
|
||||
dir = EAST
|
||||
if(SOUTHWEST)
|
||||
dir = WEST
|
||||
if(SOUTHEAST)
|
||||
dir = SOUTH
|
||||
sleep(spreadDelay)
|
||||
Spread()
|
||||
|
||||
/obj/effect/biomass/proc/Spread(var/direction = dir)
|
||||
set background = 1
|
||||
var/possibleDirsInt = 0
|
||||
|
||||
for(var/newDirection in cardinal)
|
||||
if(newDirection == turn(direction,180)) //can't go backwards
|
||||
continue
|
||||
var/turf/T = get_step(loc,newDirection)
|
||||
if(!IsValidBiomassLoc(T,src))
|
||||
continue
|
||||
possibleDirsInt |= newDirection
|
||||
|
||||
var/list/possibleDirs = list()
|
||||
|
||||
if(possibleDirsInt & direction)
|
||||
for(var/i=0 , i<continueChance , i++)
|
||||
possibleDirs += direction
|
||||
if(possibleDirsInt & turn(direction,90))
|
||||
possibleDirs += turn(direction,90)
|
||||
if(possibleDirsInt & turn(direction,-90))
|
||||
possibleDirs += turn(direction,-90)
|
||||
|
||||
if(!possibleDirs.len)
|
||||
return
|
||||
|
||||
direction = pick(possibleDirs)
|
||||
|
||||
var/obj/effect/biomass/newBiomass = new /obj/effect/biomass(get_step(src,direction))
|
||||
newBiomass.curDistance = curDistance + 1
|
||||
newBiomass.maxDistance = maxDistance
|
||||
newBiomass.dir = direction
|
||||
newBiomass.originalRift = originalRift
|
||||
newBiomass.icon_state = "[originalRift.newicon]" //DEBUG
|
||||
originalRift.linkedBiomass += newBiomass
|
||||
|
||||
if(!(curDistance%newSpreadDistance))
|
||||
var/obj/effect/rift/newrift = new /obj/effect/rift(loc)
|
||||
if(originalRift.newicon <= 3)
|
||||
newrift.newicon = originalRift.newicon + 1
|
||||
// NewSpread()
|
||||
|
||||
/obj/effect/biomass/proc/NewSpread(maxDistance = 15)
|
||||
set background = 1
|
||||
for(var/turf/T in orange(1,src))
|
||||
if(!IsValidBiomassLoc(T,src))
|
||||
continue
|
||||
var/obj/effect/biomass/starting = new /obj/effect/biomass(T)
|
||||
starting.dir = get_dir(src,starting)
|
||||
starting.maxDistance = maxDistance
|
||||
|
||||
/proc/IsValidBiomassLoc(turf/location,obj/effect/biomass/source = null)
|
||||
set background = 1
|
||||
for(var/obj/effect/biomass/biomass in location)
|
||||
if(biomass != source)
|
||||
return 0
|
||||
if(istype(location,/turf/space))
|
||||
return 0
|
||||
if(location.density)
|
||||
return 0
|
||||
return 1
|
||||
*/
|
||||
@@ -673,7 +673,7 @@ steam.start() -- spawns the effect
|
||||
for(var/mob/living/carbon/human/R in get_turf(src))
|
||||
if(R.internal != null && usr.wear_mask && (R.wear_mask.flags & AIRTIGHT) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/storage/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
|
||||
else
|
||||
R.burn_skin(0.75)
|
||||
R.adjustFireLoss(0.75)
|
||||
if(R.coughedtime != 1)
|
||||
R.coughedtime = 1
|
||||
R.emote("gasp")
|
||||
@@ -687,7 +687,7 @@ steam.start() -- spawns the effect
|
||||
if(istype(R, /mob/living/carbon/human))
|
||||
if(R.internal != null && usr.wear_mask && (R.wear_mask.flags & AIRTIGHT) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/storage/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor)))
|
||||
return
|
||||
R.burn_skin(0.75)
|
||||
R.adjustFireLoss(0.75)
|
||||
if(R.coughedtime != 1)
|
||||
R.coughedtime = 1
|
||||
R.emote("gasp")
|
||||
|
||||
@@ -18,6 +18,12 @@
|
||||
ID = new /obj/item/weapon/card/id
|
||||
ID.access = get_region_accesses(region_access)
|
||||
|
||||
/obj/item/weapon/door_remote/Destroy()
|
||||
if(ID)
|
||||
qdel(ID)
|
||||
ID = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/door_remote/attack_self(mob/user)
|
||||
switch(mode)
|
||||
if(WAND_OPEN)
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
w_class = 2 //Increased to 2, because diodes are w_class 2. Conservation of matter.
|
||||
origin_tech = "combat=1"
|
||||
origin_tech = "magnets=2"
|
||||
var/turf/pointer_loc
|
||||
var/energy = 5
|
||||
var/max_energy = 5
|
||||
var/effectchance = 33
|
||||
@@ -35,6 +34,12 @@
|
||||
if(!pointer_icon_state)
|
||||
pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser")
|
||||
|
||||
/obj/item/device/laser_pointer/Destroy()
|
||||
if(diode)
|
||||
qdel(diode)
|
||||
diode = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/laser_pointer/upgraded/New()
|
||||
..()
|
||||
diode = new /obj/item/weapon/stock_parts/micro_laser/ultra
|
||||
|
||||
@@ -24,9 +24,13 @@
|
||||
overlays += "pai-off"
|
||||
|
||||
/obj/item/device/paicard/Destroy()
|
||||
//Will stop people throwing friend pAIs into the singularity so they can respawn
|
||||
if(!isnull(pai))
|
||||
pai.death(0)
|
||||
if(pai)
|
||||
pai.ghostize()
|
||||
qdel(pai)
|
||||
pai = null
|
||||
if(radio)
|
||||
qdel(radio)
|
||||
radio = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/paicard/attack_self(mob/user)
|
||||
|
||||
@@ -20,6 +20,12 @@
|
||||
mytape = new /obj/item/device/tape/random(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/device/taperecorder/Destroy()
|
||||
if(mytape)
|
||||
qdel(mytape)
|
||||
mytape = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/taperecorder/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
to_chat(user, "The wire panel is [open_panel ? "opened" : "closed"].")
|
||||
@@ -283,7 +289,8 @@
|
||||
timestamp.Cut()
|
||||
|
||||
/obj/item/device/tape/proc/ruin()
|
||||
overlays += "ribbonoverlay"
|
||||
if(!ruined)
|
||||
overlays += "ribbonoverlay"
|
||||
ruined = 1
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,18 @@
|
||||
var/toggle = 1
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
|
||||
/obj/item/device/transfer_valve/Destroy()
|
||||
if(tank_one)
|
||||
qdel(tank_one)
|
||||
tank_one = null
|
||||
if(tank_two)
|
||||
qdel(tank_two)
|
||||
tank_two = null
|
||||
if(attached_device)
|
||||
qdel(attached_device)
|
||||
attached_device = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
|
||||
|
||||
/obj/item/device/transfer_valve/IsAssemblyHolder()
|
||||
|
||||
@@ -11,6 +11,12 @@
|
||||
var/state
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
|
||||
/obj/item/latexballon/Destroy()
|
||||
if(air_contents)
|
||||
qdel(air_contents)
|
||||
air_contents = null
|
||||
return ..()
|
||||
|
||||
/obj/item/latexballon/proc/blow(obj/item/weapon/tank/tank, mob/user)
|
||||
if(icon_state == "latexballon_bursted")
|
||||
return
|
||||
|
||||
@@ -16,6 +16,14 @@
|
||||
var/list/loadedItems = list() //The items loaded into the cannon that will be fired out
|
||||
var/pressureSetting = 1 //How powerful the cannon is - higher pressure = more gas but more powerful throws
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/Destroy()
|
||||
if(tank)
|
||||
qdel(tank)
|
||||
tank = null
|
||||
for(var/obj/item/I in loadedItems)
|
||||
qdel(I)
|
||||
loadedItems.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/pneumatic_cannon/examine(mob/user)
|
||||
..()
|
||||
|
||||
@@ -276,8 +276,8 @@
|
||||
slowdown = 1
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie
|
||||
name = "suspicious looking dufflebag"
|
||||
desc = "A large dufflebag for holding extra tactical supplies."
|
||||
name = "suspicious looking duffelbag"
|
||||
desc = "A large duffelbag for holding extra tactical supplies."
|
||||
icon_state = "duffel-syndi"
|
||||
item_state = "duffel-syndimed"
|
||||
origin_tech = "syndicate=1"
|
||||
@@ -297,7 +297,7 @@
|
||||
item_state = "duffel-syndiammo"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded
|
||||
desc = "A large dufflebag, packed to the brim with Bulldog shotgun ammo."
|
||||
desc = "A large duffelbag, packed to the brim with Bulldog shotgun ammo."
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/ammo/loaded/New()
|
||||
..()
|
||||
@@ -312,10 +312,10 @@
|
||||
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery
|
||||
name = "surgery dufflebag"
|
||||
desc = "A suspicious looking dufflebag for holding surgery tools."
|
||||
name = "surgery duffelbag"
|
||||
desc = "A suspicious looking duffelbag for holding surgery tools."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffle-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery/New()
|
||||
..()
|
||||
@@ -333,10 +333,10 @@
|
||||
new /obj/item/device/mmi/syndie(src)
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery_fake //for maint spawns
|
||||
name = "surgery dufflebag"
|
||||
desc = "A suspicious looking dufflebag for holding surgery tools."
|
||||
name = "surgery duffelbag"
|
||||
desc = "A suspicious looking duffelbag for holding surgery tools."
|
||||
icon_state = "duffel-syndimed"
|
||||
item_state = "duffle-syndimed"
|
||||
item_state = "duffel-syndimed"
|
||||
|
||||
/obj/item/weapon/storage/backpack/duffel/syndie/surgery_fake/New()
|
||||
..()
|
||||
|
||||
@@ -23,6 +23,12 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/Destroy()
|
||||
if(bcell)
|
||||
qdel(bcell)
|
||||
bcell = null
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/melee/baton/CheckParts(list/parts_list)
|
||||
..()
|
||||
bcell = locate(/obj/item/weapon/stock_parts/cell) in contents
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
/obj/item/weapon/tank/Destroy()
|
||||
if(air_contents)
|
||||
qdel(air_contents)
|
||||
air_contents = null
|
||||
|
||||
processing_objects.Remove(src)
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
if(get_dist(src,user) > 1)
|
||||
return 0
|
||||
if(H != null)
|
||||
user.visible_message("<span class='notice'>[src.name] is too cumbersome to carry in one hand!</span>")
|
||||
to_chat(user, "<span class='notice'>[src.name] is too cumbersome to carry in one hand!</span>")
|
||||
return
|
||||
var/obj/item/weapon/twohanded/offhand/O = new(user)
|
||||
user.put_in_inactive_hand(O)
|
||||
@@ -693,7 +693,7 @@
|
||||
Z.ex_act(2)
|
||||
charged = 3
|
||||
playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
|
||||
|
||||
|
||||
// Energized Fire axe
|
||||
/obj/item/weapon/twohanded/energizedfireaxe
|
||||
name = "energized fire axe"
|
||||
@@ -711,7 +711,7 @@
|
||||
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
var/charged = 1
|
||||
|
||||
|
||||
/obj/item/weapon/twohanded/energizedfireaxe/update_icon()
|
||||
if(wielded)
|
||||
icon_state = "fireaxe2"
|
||||
@@ -719,7 +719,7 @@
|
||||
icon_state = "fireaxe0"
|
||||
|
||||
/obj/item/weapon/twohanded/energizedfireaxe/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(wielded)
|
||||
if(istype(A, /mob/living))
|
||||
@@ -732,7 +732,7 @@
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/effect/system/spark_spread
|
||||
sparks.set_up(1, 1, src)
|
||||
sparks.start()
|
||||
|
||||
|
||||
if(A && wielded && (istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)))
|
||||
if(istype(A, /obj/structure/window))
|
||||
var/obj/structure/window/W = A
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
icon_opened = "coffin_open"
|
||||
burn_state = FLAMMABLE
|
||||
burntime = 20
|
||||
material_drop = /obj/item/stack/sheet/wood
|
||||
|
||||
/obj/structure/closet/coffin/update_icon()
|
||||
if(!opened)
|
||||
@@ -18,4 +19,5 @@
|
||||
icon_state = "sarc"
|
||||
icon_closed = "sarc"
|
||||
icon_opened = "sarc_open"
|
||||
sound = 'sound/effects/stonedoor_openclose.ogg'
|
||||
sound = 'sound/effects/stonedoor_openclose.ogg'
|
||||
material_drop = /obj/item/stack/sheet/mineral/sandstone
|
||||
@@ -117,12 +117,12 @@
|
||||
/obj/structure/closet/secure_closet/atmos_personal
|
||||
name = "technician's locker"
|
||||
req_access = list(access_atmospherics)
|
||||
icon_state = "secureeng1"
|
||||
icon_closed = "secureeng"
|
||||
icon_locked = "secureeng1"
|
||||
icon_opened = "secureengopen"
|
||||
icon_broken = "secureengbroken"
|
||||
icon_off = "secureengoff"
|
||||
icon_state = "secureatm1"
|
||||
icon_closed = "secureatm"
|
||||
icon_locked = "secureatm1"
|
||||
icon_opened = "secureatmopen"
|
||||
icon_broken = "secureatmbroken"
|
||||
icon_off = "secureatmoff"
|
||||
|
||||
|
||||
New()
|
||||
|
||||
@@ -341,6 +341,7 @@
|
||||
new /obj/item/clothing/accessory/holster/armpit(src)
|
||||
new /obj/item/clothing/glasses/sunglasses/yeah(src)
|
||||
new /obj/item/device/flashlight/seclite(src)
|
||||
new /obj/item/clothing/accessory/black(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/detective/update_icon()
|
||||
if(broken)
|
||||
|
||||
@@ -168,8 +168,8 @@
|
||||
|
||||
/obj/structure/closet/wardrobe/atmospherics_yellow
|
||||
name = "atmospherics wardrobe"
|
||||
icon_state = "yellow"
|
||||
icon_closed = "yellow"
|
||||
icon_state = "atmostech"
|
||||
icon_closed = "atmostech"
|
||||
|
||||
/obj/structure/closet/wardrobe/atmospherics_yellow/New()
|
||||
..()
|
||||
@@ -193,8 +193,8 @@
|
||||
|
||||
/obj/structure/closet/wardrobe/engineering_yellow
|
||||
name = "engineering wardrobe"
|
||||
icon_state = "yellow"
|
||||
icon_closed = "yellow"
|
||||
icon_state = "engineer"
|
||||
icon_closed = "engineer"
|
||||
|
||||
/obj/structure/closet/wardrobe/engineering_yellow/New()
|
||||
..()
|
||||
|
||||
@@ -77,13 +77,10 @@
|
||||
s.start()
|
||||
visible_message("<span class='danger'>The electric chair went off!</span>", "<span class='danger'>You hear a deep sharp shock!</span>")
|
||||
if(buckled_mob)
|
||||
buckled_mob.burn_skin(90)
|
||||
buckled_mob.electrocute_act(110, src, 1)
|
||||
to_chat(buckled_mob, "<span class='danger'>You feel a deep shock course through your body!</span>")
|
||||
sleep(1)
|
||||
buckled_mob.burn_skin(90)
|
||||
sleep(5)
|
||||
buckled_mob.burn_skin(max(rand(5,20),rand(5,20),rand(5,20)))
|
||||
|
||||
spawn(1)
|
||||
buckled_mob.electrocute_act(110, src, 1)
|
||||
A.power_light = light
|
||||
A.updateicon()
|
||||
return
|
||||
|
||||
@@ -361,6 +361,8 @@
|
||||
user.attack_log +="\[[time_stamp()]\] <font color='red'>Cremated [M.name] ([M.ckey])</font>"
|
||||
log_attack("[user.name] ([user.ckey]) cremated [M.name] ([M.ckey])")
|
||||
M.death(1)
|
||||
if(!M || !isnull(M.gcDestroyed))
|
||||
continue // Re-check for mobs that delete themselves on death
|
||||
M.ghostize()
|
||||
qdel(M)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user