Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into turfs

# Conflicts:
#	icons/obj/vending.dmi
#	paradise.dme
This commit is contained in:
Mark van Alphen
2019-05-30 19:35:52 +02:00
90 changed files with 1054 additions and 1961 deletions
@@ -18,7 +18,6 @@ var/list/sting_paths
var/dat = create_menu(changeling)
usr << browse(dat, "window=powers;size=600x700")//900x480
/datum/action/changeling/evolution_menu/proc/create_menu(var/datum/changeling/changeling)
var/dat
dat +="<html><head><title>Changeling Evolution Menu</title></head>"
@@ -298,12 +297,10 @@ var/list/sting_paths
/////
/datum/changeling/proc/purchasePower(var/mob/living/carbon/user, var/sting_name)
var/datum/action/changeling/thepower = null
var/list/all_powers = init_subtypes(/datum/action/changeling)
if(!sting_paths)
sting_paths = init_subtypes(/datum/action/changeling)
for(var/datum/action/changeling/cling_sting in sting_paths)
for(var/datum/action/changeling/cling_sting in all_powers)
if(cling_sting.name == sting_name)
thepower = cling_sting
@@ -344,21 +341,19 @@ var/list/sting_paths
to_chat(user, "<span class='notice'>We have removed our evolutions from this form, and are now ready to readapt.</span>")
user.remove_changeling_powers(1)
canrespec = 0
user.make_changeling()
user.make_changeling(FALSE)
return 1
else
to_chat(user, "<span class='danger'>You lack the power to readapt your evolutions!</span>")
return 0
/mob/proc/make_changeling()
/mob/proc/make_changeling(var/get_free_powers = TRUE)
if(!mind)
return
if(!ishuman(src))
return
if(!mind.changeling)
mind.changeling = new /datum/changeling(gender)
if(!sting_paths)
sting_paths = init_subtypes(/datum/action/changeling)
if(mind.changeling.purchasedpowers)
remove_changeling_powers(1)
@@ -367,13 +362,23 @@ var/list/sting_paths
for(var/language in languages)
mind.changeling.absorbed_languages |= language
// purchase free powers.
for(var/datum/action/changeling/path in sting_paths)
//var/datum/action/changeling/S = new path()
if(!path.dna_cost)
if(!mind.changeling.has_sting(path))
mind.changeling.purchasedpowers += path
path.on_purchase(src)
if(get_free_powers)
var/list/all_powers = init_subtypes(/datum/action/changeling)
for(var/datum/action/changeling/path in all_powers) // purchase free powers.
if(!path.dna_cost)
if(!mind.changeling.has_sting(path))
mind.changeling.purchasedpowers += path
path.on_purchase(src)
else //for respec
var/datum/action/changeling/hivemind_upload/S1 = new
if(!mind.changeling.has_sting(S1))
mind.changeling.purchasedpowers+=S1
S1.Grant(src)
var/datum/action/changeling/hivemind_download/S2 = new
if(!mind.changeling.has_sting(S2))
mind.changeling.purchasedpowers+=S2
S2.Grant(src)
var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste
mind.changeling.absorbed_dna |= C.dna.Clone()
@@ -473,7 +473,6 @@
flags_inv = HIDEJUMPSUIT
cold_protection = 0
heat_protection = 0
species_fit = null
sprite_sheets = null
/obj/item/clothing/suit/armor/changeling/New()
@@ -23,7 +23,6 @@
var/datum/icon_snapshot/disguise
var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15)
var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50)
species_fit = null
sprite_sheets = null
/obj/item/clothing/suit/armor/abductor/vest/proc/toggle_nodrop()
+1 -1
View File
@@ -738,7 +738,7 @@
break
if(!throw_item)
return
throw_item.throw_at(target, 16, 3, src)
throw_item.throw_at(target, 16, 3)
visible_message("<span class='danger'>[src] launches [throw_item.name] at [target.name]!</span>")
/obj/machinery/vending/onTransitZ()
+26 -2
View File
@@ -89,7 +89,6 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
var/list/sprite_sheets = null
var/icon_override = null //Used to override hardcoded clothing dmis in human clothing proc.
var/sprite_sheets_obj = null //Used to override hardcoded clothing inventory object dmis in human clothing proc.
var/list/species_fit = null //This object has a different appearance when worn by these species
var/trip_verb = TV_TRIP
var/trip_chance = 0
@@ -605,4 +604,29 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
if(!ismob(loc))
return
var/mob/owner = loc
owner.regenerate_icons()
var/flags = slot_flags
if(flags & SLOT_OCLOTHING)
owner.update_inv_wear_suit()
if(flags & SLOT_ICLOTHING)
owner.update_inv_w_uniform()
if(flags & SLOT_GLOVES)
owner.update_inv_gloves()
if(flags & SLOT_EYES)
owner.update_inv_glasses()
if(flags & SLOT_EARS)
owner.update_inv_ears()
if(flags & SLOT_MASK)
owner.update_inv_wear_mask()
if(flags & SLOT_HEAD)
owner.update_inv_head()
if(flags & SLOT_FEET)
owner.update_inv_shoes()
if(flags & SLOT_ID)
owner.update_inv_wear_id()
if(flags & SLOT_BELT)
owner.update_inv_belt()
if(flags & SLOT_BACK)
owner.update_inv_back()
if(flags & SLOT_PDA)
owner.update_inv_wear_pda()
@@ -31,31 +31,9 @@
if(..())
return
R.notify_ai(2)
R.reset_module()
R.uneq_all()
R.sight_mode = null
R.hands.icon_state = "nomod"
R.icon_state = "robot"
R.module.remove_subsystems_and_actions(R)
QDEL_NULL(R.module)
R.camera.network.Remove(list("Engineering", "Medical", "Mining Outpost"))
R.rename_character(R.real_name, R.get_default_name("Default"))
R.languages = list()
R.speech_synthesizer_langs = list()
R.update_icons()
R.update_headlamp()
R.speed = 0 // Remove upgrades.
R.ionpulse = 0
R.magpulse = 0
R.add_language("Robot Talk", 1)
R.status_flags |= CANPUSH
return 1
return TRUE
/obj/item/borg/upgrade/rename
name = "cyborg reclassification board"
-1
View File
@@ -31,7 +31,6 @@ LIGHTERS ARE IN LIGHTERS.DM
var/lastHolder = null
var/smoketime = 300
var/chem_volume = 30
species_fit = list("Vox", "Unathi", "Tajaran", "Vulpkanin", "Grey")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/mask.dmi',
"Unathi" = 'icons/mob/species/unathi/mask.dmi',
-1
View File
@@ -11,7 +11,6 @@
w_class = WEIGHT_CLASS_BULKY
origin_tech = "biotech=4"
actions_types = list(/datum/action/item_action/toggle_paddles)
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/back.dmi'
)
@@ -24,6 +24,10 @@
if(!istype(C))
return
if(flags & NODROP)
to_chat(user, "<span class='warning'>[src] is stuck to your hand!</span>")
return
if((CLUMSY in user.mutations) && prob(50) && (!ignoresClumsy))
to_chat(user, "<span class='warning'>Uh... how do those things work?!</span>")
apply_cuffs(user, user)
@@ -17,7 +17,6 @@
storage_slots = 21
burn_state = FLAMMABLE
burntime = 20
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/back.dmi'
)
@@ -1,112 +1,120 @@
/obj/item/storage/box/syndicate/
New()
..()
switch(pickweight(list("bloodyspai" = 1, "thief" = 1, "bond" = 1, "sabotage" = 1, "payday" = 1, "implant" = 1, "hacker" = 1, "darklord" = 1, "gadgets" = 1, "professional" = 1)))
if("bloodyspai") // 28TC
new /obj/item/twohanded/garrote(src)
new /obj/item/pinpointer/advpinpointer(src)
new /obj/item/clothing/mask/chameleon(src)
new /obj/item/clothing/under/chameleon(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/flashlight/emp(src)
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src)
new /obj/item/clothing/glasses/hud/security/chameleon(src)
new /obj/item/camera_bug(src)
return
/obj/item/storage/box/syndicate/New()
..()
switch(pickweight(list("bloodyspai" = 1, "thief" = 1, "bond" = 1, "sabotage" = 1, "payday" = 1, "implant" = 1, "hacker" = 1, "darklord" = 1, "professional" = 1)))
if("bloodyspai") // 35TC + one 0TC
new /obj/item/clothing/under/chameleon(src) // 2TC
new /obj/item/clothing/mask/chameleon(src) // 0TC
new /obj/item/card/id/syndicate(src) // 2TC
new /obj/item/clothing/shoes/chameleon/noslip(src) // 2TC
new /obj/item/camera_bug(src) // 1TC
new /obj/item/multitool/ai_detect(src) // 1TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
new /obj/item/twohanded/garrote(src) // 10TC
new /obj/item/pinpointer/advpinpointer(src) // 4TC
new /obj/item/storage/fancy/cigarettes/cigpack_syndicate(src) // 2TC
new /obj/item/flashlight/emp(src) // 2TC
new /obj/item/clothing/glasses/hud/security/chameleon(src) // 2TC
new /obj/item/chameleon(src) // 8TC
return
if("thief") // 30TC
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src)
new /obj/item/chameleon(src)
new /obj/item/clothing/gloves/color/black/thief(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/shoes/chameleon/noslip(src)
new /obj/item/storage/box/syndie_kit/safecracking(src)
return
if("thief") // 40TC
new /obj/item/gun/energy/kinetic_accelerator/crossbow(src) // 12TC
new /obj/item/chameleon(src) // 8TC
new /obj/item/clothing/glasses/thermal/syndi(src) // 6TC
new /obj/item/clothing/gloves/color/black/thief(src) // 6TC
new /obj/item/card/id/syndicate(src) // 2TC
new /obj/item/clothing/shoes/chameleon/noslip(src) // 2TC
new /obj/item/storage/backpack/satchel_flat(src) // 2TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
if("bond") // 29TC + Healing Cocktail + armored suit jacket
new /obj/item/gun/projectile/automatic/pistol(src)
new /obj/item/suppressor(src)
new /obj/item/ammo_box/magazine/m10mm/hp(src)
new /obj/item/ammo_box/magazine/m10mm/ap(src)
new /obj/item/encryptionkey/syndicate(src)
new /obj/item/reagent_containers/food/drinks/drinkingglass/alliescocktail(src) // This drink heals now
new /obj/item/card/id/syndicate(src)
new /obj/item/dnascrambler(src)
new /obj/item/storage/box/syndie_kit/emp(src)
new /obj/item/CQC_manual(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src)
return
if("bond") // 33TC + three 0TC
new /obj/item/gun/projectile/automatic/pistol(src) // 4TC
new /obj/item/suppressor(src) // 1TC
new /obj/item/ammo_box/magazine/m10mm/hp(src) // 3TC
new /obj/item/ammo_box/magazine/m10mm/ap(src) // 2TC
new /obj/item/clothing/under/suit_jacket/really_black(src) // 0TC
new /obj/item/card/id/syndicate(src) // 2TC
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src) // 0TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
new /obj/item/reagent_containers/food/drinks/drinkingglass/alliescocktail(src) // 0TC
new /obj/item/dnascrambler(src) // 4TC
new /obj/item/storage/box/syndie_kit/emp(src) // 2TC
new /obj/item/CQC_manual(src) // 13TC
return
if("sabotage") // 31TC + RCD + Insuls
new /obj/item/powersink(src)
new /obj/item/grenade/syndieminibomb(src)
new /obj/item/card/emag(src)
new /obj/item/grenade/clusterbuster/n2o(src)
new /obj/item/clothing/gloves/color/yellow(src)
new /obj/item/rcd/preloaded(src)
new /obj/item/storage/box/syndie_kit/space(src)
return
if("sabotage") // 47TC + three 0TC
new /obj/item/grenade/plastic/c4(src) // 1TC
new /obj/item/grenade/plastic/c4(src) // 1TC
new /obj/item/camera_bug(src) // 1TC
new /obj/item/powersink(src) // 10TC
new /obj/item/cartridge/syndicate(src) // 6TC
new /obj/item/rcd/preloaded(src) // 0TC
new /obj/item/card/emag(src) // 6TC
new /obj/item/clothing/gloves/color/yellow(src) // 0TC
new /obj/item/grenade/syndieminibomb(src) // 6TC
new /obj/item/grenade/clusterbuster/n2o(src) // 0TC
new /obj/item/storage/box/syndie_kit/space(src) // 4TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
if("payday") // 31TC + armored suit jacket
new /obj/item/gun/projectile/revolver(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/ammo_box/a357(src)
new /obj/item/card/emag(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src)
new /obj/item/clothing/gloves/color/latex/nitrile(src)
new /obj/item/clothing/mask/gas/clown_hat(src)
new /obj/item/thermal_drill(src)
return
if("payday") // 33TC + four 0TC
new /obj/item/gun/projectile/revolver(src) // 13TC
new /obj/item/ammo_box/a357(src) // 3TC
new /obj/item/ammo_box/a357(src) // 3TC
new /obj/item/card/emag(src) // 6TC
new /obj/item/grenade/plastic/c4(src) // 1TC
new /obj/item/card/id/syndicate(src) // 2TC
new /obj/item/clothing/under/suit_jacket/really_black(src) //0TC
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src) //0TC
new /obj/item/clothing/gloves/color/latex/nitrile(src) //0 TC
new /obj/item/clothing/mask/gas/clown_hat(src) // 0TC
new /obj/item/thermal_drill(src) // 3TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
if("implant") // 35TC
new /obj/item/implanter/uplink(src)
new /obj/item/implanter/adrenalin(src)
new /obj/item/implanter/storage(src)
new /obj/item/implanter/freedom(src)
return
if("implant") // 39TC + ten free TC
new /obj/item/implanter/freedom(src) // 5TC
new /obj/item/implanter/uplink(src) // 14TC (ten free TC)
new /obj/item/implanter/emp(src) // 0TC
new /obj/item/implanter/adrenalin(src) // 8TC
new /obj/item/implanter/explosive(src) // 2TC
new /obj/item/implanter/storage(src) // 8TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
if("hacker") // 22TC + Ion law uploader
new /obj/item/aiModule/syndicate(src)
new /obj/item/encryptionkey/binary(src)
new /obj/item/encryptionkey/syndicate(src)
new /obj/item/aiModule/toyAI(src)
new /obj/item/card/emag(src)
return
if("hacker") // 30TC + one 0TC
new /obj/item/aiModule/syndicate(src) // 12TC
new /obj/item/card/emag(src) // 6TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
new /obj/item/encryptionkey/binary(src) // 5TC
new /obj/item/aiModule/toyAI(src) // 0TC
new /obj/item/multitool/ai_detect(src) // 1TC
new /obj/item/storage/box/syndie_kit/c4 // 4TC
return
if("darklord") // 23TC + TK implant
new /obj/item/melee/energy/sword/saber/red(src)
new /obj/item/melee/energy/sword/saber/red(src)
new /obj/item/dnainjector/telemut/darkbundle(src)
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src)
new /obj/item/card/id/syndicate(src)
new /obj/item/clothing/shoes/chameleon/noslip(src)
new /obj/item/clothing/mask/chameleon(src)
return
if("darklord") // 22TC + two 0TC
new /obj/item/melee/energy/sword/saber/red(src) // 8TC
new /obj/item/melee/energy/sword/saber/red(src) // 8TC
new /obj/item/dnainjector/telemut/darkbundle(src) // 0TC
new /obj/item/clothing/suit/hooded/chaplain_hoodie(src) // 0TC
new /obj/item/card/id/syndicate(src) // 2TC
new /obj/item/clothing/shoes/chameleon/noslip(src) // 2TC
new /obj/item/clothing/mask/chameleon(src) // 2TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
if("gadgets") // 30TC
new /obj/item/clothing/gloves/color/yellow/power(src)
new /obj/item/pen/sleepy(src)
new /obj/item/clothing/shoes/chameleon/noslip(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/flashlight/emp(src)
new /obj/item/stamp/chameleon(src)
new /obj/item/multitool/ai_detect(src)
return
if("professional") // 29TC + armored suit jacket + insulated combat gloves
new /obj/item/gun/projectile/automatic/sniper_rifle/soporific(src) // Unique version that starts with soporific rounds loaded and cannot be suppressed
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/pen/edagger(src)
new /obj/item/clothing/glasses/thermal/syndi/sunglasses(src)
new /obj/item/clothing/under/suit_jacket/really_black(src)
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src)
new /obj/item/clothing/gloves/combat(src)
return
if("professional") // 32 TC + two 0TC
new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate/penetrator(src) // 16TC
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src) // 5TC
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src) // 3TC
new /obj/item/clothing/glasses/thermal/syndi/sunglasses(src) // 6TC
new /obj/item/clothing/gloves/combat(src) // 0 TC
new /obj/item/clothing/under/suit_jacket/really_black(src) // 0 TC
new /obj/item/clothing/suit/storage/lawyer/blackjacket/armored(src) // 0TC
new /obj/item/pen/edagger(src) // 2TC
new /obj/item/encryptionkey/syndicate(src) // 2TC
return
/obj/item/storage/box/syndie_kit
name = "Box"
+5
View File
@@ -258,3 +258,8 @@
/turf/space/proc/remove_transitions()
destination_z = initial(destination_z)
/turf/space/attack_ghost(mob/dead/observer/user)
if(destination_z)
var/turf/T = locate(destination_x, destination_y, destination_z)
user.forceMove(T)
-5
View File
@@ -30,10 +30,6 @@ var/global/list/map_transition_config = MAP_TRANSITION_CONFIG
Master.Initialize(10, FALSE)
processScheduler = new
spawn(1)
processScheduler.setup()
#undef RECOMMENDED_VERSION
@@ -306,7 +302,6 @@ var/world_topic_spam_protect_time = world.timeofday
log_game("<span class='boldannounce'>Rebooting world. [reason]</span>")
//kick_clients_in_lobby("<span class='boldannounce'>The round came to an end with you in the lobby.</span>", 1)
processScheduler.stop()
Master.Shutdown() //run SS shutdowns
shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss.