mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 23:17:02 +01:00
Merge pull request #1256 from Krausus/MonkeyProblems-201506050026
Fixes Monkey Issues (Changelings, HUD, thinking they're people)
This commit is contained in:
@@ -175,7 +175,7 @@ datum/hud/New(mob/owner)
|
||||
var/ui_alpha = mymob.client.prefs.UI_style_alpha
|
||||
|
||||
if(issmall(mymob))
|
||||
monkey_hud(ui_style)
|
||||
monkey_hud(ui_style, ui_color, ui_alpha)
|
||||
else if(ishuman(mymob))
|
||||
human_hud(ui_style, ui_color, ui_alpha) // Pass the player the UI style chosen in preferences
|
||||
else if(isbrain(mymob))
|
||||
|
||||
+77
-23
@@ -1,7 +1,8 @@
|
||||
/datum/hud/proc/monkey_hud(var/ui_style='icons/mob/screen1_old.dmi')
|
||||
/datum/hud/proc/monkey_hud(var/ui_style='icons/mob/screen1_White.dmi', var/ui_color = "#ffffff", var/ui_alpha = 255)
|
||||
|
||||
src.adding = list()
|
||||
src.other = list()
|
||||
src.hotkeybuttons = list() //These can be disabled for hotkey usersx
|
||||
|
||||
var/obj/screen/using
|
||||
var/obj/screen/inventory/inv_box
|
||||
@@ -10,8 +11,10 @@
|
||||
using.name = "act_intent"
|
||||
using.dir = SOUTHWEST
|
||||
using.icon = ui_style
|
||||
using.icon_state = (mymob.a_intent == "harm" ? "harm" : mymob.a_intent)
|
||||
using.icon_state = "intent_"+mymob.a_intent
|
||||
using.screen_loc = ui_acti
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 20
|
||||
src.adding += using
|
||||
action_intent = using
|
||||
@@ -26,6 +29,7 @@
|
||||
using.name = "help"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
help_intent = using
|
||||
@@ -37,6 +41,7 @@
|
||||
using.name = "disarm"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
disarm_intent = using
|
||||
@@ -48,6 +53,7 @@
|
||||
using.name = "grab"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
grab_intent = using
|
||||
@@ -59,6 +65,7 @@
|
||||
using.name = "harm"
|
||||
using.icon = ico
|
||||
using.screen_loc = ui_acti
|
||||
using.alpha = ui_alpha
|
||||
using.layer = 21
|
||||
src.adding += using
|
||||
hurt_intent = using
|
||||
@@ -72,6 +79,8 @@
|
||||
using.icon_state = (mymob.m_intent == "run" ? "running" : "walking")
|
||||
using.screen_loc = ui_movi
|
||||
using.layer = 20
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
src.adding += using
|
||||
move_intent = using
|
||||
|
||||
@@ -81,6 +90,8 @@
|
||||
using.icon_state = "act_drop"
|
||||
using.screen_loc = ui_drop_throw
|
||||
using.layer = 19
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
src.adding += using
|
||||
|
||||
inv_box = new /obj/screen/inventory()
|
||||
@@ -93,6 +104,8 @@
|
||||
inv_box.screen_loc = ui_rhand
|
||||
inv_box.slot_id = slot_r_hand
|
||||
inv_box.layer = 19
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
src.r_hand_hud_object = inv_box
|
||||
src.adding += inv_box
|
||||
|
||||
@@ -106,25 +119,31 @@
|
||||
inv_box.screen_loc = ui_lhand
|
||||
inv_box.slot_id = slot_l_hand
|
||||
inv_box.layer = 19
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
src.l_hand_hud_object = inv_box
|
||||
src.adding += inv_box
|
||||
|
||||
using = new /obj/screen()
|
||||
using = new /obj/screen/inventory()
|
||||
using.name = "hand"
|
||||
using.dir = SOUTH
|
||||
using.icon = ui_style
|
||||
using.icon_state = "hand1"
|
||||
using.screen_loc = ui_swaphand1
|
||||
using.layer = 19
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
src.adding += using
|
||||
|
||||
using = new /obj/screen()
|
||||
using = new /obj/screen/inventory()
|
||||
using.name = "hand"
|
||||
using.dir = SOUTH
|
||||
using.icon = ui_style
|
||||
using.icon_state = "hand2"
|
||||
using.screen_loc = ui_swaphand2
|
||||
using.layer = 19
|
||||
using.color = ui_color
|
||||
using.alpha = ui_alpha
|
||||
src.adding += using
|
||||
|
||||
inv_box = new /obj/screen/inventory()
|
||||
@@ -135,6 +154,8 @@
|
||||
inv_box.screen_loc = ui_monkey_mask
|
||||
inv_box.slot_id = slot_wear_mask
|
||||
inv_box.layer = 19
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
src.adding += inv_box
|
||||
|
||||
inv_box = new /obj/screen/inventory()
|
||||
@@ -145,6 +166,8 @@
|
||||
inv_box.screen_loc = ui_back
|
||||
inv_box.slot_id = slot_back
|
||||
inv_box.layer = 19
|
||||
inv_box.color = ui_color
|
||||
inv_box.alpha = ui_alpha
|
||||
src.adding += inv_box
|
||||
|
||||
mymob.throw_icon = new /obj/screen()
|
||||
@@ -152,6 +175,9 @@
|
||||
mymob.throw_icon.icon_state = "act_throw_off"
|
||||
mymob.throw_icon.name = "throw"
|
||||
mymob.throw_icon.screen_loc = ui_drop_throw
|
||||
mymob.throw_icon.color = ui_color
|
||||
mymob.throw_icon.alpha = ui_alpha
|
||||
src.hotkeybuttons += mymob.throw_icon
|
||||
|
||||
mymob.oxygen = new /obj/screen()
|
||||
mymob.oxygen.icon = ui_style
|
||||
@@ -195,54 +221,82 @@
|
||||
mymob.healths.name = "health"
|
||||
mymob.healths.screen_loc = ui_health
|
||||
|
||||
mymob.healthdoll = new /obj/screen()
|
||||
mymob.healthdoll.icon = ui_style
|
||||
mymob.healthdoll.icon_state = "healthdoll_DEAD"
|
||||
mymob.healthdoll.name = "health doll"
|
||||
mymob.healthdoll.screen_loc = ui_healthdoll
|
||||
|
||||
mymob.nutrition_icon = new /obj/screen()
|
||||
mymob.nutrition_icon.icon = ui_style
|
||||
mymob.nutrition_icon.icon_state = "nutrition0"
|
||||
mymob.nutrition_icon.name = "nutrition"
|
||||
mymob.nutrition_icon.screen_loc = ui_nutrition
|
||||
|
||||
mymob.pullin = new /obj/screen()
|
||||
mymob.pullin.icon = ui_style
|
||||
mymob.pullin.icon_state = "pull0"
|
||||
mymob.pullin.name = "pull"
|
||||
mymob.pullin.screen_loc = ui_pull_resist
|
||||
src.hotkeybuttons += mymob.pullin
|
||||
|
||||
mymob.blind = new /obj/screen()
|
||||
mymob.blind.icon = 'icons/mob/screen1_full.dmi'
|
||||
mymob.blind.icon_state = "blackimageoverlay"
|
||||
mymob.blind.name = " "
|
||||
mymob.blind.name = "blind"
|
||||
mymob.blind.screen_loc = "1,1"
|
||||
mymob.blind.mouse_opacity = 0
|
||||
mymob.blind.layer = 0
|
||||
|
||||
mymob.damageoverlay = new /obj/screen()
|
||||
mymob.damageoverlay.icon = 'icons/mob/screen1_full.dmi'
|
||||
mymob.damageoverlay.icon_state = "oxydamageoverlay0"
|
||||
mymob.damageoverlay.name = "dmg"
|
||||
mymob.damageoverlay.screen_loc = "1,1"
|
||||
mymob.damageoverlay.mouse_opacity = 0
|
||||
mymob.damageoverlay.layer = 18.1 //The black screen overlay sets layer to 18 to display it, this one has to be just on top.
|
||||
|
||||
mymob.flash = new /obj/screen()
|
||||
mymob.flash.icon = ui_style
|
||||
mymob.flash.icon_state = "blank"
|
||||
mymob.flash.name = "flash"
|
||||
mymob.flash.screen_loc = "1,1 to 15,15"
|
||||
mymob.flash.screen_loc = "1,1 to 17,17"
|
||||
mymob.flash.layer = 17
|
||||
|
||||
mymob.zone_sel = new /obj/screen/zone_sel()
|
||||
mymob.pain = new /obj/screen( null )
|
||||
|
||||
mymob.zone_sel = new /obj/screen/zone_sel( null )
|
||||
mymob.zone_sel.icon = ui_style
|
||||
mymob.zone_sel.color = ui_color
|
||||
mymob.zone_sel.alpha = ui_alpha
|
||||
mymob.zone_sel.overlays.Cut()
|
||||
mymob.zone_sel.overlays += image('icons/mob/zone_sel.dmi', "[mymob.zone_sel.selecting]")
|
||||
|
||||
//Handle the gun settings buttons
|
||||
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
|
||||
//mymob.gun_setting_icon.color = ui_color
|
||||
mymob.gun_setting_icon.alpha = ui_alpha
|
||||
|
||||
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
||||
//mymob.item_use_icon.color = ui_color
|
||||
mymob.item_use_icon.alpha = ui_alpha
|
||||
|
||||
/*mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
||||
//mymob.gun_move_icon.color = ui_color
|
||||
mymob.gun_move_icon.alpha = ui_alpha
|
||||
|
||||
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
||||
//mymob.gun_run_icon.color = ui_color
|
||||
mymob.gun_run_icon.alpha = ui_alpha*/
|
||||
|
||||
if (mymob.client)
|
||||
if (mymob.client.gun_mode) // If in aim mode, correct the sprite
|
||||
mymob.gun_setting_icon.dir = 2
|
||||
for(var/obj/item/weapon/gun/G in mymob) // If targeting someone, display other buttons
|
||||
if (G.target)
|
||||
mymob.item_use_icon = new /obj/screen/gun/item(null)
|
||||
if (mymob.client.target_can_click)
|
||||
mymob.item_use_icon.dir = 1
|
||||
src.adding += mymob.item_use_icon
|
||||
/*mymob.gun_move_icon = new /obj/screen/gun/move(null)
|
||||
if (mymob.client.target_can_move)
|
||||
mymob.gun_move_icon.dir = 1
|
||||
mymob.gun_run_icon = new /obj/screen/gun/run(null)
|
||||
if (mymob.client.target_can_run)
|
||||
mymob.gun_run_icon.dir = 1
|
||||
src.adding += mymob.gun_run_icon
|
||||
src.adding += mymob.gun_move_icon*/
|
||||
|
||||
|
||||
mymob.client.screen = null
|
||||
|
||||
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
|
||||
mymob.client.screen += src.adding + src.other
|
||||
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.healthdoll, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.damageoverlay, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep) //, mymob.mach )
|
||||
mymob.client.screen += src.adding + src.hotkeybuttons
|
||||
|
||||
return
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
if(issmall(H)) // Already a monkey
|
||||
return
|
||||
for(var/obj/item/W in H)
|
||||
if (W==H.w_uniform) // will be torn
|
||||
continue
|
||||
if(istype(W,/obj/item/organ))
|
||||
continue
|
||||
H.unEquip(W)
|
||||
@@ -43,9 +41,9 @@
|
||||
H.set_species(H.species.primitive_form)
|
||||
|
||||
if(H.hud_used)
|
||||
H.hud_used.monkey_hud()
|
||||
H.hud_used.instantiate()
|
||||
|
||||
H << "<B>You are now [H.species.name]. </B>"
|
||||
H << "<B>You are now a [H.species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return H
|
||||
@@ -81,12 +79,12 @@
|
||||
H.gib()
|
||||
return
|
||||
|
||||
if(H.hud_used)
|
||||
H.hud_used.human_hud()
|
||||
|
||||
H.set_species(H.species.greater_form)
|
||||
|
||||
H << "<B>You are now [H.species.name]. </B>"
|
||||
if(H.hud_used)
|
||||
H.hud_used.instantiate()
|
||||
|
||||
H << "<B>You are now a [H.species.name]. </B>"
|
||||
qdel(animation)
|
||||
|
||||
return H
|
||||
@@ -288,7 +288,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/T = target
|
||||
if(!istype(T))
|
||||
if(!istype(T) || issmall(T))
|
||||
user << "<span class='warning'>[T] is not compatible with our biology.</span>"
|
||||
return
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
/obj/effect/proc_holder/changeling/proc/can_sting(var/mob/user, var/mob/target)
|
||||
if(!ishuman(user)) //typecast everything from mob to carbon from this point onwards
|
||||
return 0
|
||||
if(req_human && !ishuman(user))
|
||||
if(req_human && (!ishuman(user) || issmall(user)))
|
||||
user << "<span class='warning'>We cannot do that in this form!</span>"
|
||||
return 0
|
||||
var/datum/changeling/c = user.mind.changeling
|
||||
|
||||
@@ -336,7 +336,7 @@ var/list/sting_paths
|
||||
|
||||
//Reselect powers
|
||||
/datum/changeling/proc/lingRespec(var/mob/user)
|
||||
if(!ishuman(user))
|
||||
if(!ishuman(user) || issmall(user))
|
||||
user << "<span class='danger'>We can't remove our evolutions in this form!</span>"
|
||||
return
|
||||
if(canrespec)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
//Transform into a human.
|
||||
/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/user)
|
||||
/obj/effect/proc_holder/changeling/humanform/sting_action(var/mob/living/carbon/human/user)
|
||||
var/datum/changeling/changeling = user.mind.changeling
|
||||
var/list/names = list()
|
||||
for(var/datum/dna/DNA in (changeling.absorbed_dna+changeling.protected_dna))
|
||||
@@ -24,51 +24,18 @@
|
||||
if(!user)
|
||||
return 0
|
||||
user << "<span class='notice'>We transform our appearance.</span>"
|
||||
user.dna.SetSEState(MONKEYBLOCK,0)
|
||||
domutcheck(user, null) // Do a pre-mutcheck to cleanly switch from monkey form.
|
||||
user.dna = chosen_dna
|
||||
user.real_name = chosen_dna.real_name
|
||||
user.flavor_text = ""
|
||||
if(ishuman(user))
|
||||
user.set_species()
|
||||
user.UpdateAppearance()
|
||||
domutcheck(user, null)
|
||||
|
||||
var/list/implants = list()
|
||||
for (var/obj/item/weapon/implant/I in user) //Still preserving implants
|
||||
implants += I
|
||||
|
||||
for(var/obj/item/W in src)
|
||||
user.unEquip(W)
|
||||
if (user.client)
|
||||
user.client.screen -= W
|
||||
if (W)
|
||||
W.loc = user.loc
|
||||
W.dropped(user)
|
||||
W.layer = initial(W.layer)
|
||||
|
||||
var/mob/living/carbon/human/O = new /mob/living/carbon/human( user, delay_ready_dna=1 )
|
||||
if (user.dna.GetUIState(DNA_UI_GENDER))
|
||||
O.gender = FEMALE
|
||||
else
|
||||
O.gender = MALE
|
||||
O.dna = user.dna.Clone()
|
||||
user.dna = null
|
||||
O.real_name = chosen_dna.real_name
|
||||
O.set_species()
|
||||
for(var/obj/T in user)
|
||||
del(T)
|
||||
|
||||
O.loc = user.loc
|
||||
|
||||
O.UpdateAppearance()
|
||||
domutcheck(O, null)
|
||||
O.setToxLoss(user.getToxLoss())
|
||||
O.adjustBruteLoss(user.getBruteLoss())
|
||||
O.setOxyLoss(user.getOxyLoss())
|
||||
O.adjustFireLoss(user.getFireLoss())
|
||||
O.stat = user.stat
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
|
||||
user.mind.transfer_to(O)
|
||||
O.changeling_update_languages(changeling.absorbed_languages)
|
||||
O.mind.changeling.purchasedpowers -= src
|
||||
changeling.purchasedpowers -= src
|
||||
//O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/lesserform(null)
|
||||
feedback_add_details("changeling_powers","LFT")
|
||||
qdel(user)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
if(user.has_brain_worms())
|
||||
user << "<span class='warning'>We cannot perform this ability at the present time!</span>"
|
||||
return
|
||||
user << "<span class='warning'>Our genes cry out!</span>"
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -29,5 +28,6 @@
|
||||
for(var/obj/item/weapon/implant/W in H)
|
||||
implants += W
|
||||
H.monkeyize()
|
||||
changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null)
|
||||
feedback_add_details("changeling_powers","LF")
|
||||
return 1
|
||||
@@ -295,7 +295,45 @@
|
||||
/obj/item/proc/mob_can_equip(M as mob, slot, disable_warning = 0)
|
||||
if(!slot) return 0
|
||||
if(!M) return 0
|
||||
if(issmall(M))
|
||||
//START MONKEY
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
switch(slot)
|
||||
if(slot_l_hand)
|
||||
if(H.l_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_r_hand)
|
||||
if(H.r_hand)
|
||||
return 0
|
||||
return 1
|
||||
if(slot_wear_mask)
|
||||
if(H.wear_mask)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_MASK) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_back)
|
||||
if(H.back)
|
||||
return 0
|
||||
if( !(slot_flags & SLOT_BACK) )
|
||||
return 0
|
||||
return 1
|
||||
if(slot_handcuffed)
|
||||
if(H.handcuffed)
|
||||
return 0
|
||||
if(!istype(src, /obj/item/weapon/restraints/handcuffs))
|
||||
return 0
|
||||
return 1
|
||||
if(slot_in_backpack)
|
||||
if (H.back && istype(H.back, /obj/item/weapon/storage/backpack))
|
||||
var/obj/item/weapon/storage/backpack/B = H.back
|
||||
if(B.contents.len < B.storage_slots && w_class <= B.max_w_class)
|
||||
return 1
|
||||
return 0
|
||||
return 0 //Unsupported slot
|
||||
//END MONKEY
|
||||
if(ishuman(M))
|
||||
//START HUMAN
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
Reference in New Issue
Block a user